mirror of
https://github.com/zeromq/libzmq.git
synced 2025-03-10 16:06:09 +00:00
Problem: magic numbers and code duplication in msg.cpp
Solution: extract constants and unified cases
This commit is contained in:
parent
18000a213f
commit
8269b23e56
31
src/msg.cpp
31
src/msg.cpp
@ -299,27 +299,21 @@ int zmq::msg_t::copy (msg_t &src_)
|
|||||||
if (unlikely (rc < 0))
|
if (unlikely (rc < 0))
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
if (src_._u.base.type == type_lmsg) {
|
// The initial reference count, when a non-shared message is initially
|
||||||
|
// shared (between the original and the copy we create here).
|
||||||
|
const atomic_counter_t::integer_t initial_shared_refcnt = 2;
|
||||||
|
|
||||||
|
if (src_.is_lmsg () || src_.is_zcmsg ()) {
|
||||||
// One reference is added to shared messages. Non-shared messages
|
// One reference is added to shared messages. Non-shared messages
|
||||||
// are turned into shared messages and reference count is set to 2.
|
// are turned into shared messages.
|
||||||
if (src_._u.lmsg.flags & msg_t::shared)
|
if (src_.flags () & msg_t::shared)
|
||||||
src_._u.lmsg.content->refcnt.add (1);
|
src_.refcnt ()->add (1);
|
||||||
else {
|
else {
|
||||||
src_._u.lmsg.flags |= msg_t::shared;
|
src_.set_flags (msg_t::shared);
|
||||||
src_._u.lmsg.content->refcnt.set (2);
|
src_.refcnt ()->set (initial_shared_refcnt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (src_.is_zcmsg ()) {
|
|
||||||
// One reference is added to shared messages. Non-shared messages
|
|
||||||
// are turned into shared messages and reference count is set to 2.
|
|
||||||
if (src_._u.zclmsg.flags & msg_t::shared)
|
|
||||||
src_.refcnt ()->add (1);
|
|
||||||
else {
|
|
||||||
src_._u.zclmsg.flags |= msg_t::shared;
|
|
||||||
src_.refcnt ()->set (2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (src_._u.base.metadata != NULL)
|
if (src_._u.base.metadata != NULL)
|
||||||
src_._u.base.metadata->add_ref ();
|
src_._u.base.metadata->add_ref ();
|
||||||
|
|
||||||
@ -431,6 +425,11 @@ bool zmq::msg_t::is_cmsg () const
|
|||||||
return _u.base.type == type_cmsg;
|
return _u.base.type == type_cmsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool zmq::msg_t::is_lmsg () const
|
||||||
|
{
|
||||||
|
return _u.base.type == type_lmsg;
|
||||||
|
}
|
||||||
|
|
||||||
bool zmq::msg_t::is_zcmsg () const
|
bool zmq::msg_t::is_zcmsg () const
|
||||||
{
|
{
|
||||||
return _u.base.type == type_zclmsg;
|
return _u.base.type == type_zclmsg;
|
||||||
|
@ -117,6 +117,7 @@ class msg_t
|
|||||||
bool is_leave () const;
|
bool is_leave () const;
|
||||||
bool is_vsm () const;
|
bool is_vsm () const;
|
||||||
bool is_cmsg () const;
|
bool is_cmsg () const;
|
||||||
|
bool is_lmsg () const;
|
||||||
bool is_zcmsg () const;
|
bool is_zcmsg () const;
|
||||||
uint32_t get_routing_id ();
|
uint32_t get_routing_id ();
|
||||||
int set_routing_id (uint32_t routing_id_);
|
int set_routing_id (uint32_t routing_id_);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user