00001 #ifndef PROTON_MESSAGE_H
00002 #define PROTON_MESSAGE_H 1
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <proton/import_export.h>
00026 #include <proton/types.h>
00027 #include <proton/codec.h>
00028 #include <sys/types.h>
00029 #ifndef __cplusplus
00030 #include <stdbool.h>
00031 #endif
00032
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036
00037 typedef struct pn_message_t pn_message_t;
00038
00039 typedef enum {
00040 PN_DATA,
00041 PN_TEXT,
00042 PN_AMQP,
00043 PN_JSON
00044 } pn_format_t;
00045
00046 #define PN_DEFAULT_PRIORITY (4)
00047
00048 PN_EXTERN pn_message_t * pn_message(void);
00049 PN_EXTERN void pn_message_free(pn_message_t *msg);
00050
00051 PN_EXTERN void pn_message_clear(pn_message_t *msg);
00052 PN_EXTERN int pn_message_errno(pn_message_t *msg);
00053 PN_EXTERN const char * pn_message_error(pn_message_t *msg);
00054
00055 PN_EXTERN bool pn_message_is_inferred(pn_message_t *msg);
00056 PN_EXTERN int pn_message_set_inferred(pn_message_t *msg, bool inferred);
00057
00058
00059 PN_EXTERN bool pn_message_is_durable (pn_message_t *msg);
00060 PN_EXTERN int pn_message_set_durable (pn_message_t *msg, bool durable);
00061
00062 PN_EXTERN uint8_t pn_message_get_priority (pn_message_t *msg);
00063 PN_EXTERN int pn_message_set_priority (pn_message_t *msg, uint8_t priority);
00064
00065 PN_EXTERN pn_millis_t pn_message_get_ttl (pn_message_t *msg);
00066 PN_EXTERN int pn_message_set_ttl (pn_message_t *msg, pn_millis_t ttl);
00067
00068 PN_EXTERN bool pn_message_is_first_acquirer (pn_message_t *msg);
00069 PN_EXTERN int pn_message_set_first_acquirer (pn_message_t *msg, bool first);
00070
00071 PN_EXTERN uint32_t pn_message_get_delivery_count (pn_message_t *msg);
00072 PN_EXTERN int pn_message_set_delivery_count (pn_message_t *msg, uint32_t count);
00073
00074 PN_EXTERN pn_data_t * pn_message_id (pn_message_t *msg);
00075 PN_EXTERN pn_atom_t pn_message_get_id (pn_message_t *msg);
00076 PN_EXTERN int pn_message_set_id (pn_message_t *msg, pn_atom_t id);
00077
00078 PN_EXTERN pn_bytes_t pn_message_get_user_id (pn_message_t *msg);
00079 PN_EXTERN int pn_message_set_user_id (pn_message_t *msg, pn_bytes_t user_id);
00080
00081 PN_EXTERN const char * pn_message_get_address (pn_message_t *msg);
00082 PN_EXTERN int pn_message_set_address (pn_message_t *msg, const char *address);
00083
00084 PN_EXTERN const char * pn_message_get_subject (pn_message_t *msg);
00085 PN_EXTERN int pn_message_set_subject (pn_message_t *msg, const char *subject);
00086
00087 PN_EXTERN const char * pn_message_get_reply_to (pn_message_t *msg);
00088 PN_EXTERN int pn_message_set_reply_to (pn_message_t *msg, const char *reply_to);
00089
00090 PN_EXTERN pn_data_t * pn_message_correlation_id (pn_message_t *msg);
00091 PN_EXTERN pn_atom_t pn_message_get_correlation_id (pn_message_t *msg);
00092 PN_EXTERN int pn_message_set_correlation_id (pn_message_t *msg, pn_atom_t atom);
00093
00094 PN_EXTERN const char * pn_message_get_content_type (pn_message_t *msg);
00095 PN_EXTERN int pn_message_set_content_type (pn_message_t *msg, const char *type);
00096
00097 PN_EXTERN const char * pn_message_get_content_encoding (pn_message_t *msg);
00098 PN_EXTERN int pn_message_set_content_encoding (pn_message_t *msg, const char *encoding);
00099
00100 PN_EXTERN pn_timestamp_t pn_message_get_expiry_time (pn_message_t *msg);
00101 PN_EXTERN int pn_message_set_expiry_time (pn_message_t *msg, pn_timestamp_t time);
00102
00103 PN_EXTERN pn_timestamp_t pn_message_get_creation_time (pn_message_t *msg);
00104 PN_EXTERN int pn_message_set_creation_time (pn_message_t *msg, pn_timestamp_t time);
00105
00106 PN_EXTERN const char * pn_message_get_group_id (pn_message_t *msg);
00107 PN_EXTERN int pn_message_set_group_id (pn_message_t *msg, const char *group_id);
00108
00109 PN_EXTERN pn_sequence_t pn_message_get_group_sequence (pn_message_t *msg);
00110 PN_EXTERN int pn_message_set_group_sequence (pn_message_t *msg, pn_sequence_t n);
00111
00112 PN_EXTERN const char * pn_message_get_reply_to_group_id (pn_message_t *msg);
00113 PN_EXTERN int pn_message_set_reply_to_group_id (pn_message_t *msg, const char *reply_to_group_id);
00114
00115 PN_EXTERN pn_format_t pn_message_get_format(pn_message_t *message);
00116 PN_EXTERN int pn_message_set_format(pn_message_t *message, pn_format_t format);
00117
00118 PN_EXTERN int pn_message_load(pn_message_t *message, const char *data, size_t size);
00119 PN_EXTERN int pn_message_load_data(pn_message_t *message, const char *data, size_t size);
00120 PN_EXTERN int pn_message_load_text(pn_message_t *message, const char *data, size_t size);
00121 PN_EXTERN int pn_message_load_amqp(pn_message_t *message, const char *data, size_t size);
00122 PN_EXTERN int pn_message_load_json(pn_message_t *message, const char *data, size_t size);
00123
00124 PN_EXTERN int pn_message_save(pn_message_t *message, char *data, size_t *size);
00125 PN_EXTERN int pn_message_save_data(pn_message_t *message, char *data, size_t *size);
00126 PN_EXTERN int pn_message_save_text(pn_message_t *message, char *data, size_t *size);
00127 PN_EXTERN int pn_message_save_amqp(pn_message_t *message, char *data, size_t *size);
00128 PN_EXTERN int pn_message_save_json(pn_message_t *message, char *data, size_t *size);
00129
00130 PN_EXTERN pn_data_t *pn_message_instructions(pn_message_t *msg);
00131 PN_EXTERN pn_data_t *pn_message_annotations(pn_message_t *msg);
00132 PN_EXTERN pn_data_t *pn_message_properties(pn_message_t *msg);
00133 PN_EXTERN pn_data_t *pn_message_body(pn_message_t *msg);
00134
00135 PN_EXTERN int pn_message_decode(pn_message_t *msg, const char *bytes, size_t size);
00136 PN_EXTERN int pn_message_encode(pn_message_t *msg, char *bytes, size_t *size);
00137
00138 PN_EXTERN ssize_t pn_message_data(char *dst, size_t available, const char *src, size_t size);
00139
00140 #ifdef __cplusplus
00141 }
00142 #endif
00143
00144 #endif