61 Commits

Author SHA1 Message Date
Martin Sustrik
e73c96ba30 Minor comment improvement.
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-10-18 09:11:36 +02:00
Martin Sustrik
0a03e86e95 ZMQ_LINGER socket option added.
1. ZMQ_LINGER option can be set/get
    2. options are part of own_t base class rather than being declared
       separately by individual objects
    3. Linger option is propagated with "term" command so that the
       newest value of it is used rather than the stored old one.
    4. Session sets the linger timer if needed and terminates
       as soon as it expires.
    5. Corresponding documentation updated.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-10-16 10:53:29 +02:00
Martin Sustrik
9d96e0037a Clean-up of the code related to attaching/detaching engines to sessions.
Session base class now handles the engine events exclusively. It notifies
derived session types using dedicated "attached" and "detached" events.

Couple of bugs was fixed along the way.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-10-13 10:09:46 +02:00
Martin Sustrik
954d7f743d Avoid duplicate creation of pipes for a single session
When a session is being closed down its inbound and outbound
pipe pointers are set to null. If (re) connection happens at
that time, session may try to reinistantiate the pipes which
is wrong. This patch allows session to attach pipes only once
in its lifetime.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-10-12 17:55:09 +02:00
Martin Sustrik
daf5d3273b More cleanup of session termination process.
Fix in termination of session attached to a REP socket.
Several fixes of session termination in case of disconnection.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-10-08 21:42:55 +02:00
Martin Sustrik
7a685b0f88 Clean-up of session termination process
Specifically, shutdown of child objects is initiated *before* termination
handshake with socket object.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-10-08 17:23:21 +02:00
Martin Sustrik
328c92a0a7 problem with engine being attached to session while it's being terminated fixed 2010-09-20 00:06:05 +02:00
Martin Sustrik
1f10208ad0 termination of pipe via delimiter message could stuck when no data were read from the pipe (because connection wasn't active) -- fixed 2010-09-19 08:42:19 +02:00
Martin Sustrik
5153b6368b obsolete 'active' flag removed from session_t 2010-09-19 08:39:53 +02:00
Martin Sustrik
c7b9ba3ccd reconnection process fixed when failure occurs during init phase 2010-09-17 12:58:20 +02:00
Martin Sustrik
9b8993efb4 elementary fixes to the named session 2010-08-25 15:39:21 +02:00
Martin Sustrik
0d5f3ebbda sessions created by listerner are correctly shut down 2010-08-25 15:39:21 +02:00
Martin Sustrik
43e34d0281 engine leak fixed; pgm compilation fixed 2010-08-25 15:39:20 +02:00
Martin Sustrik
76bd6e73c3 engine termination on disconnect fixed 2010-08-25 15:39:20 +02:00
Martin Sustrik
d13933bc62 I/O object hierarchy implemented 2010-08-25 15:39:20 +02:00
Martin Sustrik
f77edfce26 Destruction of session is delayed till both in & out pipes are closed 2010-08-25 15:39:20 +02:00
Martin Sustrik
05d908492d WIP: Socket migration between threads, new zmq_close() semantics
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-08-25 15:39:20 +02:00
Martin Hurton
fca2e8e8cc Add SWAP support 2010-06-21 15:06:51 +02:00
Martin Sustrik
8408ae066d LWM is computed rather than explicitly specified by user 2010-05-25 15:03:57 +02:00
Martin Sustrik
745db9c574 unitialised member in seesion_t class - fixed 2010-04-07 11:54:09 +02:00
Martin Sustrik
2f219d7c28 ZMQ_TBC renamed to ZMQ_MORE 2010-03-27 21:25:40 +01:00
Martin Sustrik
f031677100 rollback of half-processed messages in case of disconnection 2010-03-20 15:04:30 +01:00
Martin Sustrik
dfdaff5eba XREP-style prefixing/trimming messages removed 2010-03-20 10:58:59 +01:00
Martin Hurton
61ee6fae53 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.
2010-03-12 11:07:38 +01:00
Martin Sustrik
727054547f don't check for identity, if the connection is anonymous 2010-02-19 17:02:07 +01:00
Martin Sustrik
75f571c884 Multi-hop REQ/REP, part XII., generate unique identities for anonymous connections 2010-02-19 15:24:43 +01:00
Martin Sustrik
b9caa319e2 Multi-hop REQ/REP, part XI., finalise the XREQ/XREP functionality 2010-02-16 18:30:38 +01:00
Martin Sustrik
43620b3d35 Multi-hop REQ/REP, part X., optional delayed creation of pipes during connect 2010-02-14 13:34:48 +01:00
Martin Sustrik
4405250d93 Multi-hop REQ/REP, part IX., pass the peer identity as far as socket_base_t 2010-02-13 15:30:03 +01:00
Martin Sustrik
f5ce81f289 Multi-hop REQ/REP, part VIII., new blob_t type used for holding identity 2010-02-13 14:07:30 +01:00
Martin Sustrik
cdc2efe9b5 Multi-hop REQ/REP, part VII., identity-related algorithms rewritten 2010-02-13 13:07:33 +01:00
Martin Sustrik
923eacd28a Multi-hop REQ/REP, part VI., session 'name' renamed to 'peer_identity' 2010-02-13 09:09:40 +01:00
Martin Sustrik
2e78e48503 Multi-hop REQ/REP, part V., peer identity is passed from init object to session 2010-02-12 20:49:00 +01:00
Martin Sustrik
f0757c003e ZMQII-43: Race condition when writing to pipe 2010-01-21 09:58:49 +01:00
Martin Sustrik
4f6baf4dde Copyrights transferred from FastMQ to iMatix 2010-01-05 08:29:35 +01:00
Martin Sustrik
aebff623f3 ZMQII-28: Bidirectional introduction on TCP connection establishment 2009-12-23 19:37:56 +01:00
Martin Sustrik
8aa0908635 all news converted to nothrow variant 2009-12-15 23:49:55 +01:00
Martin Sustrik
2cef05d869 reconnection mechanism added to tcp transport 2009-12-15 17:49:40 +01:00
Martin Sustrik
7146ef85e9 seqnum mechanism automated 2009-12-02 21:26:47 +01:00
Martin Sustrik
9bd309bda6 annoying optimisation in 'bind' command removed 2009-12-01 18:50:54 +01:00
Martin Sustrik
8d85638f77 memory leak in message encoder fixed 2009-11-26 12:01:26 +01:00
Martin Sustrik
c41daca3da race condition in inproc transport shutdown fixed 2009-11-21 21:30:09 +01:00
Martin Sustrik
64634605b3 obsolete parameter removed from 'bind' command 2009-11-21 21:13:29 +01:00
Martin Sustrik
b15f695976 different fixes to req/rep 2009-09-21 17:20:13 +02:00
Martin Sustrik
cb1b6fe32c initial version of req/rep sockets 2009-09-21 14:39:59 +02:00
Martin Sustrik
4631fde7e3 ZMQII-8: Failure during orphan pipe deallocation 2009-09-16 14:02:43 +02:00
Martin Sustrik
9c522dccaf reconnect added to zmq_connecter 2009-09-16 11:02:18 +02:00
Martin Sustrik
5daa0dec0f ZMQII-5: Only one consumer in a process gets the message 2009-09-11 13:20:24 +02:00
Martin Sustrik
4307baf7bc python binding functional 2009-09-04 16:02:41 +02:00
Martin Sustrik
f92de9b2a9 bug during terminal shutdown fixed 2009-09-02 14:59:53 +02:00