summaryrefslogtreecommitdiff
path: root/src/pipe.cpp
diff options
context:
space:
mode:
authorMartin Sustrik <sustrik@250bpm.com>2010-05-19 06:31:57 +0200
committerMartin Sustrik <sustrik@250bpm.com>2010-05-19 06:31:57 +0200
commit89783c37d2b8a7b5519eab7922b460449aa0bf3f (patch)
tree8b326b382793d4b8da4134bfde58393532fd015e /src/pipe.cpp
parentf40ce4e500d32b4240395e09e0ce3359734f0189 (diff)
incomplete messages can be stored in ypipe
Diffstat (limited to 'src/pipe.cpp')
-rw-r--r--src/pipe.cpp10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/pipe.cpp b/src/pipe.cpp
index 61ddf38..f592f8c 100644
--- a/src/pipe.cpp
+++ b/src/pipe.cpp
@@ -162,7 +162,7 @@ bool zmq::writer_t::write (zmq_msg_t *msg_)
return false;
}
- pipe->write (*msg_);
+ pipe->write (*msg_, msg_->flags & ZMQ_MSG_MORE);
if (!(msg_->flags & ZMQ_MSG_MORE))
msgs_written++;
return true;
@@ -172,11 +172,9 @@ void zmq::writer_t::rollback ()
{
zmq_msg_t msg;
+ // Remove all incomplete messages from the pipe.
while (pipe->unwrite (&msg)) {
- if (!(msg.flags & ZMQ_MSG_MORE)) {
- pipe->write (msg);
- break;
- }
+ zmq_assert (msg.flags & ZMQ_MSG_MORE);
zmq_msg_close (&msg);
msgs_written--;
}
@@ -206,7 +204,7 @@ void zmq::writer_t::term ()
const unsigned char *offset = 0;
msg.content = (void*) (offset + ZMQ_DELIMITER);
msg.flags = 0;
- pipe->write (msg);
+ pipe->write (msg, false);
pipe->flush ();
}