summaryrefslogtreecommitdiff
path: root/src/pipe.cpp
AgeCommit message (Collapse)Author
2011-06-22O(1) fair-queueing in XREP implementedMartin Sustrik
Up to now the complexity of fair-queueing in XREP was O(n). Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-20LABEL flag added to the wire formatMartin Sustrik
So far there was no distinction between message parts used by 0MQ and message parts used by user. Now, the message parts used by 0MQ are marked as 'LABEL'. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-20Bug fixed in pipe terminationMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-19Race condition in pipe_t fixed.Martin Sustrik
pipe_t now correctly drops pointer to the underlying pipe when sending pipe_term_ack command. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-05-31Session termination induced by socket fixedMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-05-30Patches from sub-forward branch incorporatedMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-05-26Pending messages are delivered even if connection doesn't exist yetMartin Sustrik
Bug in previous refactoring fixed. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-05-25All pipe termination code moved to pipe_tMartin Sustrik
Till now the code was spread over mutliple locations. Additionally, the code was made more formally correct, with explicit pipe state machine etc. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-05-23Move the pipe termination code to socket_base_tMartin Sustrik
So far, the pipe termination code was spread among socket type classes, fair queuer, load balancer, etc. This patch moves all the associated logic to a single place. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-05-22Introduces bi-directional pipesMartin Sustrik
So far, there was a pair of unidirectional pipes between a socket and a session (or an inproc peer). This resulted in complex problems with half-closed states and tracking which inpipe corresponds to which outpipe. This patch doesn't add any functionality in itself, but is essential for further work on features like subscription forwarding. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-21Message-related functionality factored out into msg_t class.Martin Sustrik
This patch addresses serveral issues: 1. It gathers message related functionality scattered over whole codebase into a single class. 2. It makes zmq_msg_t an opaque datatype. Internals of the class don't pollute zmq.h header file. 3. zmq_msg_t size decreases from 48 to 32 bytes. That saves ~33% of memory in scenarios with large amount of small messages. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-24ZMQ_HWM type changed to intMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-24SWAP functionality removedMartin Sustrik
On-disk storage should be implemented in devices rather than in 0MQ core. 0MQ is a networking library and there's no point in storing network buffers on disk. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-02The copyrights in file headers updated.Martin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-02-22Added explicit error message in case of memory exhaustionMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-01-07Fix pipe writer terminationDhammika Pathirana
Signed-off-by: Dhammika Pathirana <dhammika@gmail.com>
2010-12-15Fixes assertion on pipe.cpp:237 when swap fills up.Mikko Koppanen
Fixes swap::full () functionality Signed-off-by: Mikko Koppanen <mkoppanen@php.net>
2010-10-30Name of "GNU Lesser Public License" corrected.Martin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-10-08Clean-up of session termination processMartin Sustrik
Specifically, shutdown of child objects is initiated *before* termination handshake with socket object. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-09-13zmq::writer_t: Add missing test for swapMartin Lucina
2010-08-28msg_store_t renamed to swap_tMartin Sustrik
2010-08-28refactoring of pipe/swap interactionMartin Sustrik
2010-08-28terminology unified: revive->activateMartin Sustrik
2010-08-28bug in pipe deactivation fixedMartin Sustrik
2010-08-25REQ socket implementation is layered on top of XREQMartin Sustrik
2010-08-25Destruction of session is delayed till both in & out pipes are closedMartin Sustrik
2010-08-25WIP: Socket migration between threads, new zmq_close() semanticsMartin Sustrik
Sockets may now be migrated between OS threads; sockets may not be used by more than one thread at any time. To migrate a socket to another thread the caller must ensure that a full memory barrier is called before using the socket from the target thread. The new zmq_close() semantics implement the behaviour discussed at: http://lists.zeromq.org/pipermail/zeromq-dev/2010-July/004244.html Specifically, zmq_close() is now deterministic and while it still returns immediately, it does not discard any data that may still be queued for sending. Further, zmq_term() will now block until all outstanding data has been sent. TODO: Many bugs have been introduced, needs testing. Further, SO_LINGER or an equivalent mechanism (possibly a configurable timeout to zmq_term()) needs to be implemented.
2010-07-24pipe: check_read() should check for message delimiterMartin Hurton
2010-07-24Make sure lwm > 0 when hwm > 0Martin Hurton
2010-06-21Add SWAP supportMartin Hurton
2010-06-19Revive reader on pipe terminationMartin Hurton
2010-06-17pipe: fix bug in rollback() methodMartin Hurton
The msgs_written variable keeps track how many complete messages have been written so far. The rollback operation drops all fragments of the last incomplete message so it shouldn't change this variable at all.
2010-05-25LWM is computed rather than explicitly specified by userMartin Sustrik
2010-05-19incomplete messages can be stored in ypipeMartin Sustrik
2010-03-27ZMQ_TBC renamed to ZMQ_MOREMartin Sustrik
2010-03-27multi-part messages work with PUB/SUBMartin Sustrik
2010-03-13pipe_t::rollback removes only unfinished message from the pipe rather than ↵Martin Sustrik
all unflushed messages
2010-03-12Implement flow controlMartin Hurton
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.
2010-03-11Restructure language bindingsMartin Lucina
C and C++ headers moved from bindings/ to include/, bindings/ removed --with-c and --with-cpp options to configure removed, C and C++ now built and installed by default
2010-03-09message flags added to zmq_msg_t strcutureMartin Sustrik
2010-03-09rollback functionality added to pipeMartin Sustrik
2010-01-05Copyrights transferred from FastMQ to iMatixMartin Sustrik
2009-12-01minor code beautificationMartin Sustrik
2009-12-01MSVC warnings fixedunknown
2009-11-19ZMQII-24: SEGFAULT when anonymous session disconnectsMartin Sustrik
2009-09-30checking for available messages added to ypipe/pipeMartin Sustrik
2009-09-23ZMQII-16: Change "struct zmq_msg_t" to "zmq_msg_t" in C bindingMartin Sustrik
2009-09-21initial version of req/rep socketsMartin Sustrik
2009-09-16c and cpp directories moved into bindings directorymalosek
2009-09-11asserts for invalid indexes in pipe reader & writer addedMartin Sustrik