Commit Graph

1435 Commits

Author SHA1 Message Date
Ian Barber
770f84331f Allowing value 0, and moving code to get_address functions based on feedback 2012-02-11 15:09:03 +00:00
Ian Barber
91bf4944da Merge branch 'master' of https://github.com/zeromq/libzmq 2012-02-11 15:08:23 +00:00
Chuck Remes
256fa5d2b8 Merge pull request #240 from niXman/master
fix warn unused variables
2012-02-11 06:10:50 -08:00
niXman
7b7d404269 fix warn unused 2012-02-10 13:39:34 +04:00
Pieter Hintjens
40052c1251 Merge pull request #239 from skaller/master
Provide scatter/gather array I/O
2012-02-10 00:20:56 -08:00
Ian Barber
7fa14f3823 Merge branch 'master' of https://github.com/zeromq/libzmq 2012-02-08 22:06:50 +00:00
Ian Barber
7b32c9cb51 Adding ZMQ_LAST_ENDPOINT for wildcard support on TCP and IPC sockets 2012-02-08 22:06:46 +00:00
skaller
c3f7543ebe Fix uio support.
We have to use an incomplete type in the interface.
The definition of iovec is only in the implementation.
This appears to following existing practice in 0MQ.
It seems a bit flakey that zmq.h is not included in zmq.cpp,
which is normal practice to ensure the implementation matches
the specified interface. YMMV. I follow 0MQ style.
2012-02-08 13:15:47 +11:00
skaller
970a005399 Provide interface.
Also move iovec definition from implementation to interface.
Not clear to me at present if an incomplete type should
be used to avoid gratuitously including <sys/uio.h> in
the interface. The interface can't be used with this include.
2012-02-08 12:58:35 +11:00
skaller
383a49dadf Implement zmq_recvmmsg. 2012-02-08 11:45:36 +11:00
skaller
531835bba8 Implement zmq_sendv.
Posix style send multiple messages using scatter/gather array.
2012-02-08 03:20:25 +11:00
skaller
f59fff7bf2 Add check for sys/uio.h to configure script.
sys/uio.h contains the XSI vector I/O data structure.
2012-02-08 02:47:51 +11:00
Pieter Hintjens
21571cf085 Merge pull request #237 from skaller/master
Fix comments to conform to style guide.
2012-02-04 02:47:10 -08:00
skaller
81662d70be Add a test for thread safe sockets. 2012-02-04 15:13:36 +11:00
skaller
759b2e01fd Fix comments to conform to style guide. 2012-02-04 12:34:06 +11:00
Pieter Hintjens
9dab56c1df Merge pull request #235 from skaller/master
Thread Safe Sockets.
2012-02-03 12:40:05 -08:00
Pieter Hintjens
cbf6126b08 Merge pull request #234 from ianbarber/master
Semicolon missing
2012-02-03 12:39:47 -08:00
Pieter Hintjens
935f17488a Merge pull request #236 from danielnorberg/master
add missing semicolon
2012-02-03 12:39:11 -08:00
Daniel Norberg
67fd4c9a2c add missing semicolon 2012-02-03 17:28:45 +01:00
skaller
520ad3c2d7 Set and arrange propagation of thread safe sockets flag.
We use a distinct context initialisation function to specify
all sockets derived therefrom will be thread safe.

However the inheritance is done exclusively in the C interface.
This is not really correct, but it is chosen to minimise
interference with the existing C++ code, including any
construct or other calls within the C++ code base.
Semantically the C++ code should be unchanged,
physically some data structures and extra methods are
provided by they're only used from the C binding.
2012-02-04 02:17:35 +11:00
skaller
988efbc73a Thread Safe Sockets.
1. Reorganise C API socket functions to eliminate bad practice
of public functions calling other public functions. This should
be done for msg's too but hasn't been in this patch.

2. Reorganise code in C API socket functions so that the
socket is cast on one line, the C++ function called on
the next with the result retained, then the result is returned.

This makes the code much simpler to read and also allows
pre- and post- call hooks to be inserted easily.

3. Insert pre- and post- call hooks which set and release
a mutex iff the thread_safe flag is on.

4. Add the thread_safe_flag to base_socket_t initialised to
false to preserve existing semantics. Add an accessor for
the flag, add a mutex, and add lock and unlock functions.

Note: as yet no code to actually set the flag.
2012-02-04 01:41:09 +11:00
skaller
4dd6ce0639 Add mission ; character 2012-02-04 00:10:01 +11:00
Ian Barber
43b71ae4bf Fixing missing semicolon in xpub.cpp as reported on the list by Emmanuel TAUREL 2012-02-03 12:44:19 +00:00
Pieter Hintjens
dc50bf5dca Merge pull request #233 from danielnorberg/master
LIBZMQ-300: free received subscription messages
2012-02-03 02:12:09 -08:00
Daniel Norberg
79f753bf56 xpub: free received subscription messages 2012-02-03 11:04:46 +01:00
Chuck Remes
4f4d72afc6 Merge pull request #232 from chuckremes/master
mato: merge patch to close libzmq-268
2012-02-02 12:22:46 -08:00
Chuck Remes
93db782a1d Merge branch 'libzmq-268' of git://git.lucina.net/libzmq 2012-02-02 14:17:30 -06:00
Chuck Remes
adee8270dd Merge pull request #231 from chuckremes/master
mato: merge patch to close libzmq-303
2012-02-02 12:16:32 -08:00
Chuck Remes
762bcff73f Merge branch 'libzmq-303' of git://git.lucina.net/libzmq 2012-02-02 14:14:56 -06:00
Chuck Remes
e89a5f1e1a Merge pull request #230 from chuckremes/master
mato: merge patch to close libzmq-205
2012-02-02 12:14:27 -08:00
Chuck Remes
c54ad48c9b Merge branch 'libzmq-205' of git://git.lucina.net/libzmq 2012-02-02 14:09:37 -06:00
Martin Lucina
0319cb2cd1 Fix data loss for PUB/SUB and unidirectional transports (LIBZMQ-268)
With the introduction of subscription forwarding, the first message sent
on a PUB socket using a unidirectional transport (e.g. PGM) is always
lost due to the "subscribe to all" being done asynchronously.

This patch fixes the problem and also refactors the code to have a single
point where the "subscribe to all" is performed.

Signed-off-by: Martin Lucina <martin@lucina.net>
2012-02-02 13:07:48 +01:00
Pieter Hintjens
edf7db74d9 Merge pull request #227 from gimaker/smaller-mtrie
Reduce memory usage of mtrie.
2012-01-30 01:28:47 -08:00
Staffan Gimåker
e6c97c5ecc Reduce memory usage of mtrie.
Signed-off-by: Staffan Gimåker <staffan@spotify.com>
2012-01-30 09:47:33 +01:00
Martin Lucina
1925c92fe9 Merge branches 'libzmq-205' and 'libzmq-303' 2012-01-30 01:57:18 +01:00
Pieter Hintjens
7e8a839a22 Merge pull request #226 from gitfoxi/master
Support Epoll on cross-compile without runtime test.
2012-01-27 16:01:20 -08:00
m
1e5a48f521 Epoll is default for cross-compile. For regular-compile, test kernel (run) support. 2012-01-27 15:24:47 -08:00
Pieter Hintjens
281dcd2544 Merge pull request #221 from fidlej/master
Updated connector open() doc strings.
2012-01-27 14:48:43 -08:00
Pieter Hintjens
676d4f4e18 Merge pull request #222 from gimaker/trie-pruning
Fix for LIBZMQ-305
2012-01-27 14:48:17 -08:00
Pieter Hintjens
0c94cd036a Merge pull request #223 from gimaker/libzmq-310
Throw away unexpected data received by XPUB sockets, rather than asserting
2012-01-27 14:47:36 -08:00
Pieter Hintjens
95f6a07403 Merge pull request #224 from vortechs2000/master
Patch from Mikko Koppanen for #LIBZMQ-301
2012-01-27 14:47:14 -08:00
Pieter Hintjens
57f64c5079 Merge pull request #225 from gitfoxi/master
Fix build on old-ass Linux
2012-01-27 14:44:42 -08:00
m
c71375ea72 Fix: Case where system library has epoll but kernel does not support it. 2012-01-27 13:27:21 -08:00
m
c4f2240851 Fix: runtime patch for when system has clock_gettime but does not support CLOCK_MONOTONIC. 2012-01-27 12:40:56 -08:00
m
b5dbff8ed4 Fix basic_string<unsigned char> not implemented in stdc++ 3 2012-01-27 12:24:14 -08:00
m
99df984be1 Fix bad combination of gcc3, -Werror and private destructor. 2012-01-27 12:23:32 -08:00
Staffan Gimåker
bc4d1b6002 Fixed segfault bug sometimes happening when pruning the trie/mtrie.
The cause behind the segfault was next.node being deleted but count still
being non-zero.

Signed-off-by: Staffan Gimåker <staffan@spotify.com>
2012-01-26 14:12:11 +01:00
AJ Lewis
2e0c4330fa Patch from Mikko Koppanen for #LIBZMQ-301
Add the '-Ae' flag and check for gethrtime() on HPUX

Check if CLOCK_MONOTONIC defined before using it - if not, use
gethrtime() if it's available, otherwise fall back to the old
behavior.

Signed-off-by: AJ Lewis <aj.lewis@quantum.com>
2012-01-19 13:09:23 -06:00
Staffan Gimåker
36215656eb Throw away unexpected data received by XPUB sockets, rather than asserting.
Fixes LIBZMQ-310.

Signed-off-by: Staffan Gimåker <staffan@spotify.com>
2012-01-09 12:19:59 +01:00
Martin Lucina
c34a144365 Fix pgm_receiver.cpp: zmq_assert (pending_bytes == 0) (LIBZMQ-205)
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-01-04 11:48:41 +01:00