summaryrefslogtreecommitdiff
path: root/src/pgm_receiver.cpp
AgeCommit message (Collapse)Author
2012-05-20Implement SP wire protocolspMartin Lucina
Implements the SP wire protocol, and infrastructure for legacy wire protocol support. Also added an XS_SERVICE_ID socket option to set the service id and renamed the XS_PROTOCOL option to XS_PATTERN_VERSION. The following pattern versions are supported: PAIR: v3 PUBSUB: v1 (legacy), v4 REQREP: v2 PIPELINE: v3 SURVEY: v2 Note that all existing pattern versions have been bumped by 1 to allow for use of legacy protocols (otherwise there would be no way to distinguish between e.g. PUBSUB v3 and PUBSUB v3 using SP). Signed-off-by: Martin Lucina <martin@lucina.net>
2012-02-16Full name of the project used in license headersMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-02-16poller_base_t renamed to io_thread_tMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-02-16io_thread_t merged with poller_base_tMartin Sustrik
The relationship of these two classes was 1:1. Thus one of them was obsolete. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-02-16Timers identified by dynamically generated handlesMartin Sustrik
Timers are not longer identified by hard-wired IDs. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-02-16cancel_timer function renamed to rm_timerMartin Sustrik
This is more consistent with adjacent add_fd and rm_fd functions. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-02-16File descriptor passed to in_event and out_eventMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-02-16Fix pgm_receiver.cpp: zmq_assert (pending_bytes == 0) (LIBZMQ-205)Martin Lucina
This patch fixes the problem described in LIBZMQ-205. The assertion itself is probably caused by previously queued POLLIN events arriving after POLLIN has been disabled on the socket. The following additional bugs have been fixed as part of debugging this problem: - pgm_receiver_t does not flush messages written to the session in all cases which can lead to a stalled reader. Add calls to session->flush () in the appropriate places. - ensure to restart polling when a pending message is flushed in activate_in (). Signed-off-by: Martin Lucina <martin@lucina.net>
2012-02-16ZeroMQ renamed to CrossroadsMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-01Copyright dates adjusted to reflect realityMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-01Miru copyrights addedMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-10-31250bpm copyrights addedMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-09-15Session class separated into socket-type-specific sessionsMartin Sustrik
This is a preliminary patch allowing for socket-type-specific functionality in the I/O thread. For example, message format can be checked asynchronously and misbehaved connections dropped straight away. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-08-17Fix the PGM support on win64Martin Sustrik
On win64 the size of file descriptor is not the same as size of int. The bug in PGM transport caused a runtime error because of this. The problem is fixed now. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-24Session classes merged into a single classMartin Sustrik
Removal of ZMQ_IDENTITY resulted in various session classes doing almost the same thing. This patch merges the classes into a single class. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-11PGM transport reconciled with subscription forwardingMartin Sustrik
As PGM is not capable of passing subscriptions upstream, subscriptions are ignored at sub side and engine subscribes for all messages on pub side. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-27Rename i_inout to i_engine_sinkMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-14FreeBSD complation error fixedMartin Sustrik
There was an error in pgm_receiver wrt strict aliasing. 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-03-02ZMQ_MAXMSGSIZE option addedMartin Sustrik
The new option allows user to guard against peers sending oversized messages. Connection to peer sending oversized message is dropped. 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-18Fix cppcheck warnings: Prefer prefix ++/-- operators for non-primitive types.Martin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-01-17Cancel pending timers when decoder for PGM stallsSteven McCoy
Otherwise the timer event can raise an input event causing assertion on unprocessed data. Signed-off-by: Steven McCoy <steven.mccoy@miru.hk>
2010-10-30Name of "GNU Lesser Public License" corrected.Martin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-10-15Timers correctly canceled by PGM engines on shutdown.Martin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-10-14To insert to associateive STL containers value_type used instead of make_pairMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-10-11Fix assertion in PGM transports on cancel_timerSteven McCoy
Signed-off-by: Steven McCoy <steven.mccoy@miru.hk>
2010-09-30more fixes to (e)pgm transportSteven McCoy
2010-09-30 * Add assertions to check for OpenPGM calls with invalid parameters.Steven McCoy
* Assertion to check that pgm_getaddrinfo is actually returning something. * Missing pgm_connect call. * Typo on TOS causing immediate abort. * Placeholder calls for timeouts whilst continuing spin loop functionality. * OpenPGM v5 now supports reference counting so remove init checks. * Duplicate UDP unicast port setting, requires one unicast and one multicast. * Incorrectly set socket rcvbuf size with sndbuf. * Replace std::lexicographical_compare of TSI's with long word integer comparisons. * pgm_socket_t::receive returns -1 on no data.
2010-08-31naming cleanup: zmq_encoder->encoder, zmq_decoder->decoderMartin Sustrik
2010-08-25engine leak fixed; pgm compilation fixedMartin Sustrik
2010-04-08issue 11 - Assertion failed: it != peers.end () (pgm_receiver.cpp:161)Martin Sustrik
2010-03-20XREP-style prefixing/trimming messages removedMartin Sustrik
2010-03-12PGM: implement flow controlMartin Hurton
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-02-16Multi-hop REQ/REP, part XI., finalise the XREQ/XREP functionalityMartin Sustrik
2010-02-13Multi-hop REQ/REP, part VIII., new blob_t type used for holding identityMartin Sustrik
2010-02-12Multi-hop REQ/REP, part I., tracerouting switched on on XREP socketMartin Sustrik
2010-02-02problem with PGM messages larger than 1 MTU fixedMartin Sustrik
2010-01-05Copyrights transferred from FastMQ to iMatixMartin Sustrik
2009-12-31fixed minor gcc warning in src/pgm_receiver.cppmalosek
2009-12-28PGM code cleanupMartin Sustrik
2009-12-23ZMQII-28: Bidirectional introduction on TCP connection establishmentMartin Sustrik
2009-12-15all news converted to nothrow variantMartin Sustrik
2009-12-15zmq_encoder/decoder are able to add/trim prefixes from messages; fair ↵Martin Sustrik
queueing and load balancing algorithms factorised into separate classes
2009-12-13debug code removed from PGM enginesMartin Sustrik
2009-12-13OpenPGM v1 support removedMartin Sustrik
2009-12-13PGM transport fixedMartin Sustrik
2009-10-060MQ compilable on winXP mingw with --with-pgm2 optionmalosek
2009-09-29detecting data loss for PGM2 receivermalosek