void Sink::send_one(Part& msg, bool use_copy) throw(ZmqErrorType) { if (use_copy) { Part p; p.copy(msg); send_owned(p); } else { send_owned(msg); } }
Sink& Sink::operator<< (const RawMessage& m) throw (ZmqErrorType) { if (m.deleter) { Part part(m.data.ptr, m.sz, m.deleter, m.hint); send_owned(part); } else { Part part; init_msg(m.data.cptr, m.sz, part.msg()); send_owned(part); } return *this; }
Sink& Sink::operator<< (const T& t) throw (ZmqErrorType) { MsgPtr msg(new zmq::message_t); bool binary_mode = options_ & OutOptions::BINARY_MODE; init_msg(t, *msg, binary_mode); send_owned(msg.release()); return *this; }
void Sink::relay_from( zmq::socket_t& relay_src, OccupationAccumulator acc) throw (ZmqErrorType) { while (has_more(relay_src)) { MsgPtr cur_part(new zmq::message_t); recv_msg(relay_src, *cur_part); size_t sz = cur_part->size(); acc(sz); send_owned(cur_part.release()); } }
void Sink::relay_from( zmq::socket_t& relay_src, ReceiveObserver* receive_observer) throw (ZmqErrorType) { for (bool more = has_more(relay_src); more; ) { Part cur_part; recv_msg(relay_src, cur_part.msg()); more = has_more(relay_src); if (receive_observer) { receive_observer->on_receive_part(cur_part.msg(), more); } send_owned(cur_part); } }