33 #include "../include/zmq.h" 64 memcpy(
data(), data_, size_);
78 return init_data(data_, size_, ffn_, hint);
84 u.vsm.metadata = NULL;
88 u.vsm.group[0] =
'\0';
96 u.vsm.metadata = NULL;
99 u.vsm.size = (
unsigned char) size_;
100 u.vsm.group[0] =
'\0';
101 u.vsm.routing_id = 0;
104 u.lmsg.metadata = NULL;
107 u.lmsg.group[0] =
'\0';
108 u.lmsg.routing_id = 0;
109 u.lmsg.content = NULL;
117 u.lmsg.content->data =
u.lmsg.content + 1;
118 u.lmsg.content->size = size_;
119 u.lmsg.content->ffn = NULL;
120 u.lmsg.content->hint = NULL;
132 u.zclmsg.metadata = NULL;
135 u.zclmsg.group[0] =
'\0';
136 u.zclmsg.routing_id = 0;
138 u.zclmsg.content = content_;
139 u.zclmsg.content->data = data_;
140 u.zclmsg.content->size = size_;
141 u.zclmsg.content->ffn = ffn_;
142 u.zclmsg.content->hint = hint_;
157 u.cmsg.metadata = NULL;
162 u.cmsg.group[0] =
'\0';
163 u.cmsg.routing_id = 0;
166 u.lmsg.metadata = NULL;
169 u.lmsg.group[0] =
'\0';
170 u.lmsg.routing_id = 0;
172 if (!
u.lmsg.content) {
177 u.lmsg.content->data = data_;
178 u.lmsg.content->size = size_;
179 u.lmsg.content->ffn = ffn_;
180 u.lmsg.content->hint = hint_;
189 u.delimiter.metadata = NULL;
191 u.delimiter.flags = 0;
192 u.delimiter.group[0] =
'\0';
193 u.delimiter.routing_id = 0;
199 u.base.metadata = NULL;
202 u.base.group[0] =
'\0';
203 u.base.routing_id = 0;
209 u.base.metadata = NULL;
212 u.base.group[0] =
'\0';
213 u.base.routing_id = 0;
230 !
u.lmsg.content->refcnt.sub (1)) {
234 u.lmsg.content->refcnt.~atomic_counter_t ();
236 if (
u.lmsg.content->ffn)
237 u.lmsg.content->ffn (
u.lmsg.content->data,
238 u.lmsg.content->hint);
239 free (
u.lmsg.content);
250 !
u.zclmsg.content->refcnt.sub (1)) {
254 u.zclmsg.content->refcnt.~atomic_counter_t ();
256 u.zclmsg.content->ffn (
u.zclmsg.content->data,
257 u.zclmsg.content->hint);
261 if (
u.base.metadata != NULL) {
262 if (
u.base.metadata->drop_ref ()) {
265 u.base.metadata = NULL;
312 src_.
u.
lmsg.content->refcnt.add (1);
315 src_.
u.
lmsg.content->refcnt.set (2);
330 if (src_.
u.
base.metadata != NULL)
331 src_.
u.
base.metadata->add_ref ();
344 switch (
u.base.type) {
348 return u.lmsg.content->data;
352 return u.zclmsg.content->data;
364 switch (
u.base.type) {
368 return u.lmsg.content->size;
370 return u.zclmsg.content->size;
386 u.base.flags |= flags_;
391 u.base.flags &= ~flags_;
396 return u.base.metadata;
401 assert (metadata_ != NULL);
402 assert (
u.base.metadata == NULL);
404 u.base.metadata = metadata_;
409 if (
u.base.metadata) {
410 if (
u.base.metadata->drop_ref ()) {
413 u.base.metadata = NULL;
498 if (
u.base.type ==
type_lmsg && !
u.lmsg.content->refcnt.sub(refs_)) {
501 u.lmsg.content->refcnt.~atomic_counter_t ();
503 if (
u.lmsg.content->ffn)
504 u.lmsg.content->ffn (
u.lmsg.content->data,
u.lmsg.content->hint);
505 free (
u.lmsg.content);
510 if (
is_zcmsg() && !
u.zclmsg.content->refcnt.sub(refs_)) {
512 if (
u.zclmsg.content->ffn) {
513 u.zclmsg.content->ffn(
u.zclmsg.content->data,
u.zclmsg.content->hint);
524 return u.base.routing_id;
530 u.base.routing_id = routing_id_;
539 u.base.routing_id = 0;
550 return set_group (group_, strlen (group_));
561 strncpy (
u.base.group, group_, length_);
562 u.base.group[length_] =
'\0';
572 return &
u.lmsg.content->refcnt;
574 return &
u.zclmsg.content->refcnt;
#define LIBZMQ_DELETE(p_object)
int set_group(const char *group_)
void( msg_free_fn)(void *data, void *hint)
int init_external_storage(content_t *content_, void *data_, size_t size_, msg_free_fn *ffn_, void *hint_)
void set(integer_t value_)
#define ZMQ_GROUP_MAX_LENGTH
int init_size(size_t size_)
struct zmq::msg_t::@41::@44 lmsg
struct zmq::msg_t::@41::@45 zclmsg
void reset_flags(unsigned char flags_)
integer_t add(integer_t increment_)
void set_flags(unsigned char flags_)
zmq::atomic_counter_t * refcnt()
int set_routing_id(uint32_t routing_id_)
bool is_delimiter() const
char zmq_msg_size_check[2 *((sizeof(zmq::msg_t)==sizeof(zmq_msg_t))!=0)-1]
uint32_t get_routing_id()
bool is_credential() const
metadata_t * metadata() const
int init_data(void *data_, size_t size_, msg_free_fn *ffn_, void *hint_)
struct zmq::msg_t::@41::@42 base
void set_metadata(metadata_t *metadata_)