(All fields are exposed such that if a wrapper needs to dup the storage as it passes
into or out of their environment they dup it all, not just what we choose to expose.)
+
+ NOTE:
+ State is the RMR state of processing on the message. The transport state (tp_state)
+ will be set to mirror the value of errno for wrappers unable to access errno directly,
+ but will only be set if state is not RMR_OK. Even then, the value may be suspect as
+ the underlying transport mechanism may not set errno. It is strongly recommended that
+ user applications use tp_state only for dianostic purposes to convey additional information
+ in a log message.
*/
typedef struct {
int state; // state of processing
unsigned char* payload; // transported data
unsigned char* xaction; // pointer to fixed length transaction id bytes
int sub_id; // subscription id
+ int tp_state; // transport state (errno) valid only if state != RMR_OK, and even then may not be valid
// these things are off limits to the user application
void* tp_buf; // underlying transport allocated pointer (e.g. nng message)
extern unsigned char* rmr_get_meid( rmr_mbuf_t* mbuf, unsigned char* dest );
extern unsigned char* rmr_get_src( rmr_mbuf_t* mbuf, unsigned char* dest );
extern unsigned char* rmr_get_srcip( rmr_mbuf_t* msg, unsigned char* dest );
+extern unsigned char* rmr_get_xact( rmr_mbuf_t* mbuf, unsigned char* dest );
extern rmr_mbuf_t* rmr_realloc_msg( rmr_mbuf_t* mbuf, int new_tr_size );
extern int rmr_str2meid( rmr_mbuf_t* mbuf, unsigned char const* str );
extern void rmr_str2payload( rmr_mbuf_t* mbuf, unsigned char const* str );
extern void rmr_str2payload( rmr_mbuf_t* mbuf, unsigned char const* str );
extern int rmr_str2xact( rmr_mbuf_t* mbuf, unsigned char const* str );
+extern void* rmr_trace_ref( rmr_mbuf_t* msg, int* sizeptr );
extern int rmr_get_trlen( rmr_mbuf_t* msg );
extern int rmr_get_trace( rmr_mbuf_t* msg, unsigned char* dest, int size );