void zmq::stream_t::identify_peer (pipe_t *pipe_) { // Always assign routing id for raw-socket unsigned char buffer[5]; buffer[0] = 0; blob_t routing_id; if (connect_routing_id.length ()) { routing_id.set ((unsigned char *) connect_routing_id.c_str (), connect_routing_id.length ()); connect_routing_id.clear (); outpipes_t::iterator it = outpipes.find (routing_id); zmq_assert (it == outpipes.end ()); } else { put_uint32 (buffer + 1, next_integral_routing_id++); routing_id.set (buffer, sizeof buffer); memcpy (options.routing_id, routing_id.data (), routing_id.size ()); options.routing_id_size = (unsigned char) routing_id.size (); } pipe_->set_router_socket_routing_id (routing_id); // Add the record into output pipes lookup table outpipe_t outpipe = {pipe_, true}; const bool ok = outpipes.ZMQ_MAP_INSERT_OR_EMPLACE (ZMQ_MOVE (routing_id), outpipe) .second; zmq_assert (ok); }
bool zmq::stream_engine_t::init_properties (properties_t &properties_) { if (_peer_address.empty ()) return false; properties_.ZMQ_MAP_INSERT_OR_EMPLACE ( std::string (ZMQ_MSG_PROPERTY_PEER_ADDRESS), _peer_address); // Private property to support deprecated SRCFD std::ostringstream stream; stream << static_cast<int> (_s); std::string fd_string = stream.str (); properties_.ZMQ_MAP_INSERT_OR_EMPLACE (std::string ("__fd"), ZMQ_MOVE (fd_string)); return true; }
void zmq::xpub_t::send_unsubscription (zmq::mtrie_t::prefix_t data_, size_t size_, xpub_t *self_) { if (self_->options.type != ZMQ_PUB) { // Place the unsubscription to the queue of pending (un)subscriptions // to be retrieved by the user later on. blob_t unsub (size_ + 1); *unsub.data () = 0; if (size_ > 0) memcpy (unsub.data () + 1, data_, size_); self_->pending_data.ZMQ_PUSH_OR_EMPLACE_BACK (ZMQ_MOVE (unsub)); self_->pending_metadata.push_back (NULL); self_->pending_flags.push_back (0); if (self_->manual) { self_->last_pipe = NULL; self_->pending_pipes.push_back (NULL); } } }
void zmq::pipe_t::set_endpoint_pair (zmq::endpoint_uri_pair_t endpoint_pair_) { _endpoint_pair = ZMQ_MOVE (endpoint_pair_); }