11 zmq::v1_encoder_t::v1_encoder_t (
size_t bufsize_) :
12 encoder_base_t<v1_encoder_t> (bufsize_)
15 next_step (
NULL, 0, &v1_encoder_t::message_ready,
true);
18 zmq::v1_encoder_t::~v1_encoder_t ()
22 void zmq::v1_encoder_t::size_ready ()
25 next_step (in_progress ()->
data (), in_progress ()->
size (),
26 &v1_encoder_t::message_ready,
true);
29 void zmq::v1_encoder_t::message_ready ()
31 size_t header_size = 2;
33 size_t size = in_progress ()->size ();
39 if (in_progress ()->is_subscribe () || in_progress ()->is_cancel ())
45 if (
size < UCHAR_MAX) {
46 _tmpbuf[0] =
static_cast<unsigned char> (
size);
47 _tmpbuf[1] = (in_progress ()->flags () &
msg_t::more);
49 _tmpbuf[0] = UCHAR_MAX;
51 _tmpbuf[9] = (in_progress ()->flags () &
msg_t::more);
62 if (in_progress ()->is_subscribe ())
63 _tmpbuf[header_size++] = 1;
64 else if (in_progress ()->is_cancel ())
65 _tmpbuf[header_size++] = 0;
67 next_step (_tmpbuf, header_size, &v1_encoder_t::size_ready,
false);