A mutable holder of application content. More...
Macros | |
#define | PN_DEFAULT_PRIORITY |
Default priority for messages. | |
Typedefs | |
typedef struct pn_message_t | pn_message_t |
An AMQP Message object. More... | |
Functions | |
pn_message_t * | pn_message (void) |
Construct a new pn_message_t. More... | |
void | pn_message_free (pn_message_t *msg) |
Free a previously constructed pn_message_t. More... | |
void | pn_message_clear (pn_message_t *msg) |
Clears the content of a pn_message_t. More... | |
int | pn_message_errno (pn_message_t *msg) |
Access the error code of a message. More... | |
pn_error_t * | pn_message_error (pn_message_t *msg) |
Access the error information for a message. More... | |
bool | pn_message_is_inferred (pn_message_t *msg) |
Get the inferred flag for a message. More... | |
int | pn_message_set_inferred (pn_message_t *msg, bool inferred) |
Set the inferred flag for a message. More... | |
bool | pn_message_is_durable (pn_message_t *msg) |
Get the durable flag for a message. More... | |
int | pn_message_set_durable (pn_message_t *msg, bool durable) |
Set the durable flag for a message. More... | |
uint8_t | pn_message_get_priority (pn_message_t *msg) |
Get the priority for a message. More... | |
int | pn_message_set_priority (pn_message_t *msg, uint8_t priority) |
Set the priority for a message. More... | |
pn_millis_t | pn_message_get_ttl (pn_message_t *msg) |
Get the ttl for a message. More... | |
int | pn_message_set_ttl (pn_message_t *msg, pn_millis_t ttl) |
Set the ttl for a message. More... | |
bool | pn_message_is_first_acquirer (pn_message_t *msg) |
Get the first acquirer flag for a message. More... | |
int | pn_message_set_first_acquirer (pn_message_t *msg, bool first) |
Set the first acquirer flag for a message. More... | |
uint32_t | pn_message_get_delivery_count (pn_message_t *msg) |
Get the delivery count for a message. More... | |
int | pn_message_set_delivery_count (pn_message_t *msg, uint32_t count) |
Set the delivery count for a message. More... | |
pn_data_t * | pn_message_id (pn_message_t *msg) |
Get/set the id for a message. More... | |
pn_msgid_t | pn_message_get_id (pn_message_t *msg) |
Get the id for a message. More... | |
int | pn_message_set_id (pn_message_t *msg, pn_msgid_t id) |
Set the id for a message. More... | |
pn_bytes_t | pn_message_get_user_id (pn_message_t *msg) |
Get the user id for a message. More... | |
int | pn_message_set_user_id (pn_message_t *msg, pn_bytes_t user_id) |
Set the user id for a message. More... | |
const char * | pn_message_get_address (pn_message_t *msg) |
Get the address for a message. More... | |
int | pn_message_set_address (pn_message_t *msg, const char *address) |
Set the address for a message. More... | |
const char * | pn_message_get_subject (pn_message_t *msg) |
Get the subject for a message. More... | |
int | pn_message_set_subject (pn_message_t *msg, const char *subject) |
Set the subject for a message. More... | |
const char * | pn_message_get_reply_to (pn_message_t *msg) |
Get the reply_to for a message. More... | |
int | pn_message_set_reply_to (pn_message_t *msg, const char *reply_to) |
Set the reply_to for a message. More... | |
pn_data_t * | pn_message_correlation_id (pn_message_t *msg) |
Get/set the correlation id for a message. More... | |
pn_msgid_t | pn_message_get_correlation_id (pn_message_t *msg) |
Get the correlation id for a message. More... | |
int | pn_message_set_correlation_id (pn_message_t *msg, pn_msgid_t id) |
Set the correlation id for a message. More... | |
const char * | pn_message_get_content_type (pn_message_t *msg) |
Get the content_type for a message. More... | |
int | pn_message_set_content_type (pn_message_t *msg, const char *type) |
Set the content_type for a message. More... | |
const char * | pn_message_get_content_encoding (pn_message_t *msg) |
Get the content_encoding for a message. More... | |
int | pn_message_set_content_encoding (pn_message_t *msg, const char *encoding) |
Set the content_encoding for a message. More... | |
pn_timestamp_t | pn_message_get_expiry_time (pn_message_t *msg) |
Get the expiry time for a message. More... | |
int | pn_message_set_expiry_time (pn_message_t *msg, pn_timestamp_t time) |
Set the expiry time for a message. More... | |
pn_timestamp_t | pn_message_get_creation_time (pn_message_t *msg) |
Get the creation time for a message. More... | |
int | pn_message_set_creation_time (pn_message_t *msg, pn_timestamp_t time) |
Set the creation time for a message. More... | |
const char * | pn_message_get_group_id (pn_message_t *msg) |
Get the group_id for a message. More... | |
int | pn_message_set_group_id (pn_message_t *msg, const char *group_id) |
Set the group_id for a message. More... | |
pn_sequence_t | pn_message_get_group_sequence (pn_message_t *msg) |
Get the group sequence for a message. More... | |
int | pn_message_set_group_sequence (pn_message_t *msg, pn_sequence_t n) |
Set the group sequence for a message. More... | |
const char * | pn_message_get_reply_to_group_id (pn_message_t *msg) |
Get the reply_to_group_id for a message. More... | |
int | pn_message_set_reply_to_group_id (pn_message_t *msg, const char *reply_to_group_id) |
Set the reply_to_group_id for a message. More... | |
pn_data_t * | pn_message_instructions (pn_message_t *msg) |
Get/set the delivery instructions for a message. More... | |
pn_data_t * | pn_message_annotations (pn_message_t *msg) |
Get/set the annotations for a message. More... | |
pn_data_t * | pn_message_properties (pn_message_t *msg) |
Get and set the properties for a message. More... | |
pn_data_t * | pn_message_body (pn_message_t *msg) |
Get and set the body of a message. More... | |
int | pn_message_decode (pn_message_t *msg, const char *bytes, size_t size) |
Decode/load message content from AMQP formatted binary data. More... | |
int | pn_message_encode (pn_message_t *msg, char *bytes, size_t *size) |
Encode a message as AMQP formatted binary data. More... | |
ssize_t | pn_message_encode2 (pn_message_t *msg, pn_rwbytes_t *buf) |
Unsettled API: Encode a message, allocating space if necessary More... | |
ssize_t | pn_message_send (pn_message_t *msg, pn_link_t *sender, pn_rwbytes_t *buf) |
Unsettled API More... | |
int | pn_message_data (pn_message_t *msg, pn_data_t *data) |
Save message content into a pn_data_t object data. More... | |
A mutable holder of application content.
typedef struct pn_message_t pn_message_t |
An AMQP Message object.
An AMQP Message object is a mutable holder of message content that may be used to generate and encode or decode and access AMQP formatted message data.
pn_message_t * pn_message | ( | void | ) |
Construct a new pn_message_t.
Every message that is constructed must be freed using pn_message_free().
void pn_message_free | ( | pn_message_t * | msg | ) |
Free a previously constructed pn_message_t.
[in] | msg | pointer to a pn_message_t or NULL |
void pn_message_clear | ( | pn_message_t * | msg | ) |
Clears the content of a pn_message_t.
When pn_message_clear returns, the supplied pn_message_t will be emptied of all content and effectively returned to the same state as if it was just created.
[in] | msg | pointer to the pn_message_t to be cleared |
int pn_message_errno | ( | pn_message_t * | msg | ) |
Access the error code of a message.
Every operation on a message that can result in an error will set the message's error code in case of error. The pn_message_errno() call will access the error code of the most recent failed operation.
[in] | msg | a message |
pn_error_t * pn_message_error | ( | pn_message_t * | msg | ) |
Access the error information for a message.
Every operation on a message that can result in an error will update the error information held by its error descriptor should that operation fail. The pn_message_error() call will access the error information of the most recent failed operation. The pointer returned by this call is valid until the message is freed.
[in] | msg | a message |
bool pn_message_is_inferred | ( | pn_message_t * | msg | ) |
Get the inferred flag for a message.
The inferred flag for a message indicates how the message content is encoded into AMQP sections. If inferred is true then binary and list values in the body of the message will be encoded as AMQP DATA and AMQP SEQUENCE sections, respectively. If inferred is false, then all values in the body of the message will be encoded as AMQP VALUE sections regardless of their type. Use pn_message_set_inferred to set the value.
[in] | msg | a message object |
int pn_message_set_inferred | ( | pn_message_t * | msg, |
bool | inferred | ||
) |
Set the inferred flag for a message.
See pn_message_is_inferred() for a description of what the inferred flag is.
[in] | msg | a message object |
[in] | inferred | the new value of the inferred flag |
bool pn_message_is_durable | ( | pn_message_t * | msg | ) |
Get the durable flag for a message.
The durable flag indicates that any parties taking responsibility for the message must durably store the content.
[in] | msg | a message object |
int pn_message_set_durable | ( | pn_message_t * | msg, |
bool | durable | ||
) |
Set the durable flag for a message.
See pn_message_is_durable() for a description of the durable flag.
[in] | msg | a message object |
[in] | durable | the new value of the durable flag |
uint8_t pn_message_get_priority | ( | pn_message_t * | msg | ) |
Get the priority for a message.
The priority of a message impacts ordering guarantees. Within a given ordered context, higher priority messages may jump ahead of lower priority messages.
[in] | msg | a message object |
int pn_message_set_priority | ( | pn_message_t * | msg, |
uint8_t | priority | ||
) |
Set the priority for a message.
See pn_message_get_priority() for details on message priority.
[in] | msg | a message object |
[in] | priority | the new priority for the message |
pn_millis_t pn_message_get_ttl | ( | pn_message_t * | msg | ) |
Get the ttl for a message.
The ttl for a message determines how long a message is considered live. When a message is held for retransmit, the ttl is decremented. Once the ttl reaches zero, the message is considered dead. Once a message is considered dead it may be dropped. Use pn_message_set_ttl() to set the ttl for a message.
[in] | msg | a message object |
int pn_message_set_ttl | ( | pn_message_t * | msg, |
pn_millis_t | ttl | ||
) |
Set the ttl for a message.
See pn_message_get_ttl() for a detailed description of message ttl.
[in] | msg | a message object |
[in] | ttl | the new value for the message ttl |
bool pn_message_is_first_acquirer | ( | pn_message_t * | msg | ) |
Get the first acquirer flag for a message.
When set to true, the first acquirer flag for a message indicates that the recipient of the message is the first recipient to acquire the message, i.e. there have been no failed delivery attempts to other acquirers. Note that this does not mean the message has not been delivered to, but not acquired, by other recipients.
[in] | msg | a message object |
int pn_message_set_first_acquirer | ( | pn_message_t * | msg, |
bool | first | ||
) |
Set the first acquirer flag for a message.
See pn_message_is_first_acquirer() for details on the first acquirer flag.
[in] | msg | a message object |
[in] | first | the new value for the first acquirer flag |
uint32_t pn_message_get_delivery_count | ( | pn_message_t * | msg | ) |
Get the delivery count for a message.
The delivery count field tracks how many attempts have been made to delivery a message. Use pn_message_set_delivery_count() to set the delivery count for a message.
[in] | msg | a message object |
int pn_message_set_delivery_count | ( | pn_message_t * | msg, |
uint32_t | count | ||
) |
Set the delivery count for a message.
See pn_message_get_delivery_count() for details on what the delivery count means.
[in] | msg | a message object |
[in] | count | the new delivery count |
pn_data_t * pn_message_id | ( | pn_message_t * | msg | ) |
Get/set the id for a message.
The message id provides a globally unique identifier for a message. A message id can be an a string, an unsigned long, a uuid or a binary value. This operation returns a pointer to a pn_data_t that can be used to access and/or modify the value of the message id. The pointer is valid until the message is freed. See pn_data_t for details on how to get/set the value.
[in] | msg | a message object |
pn_msgid_t pn_message_get_id | ( | pn_message_t * | msg | ) |
Get the id for a message.
The message id provides a globally unique identifier for a message. A message id can be an a string, an unsigned long, a uuid or a binary value. This operation returns the value of the id using the pn_atom_t discriminated union. See pn_atom_t for details on how to access the value.
[in] | msg | a message object |
int pn_message_set_id | ( | pn_message_t * | msg, |
pn_msgid_t | id | ||
) |
Set the id for a message.
See pn_message_get_id() for more details on the meaning of the message id. Note that only string, unsigned long, uuid, or binary values are permitted.
[in] | msg | a message object |
[in] | id | the new value of the message id |
pn_bytes_t pn_message_get_user_id | ( | pn_message_t * | msg | ) |
Get the user id for a message.
The pointer referenced by the pn_bytes_t struct will be valid until any one of the following operations occur:
[in] | msg | a message object |
int pn_message_set_user_id | ( | pn_message_t * | msg, |
pn_bytes_t | user_id | ||
) |
Set the user id for a message.
This operation copies the bytes referenced by the provided pn_bytes_t struct.
[in] | msg | a message object |
[in] | user_id | the new user_id for the message |
const char * pn_message_get_address | ( | pn_message_t * | msg | ) |
Get the address for a message.
This operation will return NULL if no address has been set or if the address has been set to NULL. The pointer returned by this operation is valid until any one of the following operations occur:
[in] | msg | a message object |
int pn_message_set_address | ( | pn_message_t * | msg, |
const char * | address | ||
) |
Set the address for a message.
The supplied address pointer must either be NULL or reference a NUL terminated string. When the pointer is NULL, the address of the message is set to NULL. When the pointer is non NULL, the contents are copied into the message.
[in] | msg | a message object |
[in] | address | a pointer to the new address (or NULL) |
const char * pn_message_get_subject | ( | pn_message_t * | msg | ) |
Get the subject for a message.
This operation will return NULL if no subject has been set or if the subject has been set to NULL. The pointer returned by this operation is valid until any one of the following operations occur:
[in] | msg | a message object |
int pn_message_set_subject | ( | pn_message_t * | msg, |
const char * | subject | ||
) |
Set the subject for a message.
The supplied subject pointer must either be NULL or reference a NUL terminated string. When the pointer is NULL, the subject is set to NULL. When the pointer is non NULL, the contents are copied into the message.
[in] | msg | a message object |
[in] | subject | a pointer to the new subject (or NULL) |
const char * pn_message_get_reply_to | ( | pn_message_t * | msg | ) |
Get the reply_to for a message.
This operation will return NULL if no reply_to has been set or if the reply_to has been set to NULL. The pointer returned by this operation is valid until any one of the following operations occur:
[in] | msg | a message object |
int pn_message_set_reply_to | ( | pn_message_t * | msg, |
const char * | reply_to | ||
) |
Set the reply_to for a message.
The supplied reply_to pointer must either be NULL or reference a NUL terminated string. When the pointer is NULL, the reply_to is set to NULL. When the pointer is non NULL, the contents are copied into the message.
[in] | msg | a message object |
[in] | reply_to | a pointer to the new reply_to (or NULL) |
pn_data_t * pn_message_correlation_id | ( | pn_message_t * | msg | ) |
Get/set the correlation id for a message.
A correlation id can be an a string, an unsigned long, a uuid or a binary value. This operation returns a pointer to a pn_data_t that can be used to access and/or modify the value of the correlation id. The pointer is valid until the message is freed. See pn_data_t for details on how to get/set the value.
[in] | msg | a message object |
pn_msgid_t pn_message_get_correlation_id | ( | pn_message_t * | msg | ) |
Get the correlation id for a message.
A correlation id can be an a string, an unsigned long, a uuid or a binary value. This operation returns the value of the id using the pn_atom_t discriminated union. See pn_atom_t for details on how to access the value.
[in] | msg | a message object |
int pn_message_set_correlation_id | ( | pn_message_t * | msg, |
pn_msgid_t | id | ||
) |
Set the correlation id for a message.
See pn_message_get_correlation_id() for more details on the meaning of the correlation id. Note that only string, unsigned long, uuid, or binary values are permitted.
[in] | msg | a message object |
[in] | id | the new value of the message id |
const char * pn_message_get_content_type | ( | pn_message_t * | msg | ) |
Get the content_type for a message.
This operation will return NULL if no content_type has been set or if the content_type has been set to NULL. The pointer returned by this operation is valid until any one of the following operations occur:
[in] | msg | a message object |
int pn_message_set_content_type | ( | pn_message_t * | msg, |
const char * | type | ||
) |
Set the content_type for a message.
The supplied content_type pointer must either be NULL or reference a NUL terminated string. When the pointer is NULL, the content_type is set to NULL. When the pointer is non NULL, the contents are copied into the message.
[in] | msg | a message object |
[in] | type | a pointer to the new content_type (or NULL) |
const char * pn_message_get_content_encoding | ( | pn_message_t * | msg | ) |
Get the content_encoding for a message.
This operation will return NULL if no content_encoding has been set or if the content_encoding has been set to NULL. The pointer returned by this operation is valid until any one of the following operations occur:
[in] | msg | a message object |
int pn_message_set_content_encoding | ( | pn_message_t * | msg, |
const char * | encoding | ||
) |
Set the content_encoding for a message.
The supplied content_encoding pointer must either be NULL or reference a NUL terminated string. When the pointer is NULL, the content_encoding is set to NULL. When the pointer is non NULL, the contents are copied into the message.
[in] | msg | a message object |
[in] | encoding | a pointer to the new content_encoding (or NULL) |
pn_timestamp_t pn_message_get_expiry_time | ( | pn_message_t * | msg | ) |
Get the expiry time for a message.
A zero value for the expiry time indicates that the message will never expire. This is the default value.
[in] | msg | a message object |
int pn_message_set_expiry_time | ( | pn_message_t * | msg, |
pn_timestamp_t | time | ||
) |
Set the expiry time for a message.
See pn_message_get_expiry_time() for more details.
[in] | msg | a message object |
[in] | time | the new expiry time for the message |
pn_timestamp_t pn_message_get_creation_time | ( | pn_message_t * | msg | ) |
Get the creation time for a message.
A zero value for the creation time indicates that the creation time has not been set. This is the default value.
[in] | msg | a message object |
int pn_message_set_creation_time | ( | pn_message_t * | msg, |
pn_timestamp_t | time | ||
) |
Set the creation time for a message.
See pn_message_get_creation_time() for more details.
[in] | msg | a message object |
[in] | time | the new creation time for the message |
const char * pn_message_get_group_id | ( | pn_message_t * | msg | ) |
Get the group_id for a message.
This operation will return NULL if no group_id has been set or if the group_id has been set to NULL. The pointer returned by this operation is valid until any one of the following operations occur:
[in] | msg | a message object |
int pn_message_set_group_id | ( | pn_message_t * | msg, |
const char * | group_id | ||
) |
Set the group_id for a message.
The supplied group_id pointer must either be NULL or reference a NUL terminated string. When the pointer is NULL, the group_id is set to NULL. When the pointer is non NULL, the contents are copied into the message.
[in] | msg | a message object |
[in] | group_id | a pointer to the new group_id (or NULL) |
pn_sequence_t pn_message_get_group_sequence | ( | pn_message_t * | msg | ) |
Get the group sequence for a message.
The group sequence of a message identifies the relative ordering of messages within a group. The default value for the group sequence of a message is zero.
[in] | msg | a message object |
int pn_message_set_group_sequence | ( | pn_message_t * | msg, |
pn_sequence_t | n | ||
) |
Set the group sequence for a message.
See pn_message_get_group_sequence() for details on what the group sequence means.
[in] | msg | a message object |
[in] | n | the new group sequence for the message |
const char * pn_message_get_reply_to_group_id | ( | pn_message_t * | msg | ) |
Get the reply_to_group_id for a message.
This operation will return NULL if no reply_to_group_id has been set or if the reply_to_group_id has been set to NULL. The pointer returned by this operation is valid until any one of the following operations occur:
[in] | msg | a message object |
int pn_message_set_reply_to_group_id | ( | pn_message_t * | msg, |
const char * | reply_to_group_id | ||
) |
Set the reply_to_group_id for a message.
The supplied reply_to_group_id pointer must either be NULL or reference a NUL terminated string. When the pointer is NULL, the reply_to_group_id is set to NULL. When the pointer is non NULL, the contents are copied into the message.
[in] | msg | a message object |
[in] | reply_to_group_id | a pointer to the new reply_to_group_id (or NULL) |
pn_data_t * pn_message_instructions | ( | pn_message_t * | msg | ) |
Get/set the delivery instructions for a message.
This operation returns a pointer to a pn_data_t representing the content of the delivery instructions section of a message. The pointer is valid until the message is freed and may be used to both access and modify the content of the delivery instructions section of a message.
The pn_data_t must either be empty or consist of a symbol keyed map in order to be considered valid delivery instructions.
[in] | msg | a message object |
pn_data_t * pn_message_annotations | ( | pn_message_t * | msg | ) |
Get/set the annotations for a message.
This operation returns a pointer to a pn_data_t representing the content of the annotations section of a message. The pointer is valid until the message is freed and may be used to both access and modify the content of the annotations section of a message.
The pn_data_t must either be empty or consist of a symbol keyed map in order to be considered valid message annotations.
[in] | msg | a message object |
pn_data_t * pn_message_properties | ( | pn_message_t * | msg | ) |
Get and set the properties for a message.
This operation returns a pointer to a pn_data_t representing the content of the properties section of a message. The pointer is valid until the message is freed and may be used to both access and modify the content of the properties section of a message.
The pn_data_t must either be empty or consist of a string keyed map in order to be considered valid message properties.
[in] | msg | a message object |
pn_data_t * pn_message_body | ( | pn_message_t * | msg | ) |
Get and set the body of a message.
This operation returns a pointer to a pn_data_t representing the body of a message. The pointer is valid until the message is freed and may be used to both access and modify the content of the message body.
[in] | msg | a message object |
int pn_message_decode | ( | pn_message_t * | msg, |
const char * | bytes, | ||
size_t | size | ||
) |
Decode/load message content from AMQP formatted binary data.
Upon invoking this operation, any existing message content will be cleared and replaced with the content from the provided binary data.
[in] | msg | a message object |
[in] | bytes | the start of the encoded AMQP data |
[in] | size | the size of the encoded AMQP data |
int pn_message_encode | ( | pn_message_t * | msg, |
char * | bytes, | ||
size_t * | size | ||
) |
Encode a message as AMQP formatted binary data.
If the buffer space provided is insufficient to store the content held in the message, the operation will fail and return a PN_OVERFLOW error code.
[in] | msg | a message object |
[in] | bytes | the start of empty buffer space |
[in,out] | size | the amount of empty buffer space. On return size holds the amount of data written |
ssize_t pn_message_encode2 | ( | pn_message_t * | msg, |
pn_rwbytes_t * | buf | ||
) |
Unsettled API: Encode a message, allocating space if necessary
[in] | msg | A message object. |
[in,out] | buf | Used to encode msg. If buf->start == NULL memory is allocated with malloc(). If buf->size is not large enough, buffer is expanded with realloc(). On return buf holds the address and size of the final buffer. buf->size may be larger than the length of the encoded message. |
ssize_t pn_message_send | ( | pn_message_t * | msg, |
pn_link_t * | sender, | ||
pn_rwbytes_t * | buf | ||
) |
Unsettled API
Encode and send a message on a sender link.
Performs the following steps:
Note: you must create a delivery for the message before calling pn_message_send() see pn_delivery()
[in] | msg | A message object. |
[in] | sender | A sending link. |
[in,out] | buf | See pn_message_encode2. If buf == NULL then any memory needed for encoding will be allocated and freed by pn_message_send(). |
int pn_message_data | ( | pn_message_t * | msg, |
pn_data_t * | data | ||
) |
Save message content into a pn_data_t object data.
The data object will first be cleared.