rmw  master
C API providing a middleware abstraction layer which is used to implement the rest of ROS.
Classes | Macros | Typedefs | Functions
time.h File Reference
#include <stdint.h>
#include "rcutils/time.h"
#include "rmw/macros.h"
#include "rmw/visibility_control.h"
Include dependency graph for time.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  rmw_time_t
 A struct representing a duration or relative time in RMW - does not encode an origin. More...
 

Macros

#define RMW_DURATION_INFINITE   {9223372036LL, 854775807LL}
 Constant representing an infinite duration. Use rmw_time_equal for comparisons. More...
 
#define RMW_DURATION_UNSPECIFIED   {0LL, 0LL}
 

Typedefs

typedef struct RMW_PUBLIC_TYPE rmw_time_t rmw_time_t
 A struct representing a duration or relative time in RMW - does not encode an origin. More...
 
typedef rcutils_time_point_value_t rmw_time_point_value_t
 
typedef rcutils_duration_value_t rmw_duration_t
 

Functions

bool rmw_time_equal (const rmw_time_t left, const rmw_time_t right)
 Check whether two rmw_time_t represent the same time. More...
 
rmw_duration_t rmw_time_total_nsec (const rmw_time_t time)
 Return the total nanosecond representation of a time. More...
 
rmw_time_t rmw_time_from_nsec (const rmw_duration_t nanoseconds)
 Construct rmw_time_t from a total nanoseconds representation. More...
 
rmw_time_t rmw_time_normalize (const rmw_time_t time)
 Ensure that an rmw_time_t does not have nanoseconds > 1 second. More...
 

Macro Definition Documentation

◆ RMW_DURATION_INFINITE

#define RMW_DURATION_INFINITE   {9223372036LL, 854775807LL}

Constant representing an infinite duration. Use rmw_time_equal for comparisons.

Different RMW implementations have different representations for infinite durations. This value is reported for QoS policy durations that are left unspecified. Do not directly compare sec == sec && nsec == nsec, because we don't want to be sensitive to non-normalized values (nsec > 1 second) - use rmw_time_equal instead. This value is INT64_MAX nanoseconds = 0x7FFF FFFF FFFF FFFF = d 9 223 372 036 854 775 807

Note: these constants cannot be static const rmw_time_t because in C that can't be used as a compile-time initializer

◆ RMW_DURATION_UNSPECIFIED

#define RMW_DURATION_UNSPECIFIED   {0LL, 0LL}

Typedef Documentation

◆ rmw_time_t

A struct representing a duration or relative time in RMW - does not encode an origin.

◆ rmw_time_point_value_t

◆ rmw_duration_t

Function Documentation

◆ rmw_time_equal()

bool rmw_time_equal ( const rmw_time_t  left,
const rmw_time_t  right 
)

Check whether two rmw_time_t represent the same time.

◆ rmw_time_total_nsec()

rmw_duration_t rmw_time_total_nsec ( const rmw_time_t  time)

Return the total nanosecond representation of a time.

Returns
INT64_MAX if input is too large to store in 64 bits

◆ rmw_time_from_nsec()

rmw_time_t rmw_time_from_nsec ( const rmw_duration_t  nanoseconds)

Construct rmw_time_t from a total nanoseconds representation.

rmw_time_t only specifies relative time, so the origin is not relevant for this calculation.

Returns
RMW_DURATION_INFINITE if input is negative, which is not representable in rmw_time_t

◆ rmw_time_normalize()

rmw_time_t rmw_time_normalize ( const rmw_time_t  time)

Ensure that an rmw_time_t does not have nanoseconds > 1 second.