.TH "globus_time.h" 3 "Tue Jul 5 2022" "Version 18.13" "globus_common" \" -*- nroff -*-
.ad l
.nh
.SH NAME
globus_time.h \- Time Types and Macros\&.  

.SH SYNOPSIS
.br
.PP
\fC#include 'globus_types\&.h'\fP
.br
\fC#include <time\&.h>\fP
.br

.SS "Macros"

.in +1c
.ti -1c
.RI "#define \fBGlobusTimeAbstimeSet\fP(Abstime,  Sec,  USec)"
.br
.ti -1c
.RI "#define \fBGlobusTimeAbstimeGet\fP(Abstime,  Sec,  USec)"
.br
.ti -1c
.RI "#define \fBGlobusTimeReltimeSet\fP(Reltime,  Sec,  USec)"
.br
.ti -1c
.RI "#define \fBGlobusTimeAbstimeDiff\fP(Reltime,  T1,  T2)"
.br
.ti -1c
.RI "#define \fBGlobusTimeReltimeToUSec\fP(SlpInt,  Reltime)"
.br
.ti -1c
.RI "#define \fBGlobusTimeReltimeToMilliSec\fP(Milliseconds,  Reltime)"
.br
.ti -1c
.RI "#define \fBGlobusTimeAbstimeInc\fP(Abstime,  Reltime)"
.br
.ti -1c
.RI "#define \fBGlobusTimeAbstimeGetCurrent\fP(Abstime)"
.br
.ti -1c
.RI "#define \fBGlobusTimeAbstimeCopy\fP(Dest,  Src)"
.br
.ti -1c
.RI "#define \fBGlobusTimeReltimeCopy\fP(Dest,  Src)"
.br
.ti -1c
.RI "#define \fBGlobusTimeReltimeMultiply\fP(Reltime,  Factor)"
.br
.ti -1c
.RI "#define \fBGlobusTimeReltimeDivide\fP(Reltime,  Factor)"
.br
.in -1c
.SS "Functions"

.in +1c
.ti -1c
.RI "\fBglobus_bool_t\fP \fBglobus_time_has_expired\fP (const globus_abstime_t *abstime)"
.br
.ti -1c
.RI "\fBglobus_bool_t\fP \fBglobus_time_abstime_is_infinity\fP (const globus_abstime_t *abstime)"
.br
.ti -1c
.RI "\fBglobus_bool_t\fP \fBglobus_time_reltime_is_infinity\fP (const globus_reltime_t *reltime)"
.br
.ti -1c
.RI "int \fBglobus_abstime_cmp\fP (const globus_abstime_t *abstime_1, const globus_abstime_t *abstime_2)"
.br
.ti -1c
.RI "int \fBglobus_reltime_cmp\fP (const globus_reltime_t *reltime_1, const globus_reltime_t *reltime_2)"
.br
.in -1c
.SH "Detailed Description"
.PP 
Time Types and Macros\&. 


.SH "Macro Definition Documentation"
.PP 
.SS "#define GlobusTimeAbstimeCopy(Dest, Src)"
\fBValue:\fP
.PP
.nf
{                                                         \
   (Dest)\&.tv_sec = (Src)\&.tv_sec;                          \
   (Dest)\&.tv_nsec = (Src)\&.tv_nsec;                        \
}
.fi
Copy the absolute time 
.SS "#define GlobusTimeAbstimeDiff(Reltime, T1, T2)"
\fBValue:\fP
.PP
.nf
{                                                         \
    int __res = globus_abstime_cmp(&(T1), &(T2));         \
    if(__res < 0)                                         \
    {                                                     \
        (Reltime)\&.tv_sec = (T2)\&.tv_sec - (T1)\&.tv_sec;     \
        (Reltime)\&.tv_usec =                               \
                (((T2)\&.tv_nsec - (T1)\&.tv_nsec) / 1000);   \
        if((Reltime)\&.tv_usec < 0)                         \
        {                                                 \
            (Reltime)\&.tv_sec--;                           \
            (Reltime)\&.tv_usec += 1000000;                 \
        }                                                 \
    }                                                     \
    else if(__res > 0)                                    \
    {                                                     \
        (Reltime)\&.tv_sec = (T1)\&.tv_sec - (T2)\&.tv_sec;     \
        (Reltime)\&.tv_usec =                               \
                (((T1)\&.tv_nsec - (T2)\&.tv_nsec) / 1000);   \
        if((Reltime)\&.tv_usec < 0)                         \
        {                                                 \
            (Reltime)\&.tv_sec--;                           \
            (Reltime)\&.tv_usec += 1000000;                 \
        }                                                 \
    }                                                     \
    else                                                  \
    {                                                     \
        (Reltime)\&.tv_sec = 0;                             \
        (Reltime)\&.tv_usec = 0;                            \
    }                                                     \
}
.fi
Find the difference between the 2 absolute times\&. 
.SS "#define GlobusTimeAbstimeGet(Abstime, Sec, USec)"
\fBValue:\fP
.PP
.nf
{                                                         \
    Sec = (Abstime)\&.tv_sec;                               \
    USec = ((Abstime)\&.tv_nsec / 1000);                    \
}
.fi
Separates abstime structure into its components, sec and usec\&. 
.SS "#define GlobusTimeAbstimeGetCurrent(Abstime)"
\fBValue:\fP
.PP
.nf
    {                                                     \
        struct timeval __time;                            \
                                                          \
        gettimeofday(&__time, GLOBUS_NULL);               \
        (Abstime)\&.tv_sec = __time\&.tv_sec;                 \
        (Abstime)\&.tv_nsec = (__time\&.tv_usec * 1000);      \
    }
.fi
Get the current time 
.SS "#define GlobusTimeAbstimeInc(Abstime, Reltime)"
\fBValue:\fP
.PP
.nf
{                                                         \
    (Abstime)\&.tv_nsec += ((Reltime)\&.tv_usec * 1000);      \
    if((Abstime)\&.tv_nsec >= 1000000000)                    \
    {                                                     \
        (Abstime)\&.tv_sec++;                               \
        (Abstime)\&.tv_nsec -= 1000000000;                  \
    }                                                     \
    (Abstime)\&.tv_sec += (Reltime)\&.tv_sec;                 \
}
.fi
Add reltime to abstime 
.SS "#define GlobusTimeAbstimeSet(Abstime, Sec, USec)"
\fBValue:\fP
.PP
.nf
{                                                         \
    GlobusTimeAbstimeGetCurrent(Abstime);                 \
    (Abstime)\&.tv_nsec += (USec * 1000);                   \
    if((Abstime)\&.tv_nsec >= 1000000000)                    \
    {                                                     \
        (Abstime)\&.tv_sec += ((Abstime)\&.tv_nsec / 1000000000);\
        (Abstime)\&.tv_nsec = (Abstime)\&.tv_nsec  % 1000000000; \
    }                                                     \
    (Abstime)\&.tv_sec += Sec;                              \
}
.fi
Set the abstime structure to the sec and usec parameter values\&. 
.SS "#define GlobusTimeReltimeCopy(Dest, Src)"
\fBValue:\fP
.PP
.nf
{                                                         \
   (Dest)\&.tv_sec = (Src)\&.tv_sec;                          \
   (Dest)\&.tv_usec = (Src)\&.tv_usec;                        \
}
.fi
Copy the relative time 
.SS "#define GlobusTimeReltimeDivide(Reltime, Factor)"
\fBValue:\fP
.PP
.nf
{                                                         \
   (Reltime)\&.tv_usec /= Factor;                           \
   (Reltime)\&.tv_sec /= Factor;                            \
}
.fi
divide the reltime by factor 
.SS "#define GlobusTimeReltimeMultiply(Reltime, Factor)"
\fBValue:\fP
.PP
.nf
{                                                         \
   (Reltime)\&.tv_usec *= Factor;                           \
   (Reltime)\&.tv_sec *= Factor;                            \
                                                          \
    if((Reltime)\&.tv_usec >= 1000000)                      \
    {                                                     \
        (Reltime)\&.tv_sec += ((Reltime)\&.tv_usec / 1000000);\
        (Reltime)\&.tv_usec = (Reltime)\&.tv_usec  % 1000000; \
    }                                                     \
}
.fi
Multiple the reltime by factor 
.SS "#define GlobusTimeReltimeSet(Reltime, Sec, USec)"
\fBValue:\fP
.PP
.nf
{                                                         \
    (Reltime)\&.tv_usec = (USec);                           \
    (Reltime)\&.tv_sec = Sec;                               \
    if((Reltime)\&.tv_usec >= 1000000)                      \
    {                                                     \
        (Reltime)\&.tv_sec += ((Reltime)\&.tv_usec / 1000000);\
        (Reltime)\&.tv_usec = (Reltime)\&.tv_usec  % 1000000; \
    }                                                     \
}
.fi
Set the reltime structure to the sec and usec parameter values\&. 
.SS "#define GlobusTimeReltimeToMilliSec(Milliseconds, Reltime)"
\fBValue:\fP
.PP
.nf
{                                                         \
    Milliseconds = ((Reltime)\&.tv_sec * 1000) +            \
                              ((Reltime)\&.tv_usec)/ 1000;   \
}
.fi
Convert a relative time into a long in millisec units 
.SS "#define GlobusTimeReltimeToUSec(SlpInt, Reltime)"
\fBValue:\fP
.PP
.nf
{                                                         \
    SlpInt = ((Reltime)\&.tv_sec * 1000000) +               \
                                     ((Reltime)\&.tv_usec); \
}
.fi
Convert a relitive time into a long in usec units 
.SH "Function Documentation"
.PP 
.SS "int globus_abstime_cmp (const globus_abstime_t * abstime_1, const globus_abstime_t * abstime_2)"
Compare two absolute times\&.
.PP
This function returns an integer that reflects the comparison of two abstimes in the following way\&.
.PP
0 : values are the same\&. -1 : the first value is less than the second\&. 1 : the first value is greater than the second\&. 
.SS "int globus_reltime_cmp (const globus_reltime_t * reltime_1, const globus_reltime_t * reltime_2)"
Compare two absolute times\&.
.PP
This function returns an integer that reflects the comparison of two reltimes in the following way\&.
.PP
0 : values are the same\&. -1 : the first value is less than the second\&. 1 : the first value is greater than the second\&. 
.SS "\fBglobus_bool_t\fP globus_time_abstime_is_infinity (const globus_abstime_t * abstime)"
Returns a boolean that reflects whether or not abstime is infinity\&. 
.SS "\fBglobus_bool_t\fP globus_time_has_expired (const globus_abstime_t * abstime)"
Has abstime expired
.PP
Returns a boolean that reflects whether or not abstime is less than the current time\&. 
.SS "\fBglobus_bool_t\fP globus_time_reltime_is_infinity (const globus_reltime_t * reltime)"
Returns a boolean that reflects whether or not reltime is infinity\&. 
.SH "Author"
.PP 
Generated automatically by Doxygen for globus_common from the source code\&.