diff options
author | Martin Hurton <hurtonm@gmail.com> | 2010-03-01 10:13:26 +0100 |
---|---|---|
committer | Martin Hurton <hurtonm@gmail.com> | 2010-03-12 11:07:38 +0100 |
commit | 61ee6fae536a8000be87b5aaf271f6519a3b7d3f (patch) | |
tree | 4c088ad3c62ff35a5e5482d9127dc510e5b3aaf7 /src/zmq_engine.cpp | |
parent | 31d36104aa7caead6f299f0c5cb58a9fde7cf9b0 (diff) |
Implement flow control
This commit introduces the necessary changes necessary
for implementing flow control. None of the socket types
implements the flow control yet. The code will crash when
the flow control is enabled and the thw lwm is reached.
The following commits will add flow-control support for
individual socket types.
Diffstat (limited to 'src/zmq_engine.cpp')
-rw-r--r-- | src/zmq_engine.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/zmq_engine.cpp b/src/zmq_engine.cpp index 623ca63..8e0392c 100644 --- a/src/zmq_engine.cpp +++ b/src/zmq_engine.cpp @@ -102,19 +102,19 @@ void zmq::zmq_engine_t::in_event () // Push the data to the decoder. size_t processed = decoder.process_buffer (inpos, insize); - // Adjust the buffer. - inpos += processed; - insize -= processed; - // Stop polling for input if we got stuck. if (processed < insize) { - // This may happen if queue limits are implemented or when + // This may happen if queue limits are in effect or when // init object reads all required information from the socket // and rejects to read more data. reset_pollin (handle); } + // Adjust the buffer. + inpos += processed; + insize -= processed; + // Flush all messages the decoder may have produced. inout->flush (); @@ -162,6 +162,13 @@ void zmq::zmq_engine_t::revive () out_event (); } +void zmq::zmq_engine_t::resume_input () +{ + set_pollin (handle); + + in_event (); +} + void zmq::zmq_engine_t::add_prefix (const blob_t &identity_) { decoder.add_prefix (identity_); |