Get DateTime

Convenience Function

Declaration

tibrv_status tibrvMsg_GetDateTime(
   tibrvMsg             message,
   const char*          fieldName,
   tibrvMsgDateTime*    value);
tibrv_status tibrvMsg_GetDateTimeEx(
   tibrvMsg             message,
   const char*          fieldName,
   tibrvMsgDateTime*    value,
   tibrv_u16            fieldId);

Purpose

Get the value of a field as a Rendezvous datetime value.

Remarks

This convenience function retrieves a field and extracts its data.

Since it is not possible to convert any other datatype to a datetime value, the field must already contain a datetime. Otherwise, the function returns TIBRV_CONVERSION_FAILED.

Pointer data extracted from the field remain valid until the message is destroyed; that is, even removing the field or updating the field’s value does not invalidate pointer data.

This function produces values that are read-only snapshots of the field data (see Pointer Snapshot). Programs must not modify the datetime value.

Parameter

Description

message

Get the specified field of this message.

fieldName

Get a field with this name.

value

The program supplies a location in this parameter, and the function stores a pointer to the field value in that location.

fieldId

Get the field with this identifier. Zero is a special value that signifies no field identifier. All non-zero field identifiers must be unique within each message.

Example

This example code extracts a datetime value from a message field, and converts it to a time_t value. Programs can adapt this code as appropriate. (For corresponding code to convert a time_t value to a datetime value, and add the datetime to a message field, see the example at Add DateTime.)

#include <limits.h>
tibrv_status
getAsTimeT(tibrvMsg msg,
        const char * field,
        time_t * value)
{
    tibrvMsgDateTime d;
    tibrv_status err;
    err = tibrvMsg_GetDateTime(msg, field, &d);
    if( err != TIBRV_OK )
        return err;
    if( d.sec > INT_MAX || d.sec < INT_MIN )
        return TIBRV_CONVERSION_FAILED;
    *value = (time_t) d.sec;
    return TIBRV_OK;
}

See Also

Validity of Data Extracted From Messages

Field Names and Field Identifiers