1204 Commits

Author SHA1 Message Date
Martin Sustrik
6e987428d4 Precise reconnect interval randomised
Till now the random fraction of the reconnect interval was
computed based on process ID. This patch uses pseudo-random
generated (seeded by exact time of when the process was
started) to compute the interval.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-28 09:02:54 +02:00
Martin Sustrik
ce7a9a58e3 Setting TCP socket options moved to tcp_engine_t
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-28 08:06:21 +02:00
Martin Sustrik
588c728702 vtcp_connecter fixed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-27 09:29:48 +02:00
Martin Sustrik
d7319de3d0 First version of vtcp_connecter added
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-26 22:57:19 +02:00
Martin Sustrik
258e7e6794 Code cleanup
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-26 20:13:54 +02:00
Martin Sustrik
279302c5f5 Experimental VTCP listener added
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-26 18:35:40 +02:00
Martin Sustrik
9119b4fd7b TCP transport classes simplified
zmq_engine and tcp_socket merged into tcp_engine
zmq_connecter and tcp_connecter merged into tcp_connecter
zmq_listener and tcp_listener merged into tcp_listener

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-26 00:43:57 +02:00
Martin Sustrik
43b5b3444c PGM subscription forwarding fixed
PGM when using in XPUB socket has to subscribe for all the messages
as it has no idea what the subscribers are interesred in.
This generic subscribe message was malformed. Fixed.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-24 18:30:48 +02:00
Martin Sustrik
7c1dca546d Session classes merged into a single class
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-24 18:25:30 +02:00
Martin Sustrik
f716b571ba Only one polling mechanism is compiled
Till now wrappers for all the polling mechanisms available on
the given platform were compiled, although only one of them
was used. This patch compiles just the used one. This can
make libzmq binary more concise.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-24 18:13:29 +02:00
Martin Sustrik
0e71b111f4 Obsolete include in ctx.hpp removed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-24 18:09:50 +02:00
Martin Sustrik
11e21d027d semaphore_t class removed
The class was not used anywhere anymore. Removed.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-24 18:06:04 +02:00
Martin Sustrik
837451eddc Remove blob_t class
The class was used in a single place. Replaced by a local typedef.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-24 17:50:05 +02:00
Martin Sustrik
5650743d9e MSVC build brought up to date
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-22 08:35:01 +02:00
Martin Sustrik
75c4e0e62b mailbox::recv correctly passes EINTR to the caller
This bug caused signal during blocking call to assert.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-21 23:35:26 +02:00
Martin Sustrik
6b873d4ffd ROUTER socket blocks on SNDHWM
Till now the message was droppen in such case.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-21 19:12:51 +02:00
Martin Sustrik
a1e09facb2 ROUTER socket reports error when message cannot be routed
Till now, message was silently dropped if it was sent to
a non-existent peer. Now, ECANTROUTE error is returned.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-21 18:54:27 +02:00
Martin Sustrik
72a793f78a ZMQ_GENERIC renamed to ZMQ_ROUTER
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-21 18:43:50 +02:00
Pieter Hintjens
a33a275e3b Fixed issue 230
Signed-off-by: Pieter Hintjens <ph@imatix.com>
2011-07-18 12:53:55 +02:00
Martin Sustrik
7298b5742f Includes in zmq.cpp cleaned-up
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-18 11:39:38 +02:00
Steven McCoy
18d8be5e92 Fix pollin on Cygwin.
Signed-off-by: Steven McCoy <steven.mccoy@miru.hk>
Signed-off-by: Martin Sustrik <sustrik@250bom.com>
2011-07-18 10:54:53 +02:00
Martin Sustrik
f97f50c252 Signaler timeout bug on Windows fixed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-18 09:41:26 +02:00
Martin Sustrik
89daa57faa Missing files for GENERIC socket implementation added
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-18 09:28:59 +02:00
Martin Sustrik
bf78e230ad GENERIC socket type and COMMAND flag added
GENERIC allows to use 0MQ as a dumb networking framework.
It provides user with connect/disconnect notifications.
Also, each inbound message is labeled by ID of the connection
it originated from. Outbound messages should be labeled by
the ID of the connection to send them to.

To distinguish connect/disconnect notifications from common
messages, COMMAND flag was introduced.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-17 23:31:29 +02:00
Martin Sustrik
c8e8f2a24c ZMQ_IDENTITY socket option removed
This patch simplifies the whole codebase significantly,
including dropping depedency on libuuid.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-15 11:24:33 +02:00
Martin Sustrik
ba67eff167 non-immediate_connect functionality removed
It was used only by ROUTER socket. After its removal it became
obsolete.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-15 08:26:29 +02:00
Martin Sustrik
e4f98d1e10 ROUTER and DEALER sockets removed
To be replaced by new generic socket type

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-15 08:16:40 +02:00
Martin Sustrik
57c1342c68 Bug with setting options on SUB socket fixed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-12 13:05:58 +02:00
Martin Sustrik
c7542981d1 PGM transport reconciled with subscription forwarding
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-07-11 10:18:30 +02:00
Martin Sustrik
d7adc3f19a ZMQ_FILTER option removed
The filtering is now done depending on the socket type. SUB socket
filters the messages (end-to-end filtering) while XSUB relies
on upstream nodes to do (imprefect) filtering.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-11 09:57:59 +02:00
Martin Sustrik
7e1251178b Experimental code from zmq_init_t removed.
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-11 07:26:45 +02:00
Martin Sustrik
52eaf600e5 Drop outbound messages in XREP socket when SNDHWM is reached
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-09 09:40:40 +02:00
Martin Sustrik
aa2150c25c VSM data are aligned to 32/64 bit boundary
Till now the VSM buffer was aligned to 16 bit boundary
which could possibly cause problems on RISC architectures
when accessing the message data in unsafe manner.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-08 18:12:59 +02:00
Martin Sustrik
8fb9d3c6d0 Merge branch 'master' of github.com:zeromq/libzmq 2011-07-03 15:33:25 +02:00
Martin Sustrik
6ae1be1a12 Race condition in eventfd signaler fixed
recv function on eventfd signaler could accidentally
grab two signals instead of one. Fixed.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-03 15:30:31 +02:00
Martin Sustrik
9a9a0cf410 eventfd implementation of the signaler
Eventfd (on Linux) is more efficient that socketpair
for passing simple signals.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-03 15:13:57 +02:00
Martin Sustrik
c687c7e61e Fix MSVC build
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-03 14:11:33 +02:00
Martin Sustrik
7c0c798120 Command are now stored in ypipes instead of in socketpairs
Storing commands in OS socket buffers caused whole lot of
problems when free space in the buffer ran out. This patch
stores commands in ypipes instead and uses socketpair just
to signal the other thread, ie. at most one byte is stored
in the socketpair at any single instant.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-03 13:33:45 +02:00
Martin Sustrik
de3838403b Testing for errors from pthread_* functions fixed
pthread_* functions return the error number rather than
setting errno. This was not accounter for till now.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-30 00:05:03 +02:00
Andrew Thompson
4f4cc73280 Use strrchr to ensure we split off the last colon for the service port
IPv6 addresses have colons and will produce invalid data for the getaddrinfo lookup.

Signed-off-by: Andrew Thompson <andy@fud.org.nz>
2011-06-29 23:48:19 +02:00
Martin Sustrik
f8bf3a4cef Rename i_inout to i_engine_sink
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-27 18:16:53 +02:00
Martin Sustrik
770d0bc77c Fix MSVC build
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-23 08:51:48 +02:00
Martin Sustrik
d1373792f7 Outstanding requests dropped when requester dies (issue 190)
So far the requests in req/rep pattern were delivered to and processed
by worker even though the original requester was dead. Thus,
the worker processing replies with noone to deliver results to.
This optimisation drops requests in two situations:

1. Queued inbound requests in XREP socket when peer disconnects.
2. Queued outbound requests in XREQ when socket is closed.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-23 07:57:47 +02:00
Martin Sustrik
12532c7940 O(1) fair-queueing in XREP implemented
Up to now the complexity of fair-queueing in XREP was O(n).

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-22 16:51:40 +02:00
Martin Sustrik
ec81f8fb25 New wire format for REQ/REP pattern
This patch introduces two changes:
1. 32-bit ID is used to identify the peer instead of UUID
2. REQ socket seeds the label stack with unique 32-bit request ID
   It also drops any replies with non-matching request ID

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-22 11:02:16 +02:00
Martin Sustrik
10a93bb79f Unspecified error code from mailbox_t::recv on Win32 fixed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-21 13:44:44 +02:00
Martin Sustrik
a28928fe37 Introduce ZMQ_ROUTER and ZMQ_DEALER sockets
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-20 13:36:18 +02:00
Martin Sustrik
ab99975ad4 LABEL flag added to the wire format
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-20 11:33:54 +02:00
Martin Sustrik
c80908c469 Bug fixed in pipe termination
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-20 08:21:00 +02:00
Fabien Ninoles
7572fee979 Optimise block/non-block switching in mailbox_t
For the platforms that don't support MSG_DONTWAIT the reader
socket in mailbox_t was kept in non-blocking state and flipped
to blocking state and back when blocking read was requested.
Now, the state is preserved between calls and flipped only
if different type of operation (block vs. non-block) is
requested.

Signed-off-by: Fabien Ninoles <fabien@tzone.org>
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-20 08:14:21 +02:00