diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/pipe.cpp | 2 | ||||
| -rw-r--r-- | src/pub.cpp | 4 | ||||
| -rw-r--r-- | src/zmq.cpp | 14 | 
3 files changed, 11 insertions, 9 deletions
diff --git a/src/pipe.cpp b/src/pipe.cpp index e738128..f4582f2 100644 --- a/src/pipe.cpp +++ b/src/pipe.cpp @@ -174,7 +174,7 @@ void zmq::writer_t::term ()      zmq_msg_t msg;      const unsigned char *offset = 0;      msg.content = (void*) (offset + ZMQ_DELIMITER); -    msg.shared = false; +    msg.flags = 0;      pipe->write (msg);      pipe->flush ();  } diff --git a/src/pub.cpp b/src/pub.cpp index 5b9d48c..342b1d2 100644 --- a/src/pub.cpp +++ b/src/pub.cpp @@ -121,11 +121,11 @@ int zmq::pub_t::xsend (zmq_msg_t *msg_, int flags_)      //  There are at least 2 destinations for the message. That means we have      //  to deal with reference counting. First add N-1 references to      //  the content (we are holding one reference anyway, that's why -1). -    if (msg_->shared) +    if (msg_->flags & ZMQ_MSG_SHARED)          content->refcnt.add (pipes_count - 1);      else {          content->refcnt.set (pipes_count); -        msg_->shared = true; +        msg_->flags |= ZMQ_MSG_SHARED;      }      //  Push the message to all destinations. diff --git a/src/zmq.cpp b/src/zmq.cpp index 409416d..8540e06 100644 --- a/src/zmq.cpp +++ b/src/zmq.cpp @@ -96,6 +96,7 @@ const char *zmq_strerror (int errnum_)  int zmq_msg_init (zmq_msg_t *msg_)  {      msg_->content = (zmq::msg_content_t*) ZMQ_VSM; +    msg_->flags = 0;      msg_->vsm_size = 0;      return 0;  } @@ -104,6 +105,7 @@ int zmq_msg_init_size (zmq_msg_t *msg_, size_t size_)  {      if (size_ <= ZMQ_MAX_VSM_SIZE) {          msg_->content = (zmq::msg_content_t*) ZMQ_VSM; +        msg_->flags = 0;          msg_->vsm_size = (uint8_t) size_;      }      else { @@ -113,8 +115,8 @@ int zmq_msg_init_size (zmq_msg_t *msg_, size_t size_)              errno = ENOMEM;              return -1;          } -        msg_->shared = 0; - +        msg_->flags = 0; +                  zmq::msg_content_t *content = (zmq::msg_content_t*) msg_->content;          content->data = (void*) (content + 1);          content->size = size_; @@ -128,9 +130,9 @@ int zmq_msg_init_size (zmq_msg_t *msg_, size_t size_)  int zmq_msg_init_data (zmq_msg_t *msg_, void *data_, size_t size_,      zmq_free_fn *ffn_, void *hint_)  { -    msg_->shared = 0;      msg_->content = (zmq::msg_content_t*) malloc (sizeof (zmq::msg_content_t));      zmq_assert (msg_->content); +    msg_->flags = 0;      zmq::msg_content_t *content = (zmq::msg_content_t*) msg_->content;      content->data = data_;      content->size = size_; @@ -150,7 +152,7 @@ int zmq_msg_close (zmq_msg_t *msg_)      //  If the content is not shared, or if it is shared and the reference.      //  count has dropped to zero, deallocate it.      zmq::msg_content_t *content = (zmq::msg_content_t*) msg_->content; -    if (!msg_->shared || !content->refcnt.sub (1)) { +    if (!(msg_->flags & ZMQ_MSG_SHARED) || !content->refcnt.sub (1)) {          //  We used "placement new" operator to initialize the reference.          //  counter so we call its destructor now. @@ -183,10 +185,10 @@ int zmq_msg_copy (zmq_msg_t *dest_, zmq_msg_t *src_)          //  One reference is added to shared messages. Non-shared messages          //  are turned into shared messages and reference count is set to 2.          zmq::msg_content_t *content = (zmq::msg_content_t*) src_->content; -        if (src_->shared) +        if (src_->flags & ZMQ_MSG_SHARED)              content->refcnt.add (1);          else { -            src_->shared = true; +            src_->flags |= ZMQ_MSG_SHARED;              content->refcnt.set (2);          }      }  | 
