Martin Sustrik
43e34d0281
engine leak fixed; pgm compilation fixed
2010-08-25 15:39:20 +02:00
Martin Sustrik
45f83d78a5
one more dezombification bug fixed
2010-08-25 15:39:20 +02:00
Martin Sustrik
936dbf956b
dezombification procedure 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 Lucina
ee1f1af009
zmq_poll(): Fix some corner cases
...
Trying to optimize out the case where items_[i]. events is 0 would
result in a bogus pollfds[i]. Similarly in the select()-based impl,
while not strictly necessary it's better to get ZMQ_FD even if
events is 0 since that detects ETERM and friends.
2010-08-25 15:39:20 +02:00
Martin Lucina
a85d1e51bf
zmq_poll(): Rewrite to use ZMQ_FD/ZMQ_EVENTS pt2
...
Rewrite the select()-based zmq_poll() implementation to use
ZMQ_FD and ZMQ_EVENTS.
Also fix some corner cases: We should not pollute revents with
unrequested events, and we don't need to poll on ZMQ_FD at all
if a pollitem with no events set was passed in.
2010-08-25 15:39:20 +02:00
Martin Lucina
6b1ca2cb1e
Fix whitespace
...
Dunno where those <TAB>s came from...
2010-08-25 15:39:20 +02:00
Martin Lucina
cd12508418
zmq_poll(): Rewrite to use ZMQ_FD/ZMQ_EVENTS pt1
...
Rewrite zmq_poll() to use ZMQ_FD and ZMQ_EVENTS introduced on the
wip-shutdown branch. Only do the poll()-based version of zmq_poll (), the
select()-based version will not compile at the moment.
2010-08-25 15:39:20 +02:00
Martin Sustrik
eb7b8a413a
REP socket layered on top of XREP socket
2010-08-25 15:39:20 +02:00
Martin Sustrik
3e97c0fef4
REQ socket implementation is layered on top of XREQ
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 Lucina
b66dd7afd2
zmq_stopwatch_stop: Don't return EFAULT
...
Function returning unsigned long int cannot return (-1)
2010-08-25 09:50:45 +02:00
Pieter Hintjens
5be54b9120
46 - Devices vulnerable to invalid messages
...
http://github.com/zeromq/zeromq2/issues#issue/46
Invalid messages are now discarded silently, instead of causing an assertion
failure.
2010-08-11 17:05:19 +02:00
Pieter Hintjens
b6cdd369e3
Added error checking (EFAULT) for null arguments
...
* Fixed zmq_term, zmq_socket, zmq_close, zmq_setsockopt,
* zmq_getsockopt, zmq_bind, zmq_connect, zmq_send,
* zmq_recv, zmq_poll, zmq_device, zmq_stopwatch_stop
* Updated Reference Manual for these methods
2010-08-08 11:43:32 +02:00
Pieter Hintjens
677b3d906a
Added not-null assertions on pointer arguments in C API functions
...
* zmq_term
* zmq_socket
* zmq_close
* zmq_setsockopt
* zmq_getsockopt
* zmq_bind
* zmq_connect
* zmq_send
* zmq_recv
* zmq_poll
* zmq_device
* zmq_stopwatch_stop
2010-08-07 20:55:07 +02:00
Martin Lucina
6d35e82db4
Fix uninitialized use of nbytes in signaler fix
2010-08-06 12:00:57 +02:00
Martin Lucina
9ac2ff449c
zmq::signaler_t: Restart syscalls on EINTR
...
This patch restarts the send() or recv() inside zmq::signaler_t if the call fails
due to EINTR.
2010-08-05 23:40:30 +02:00
Pieter Hintjens
11a410b658
Renamed ZMQ_UPSTREAM to ZMQ_PULL, and ZMQ_DOWNSTREAM to ZMQ_PUSH. Left the old
...
definitions as aliases, to be removed in release 3.0. Also renamed the source
files implementing these two socket types. This change does not break existing
applications nor bindings, but allows us to fix the documentation and user guide
now, rather than keeping the old (confusing) names.
2010-08-04 14:38:56 +02:00
Martin Lucina
544b36da68
XREQ: Correct behaviour on hitting ZMQ_HWM
...
This reverts part of commit 84e0c7991a9b316ed571533abc628cc1175750a3 to get
correct ZMQ_HWM semantics with XREQ sockets:
When sending a message to an XREQ socket, the underlying pipe is selected in
a round-robin fashion. If an underlying pipe is full it is skipped. If there
are no underlying pipes, or all underlying pipes are full then zmq_send()
shall block or return EAGAIN, depending on whether or not the call is blocking.
Messages are never dropped.
2010-07-30 16:49:06 +02:00
Martin Hurton
10533a560b
pipe: check_read() should check for message delimiter
2010-07-24 17:33:54 +02:00
Martin Hurton
e1c596b37e
Make sure lwm > 0 when hwm > 0
2010-07-24 17:19:47 +02:00
Martin Lucina
5b1a6a4bea
Issue 42 - getaddrinfo() fails
2010-07-21 17:33:40 +02:00
Martin Sustrik
aedf3f808b
EHOSTUNREACH is a valid return value from recv()
2010-07-19 08:38:24 +02:00
Martin Sustrik
269904361b
minor comment clarification
2010-07-13 11:46:56 +02:00
Martin Sustrik
da49e5a4dd
devices exit in case of context termination
2010-07-13 07:57:29 +02:00
Martin Hurton
ca057c7db8
Fix identity generation for transient inproc connections
2010-07-10 23:02:50 +02:00
Martin Hurton
1f61c87ac5
issue 40 - nbytes != -1 (tcp_socket.cpp:216)
2010-07-07 17:15:32 +02:00
Martin Hurton
fd707fedc5
issue 38 - Assertion failed: fetched (xrep.cpp:196)
2010-07-07 12:41:53 +02:00
Pieter Hintjens
0ab6532419
Prevent socket reuse by second bind, on win32
2010-06-29 21:08:41 +02:00
Martin Sustrik
79a3d07c85
MSVC build fixed
2010-06-29 07:45:11 +02:00
Martin Sustrik
ba91644fdb
msg_store added to MSVC build
2010-06-26 20:11:40 +02:00
Pieter Hintjens
1dda8a2aaa
Used more expressive variable names
2010-06-25 18:35:42 +02:00
Martin Hurton
fca2e8e8cc
Add SWAP support
2010-06-21 15:06:51 +02:00
Martin Hurton
10c28c1fc2
Revive reader on pipe termination
2010-06-19 20:51:42 +02:00
Martin Hurton
2c3913bb19
fix double free error in PAIR socket
2010-06-19 19:50:55 +02:00
Martin Sustrik
cff7ba2315
Windows build fixed
2010-06-17 17:09:51 +02:00
Martin Sustrik
7f01e9970d
stopwatch returned to libzmq
2010-06-17 16:51:53 +02:00
Martin Hurton
4777fe4010
pipe: fix bug in rollback() method
...
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-06-17 13:00:30 +02:00
Martin Sustrik
9151de3895
generate identity for transient inproc connections
2010-06-17 11:01:18 +02:00
Brian Buchanan
ac90b7e0ba
issue 35 - ZMQ_RCVMORE sometimes erroneously returns false
2010-06-11 08:03:34 +02:00
Martin Sustrik
5ee355d188
if connect asserts, exact error is reported
2010-06-11 07:02:36 +02:00
Martin Sustrik
27877d73ea
EHOSTUNREACH is acceptable outcome from connect
2010-06-11 06:55:30 +02:00
Piotr Trojanek
c818b14bbd
clearing thread info structure
2010-06-10 12:57:42 +02:00
Martin Sustrik
74a3907be2
couple of ICC warnings fixed
2010-06-10 12:36:27 +02:00
Martin Sustrik
76e0153d4f
issue 33 - missing virtual destructors
2010-06-10 07:21:05 +02:00
Martin Sustrik
d329c55da9
issue 31 - Assertion failed: err == ECONNREFUSED || err == ETIMEDOUT (tcp_connecter.cpp:296)
2010-06-10 07:12:00 +02:00
Martin Sustrik
604f7475ec
issue 32 - poll_t poller broken
2010-06-09 17:49:08 +02:00
Piotr Trojanek
751b60a18d
extra ';' inside a struct or union -- clang warnings fixed
2010-06-09 17:06:32 +02:00
Martin Sustrik
240fc33f65
minor comment clarification
2010-06-07 20:23:48 +02:00
Martin Lucina
94dfe1368a
Fix MINGW build
...
Mingw seems to define NOMINMAX, so don't redefine it if already defined
2010-06-04 17:02:16 +02:00
Martin Sustrik
cf048bb1f8
platform.hpp for MSVC contains only very basic stuff
2010-06-04 16:29:36 +02:00
Martin Lucina
621d7415b3
Fix Solaris/NetBSD breakage in atomic_ptr.hpp
2010-06-04 15:35:14 +02:00
Martin Sustrik
67ca7dcbe6
obsolete API elements removed - this commit breaks backward compatibility
2010-06-04 15:24:06 +02:00
Martin Lucina
606c77368c
Move perf helper functions to perf/helpers.cpp
2010-06-04 14:48:49 +02:00
Martin Sustrik
be6019abd1
issue 28. - SNDMORE/ RCVMORE is dropping every other message
2010-05-31 09:28:36 +02:00
Martin Sustrik
2e9be56a40
memory leak in REQ socket fixed
2010-05-31 06:17:58 +02:00
Martin Sustrik
04fcd4d55b
memory leak in REP socket fixed
2010-05-31 06:11:20 +02:00
Martin Sustrik
8408ae066d
LWM is computed rather than explicitly specified by user
2010-05-25 15:03:57 +02:00
Martin Sustrik
89783c37d2
incomplete messages can be stored in ypipe
2010-05-19 06:31:57 +02:00
Steven McCoy
6705a3d580
some more sanity checks in pgm_socket
2010-05-13 12:43:58 +02:00
Martin Sustrik
ff9d398555
Merge branch 'master' of git@github.com:sustrik/zeromq2
2010-05-13 12:41:39 +02:00
Steven McCoy
56262d7ba7
some more sanity checks in pgm_socket
2010-05-13 12:41:20 +02:00
Martin Lucina
f6c1c97242
Merge branch 'master' of github.com:sustrik/zeromq2
2010-05-12 16:49:49 +02:00
Martin Lucina
52ef3f3f2c
Revert commit 7cb076e, atomic ops cleanup
...
Reverted to using atomic.h on NetBSD
Removed GNU builtins (see http://lists.zeromq.org/pipermail/zeromq-dev/2010-May/003485.html )
Removed SPARC native atomic ops as they are untested and have been commented out for years
Add "memory" to asm clobber for X86 atomic_counter::sub()
2010-05-12 16:46:59 +02:00
Martin Sustrik
8e5ac100c9
Merge branch 'master' of git@github.com:sustrik/zeromq2
2010-05-12 12:45:38 +02:00
Brett Cameron
714a8d50a0
fixes for OpenVMS
2010-05-12 12:45:12 +02:00
Martin Lucina
9d16a415cb
OpenPGM build flags cleanup
...
Removed various exotic -Wxxx flags in the OpenPGM build to get us to what is actually
required and reasonable; added in -fno-strict-aliasing since OpenPGM generates lots
of warnings about dereferencing typed-punned pointers; removed the OpenPGM extra flags
from libzmq_la_CXXFLAGS and left them only in libzmq_la_CFLAGS so that our code
is not built with the OpenPGM extra flags.
2010-05-10 16:32:10 +02:00
Martin Lucina
2cf9f04a46
Update OpenPGM to version 2.1.26
2010-05-10 16:26:09 +02:00
Martin Sustrik
a25414e55c
Fix in zmq_poll (Windows version)
2010-05-09 16:59:15 +02:00
Martin Sustrik
4a3b857c4c
commands not processed immediatelly in some scenarios; fixed
2010-05-07 11:08:50 +02:00
Martin Sustrik
f60d891b23
Issue 23. zmq_init() crashes on illegal numbers
2010-05-06 10:33:01 +02:00
Martin Sustrik
835e893e54
dispatcher_t class renamed to ctx_t
2010-05-05 14:24:54 +02:00
Martin Sustrik
10f5334f28
Merge branch 'master' of git@github.com:sustrik/zeromq2
2010-05-05 13:03:56 +02:00
Martin Sustrik
44dd005ff0
number of application threads to use 0MQ sockets is unlimited; app_threads parameter in zmq_init is unused and obsolete
2010-05-05 13:03:26 +02:00
Martin Sustrik
3f5465ada1
Windows port fixed
2010-05-04 10:37:10 +02:00
Martin Sustrik
235ed3a3dc
signaler transports commands per se rather than one-bit signals
2010-05-04 10:22:16 +02:00
Martin Sustrik
8b9bd05726
thread ID and dispatcher made private in object_t
2010-05-03 16:21:36 +02:00
Martin Sustrik
84e0c7991a
queue device fixed
2010-05-02 20:59:07 +02:00
Martin Sustrik
4a6bac1dea
Merge branch 'master' of git@github.com:sustrik/zeromq2
2010-04-30 04:54:10 +02:00
Martin Sustrik
acfd0f8ca2
prefix in XREP recv'd message misses MORE flag
2010-04-30 04:53:41 +02:00
Martin Sustrik
beb4da3c28
windows port fixed
2010-04-29 20:53:46 +02:00
Martin Sustrik
ae93ed318a
signaler rewritten in such a way that any number (>64) of threads can be used
2010-04-29 20:34:48 +02:00
Martin Sustrik
1ffc6dd41f
eventfd-style signaling removed
2010-04-29 18:03:54 +02:00
Martin Sustrik
37128b7b1a
fd_signaler_t renamed to signaler_t
2010-04-29 17:31:57 +02:00
Martin Sustrik
c193fd1466
lock-free polling removed; ZMQ_POLL flag removed
2010-04-29 17:20:23 +02:00
Steven McCoy
7cb076e56a
Defer NetBSD atomic ops to GCC builtins. Revert Sun atomic ops #define.
2010-04-29 11:36:13 +02:00
Martin Sustrik
ad6fa9d0d4
initial version of multi-hop REQ/REP
2010-04-27 17:36:00 +02:00
Martin Sustrik
beffee92a8
P2P renamed to PAIR
2010-04-26 16:51:05 +02:00
Martin Sustrik
1c33941be9
Merge branch 'master' of git@github.com:sustrik/zeromq2
2010-04-15 07:32:49 +02:00
Martin Sustrik
ea18d30c20
atomic_ptr fix of Win64
2010-04-15 07:32:25 +02:00
Martin Lucina
0024d29076
Build fixes for cross compiling and Win32
2010-04-12 16:49:13 +02:00
Martin Sustrik
7668e7976d
zmq_poll returns ETERM in case of context termination
2010-04-12 09:57:34 +02:00
Martin Sustrik
fba28c7c0c
issue 1 - Change zmq_term semantics
2010-04-11 16:36:27 +02:00
Martin Sustrik
00cf3ceb8d
multi-part message functionality available via ZMQ_SNDMORE and ZMQ_RCVMORE
2010-04-11 10:26:47 +02:00
Martin Sustrik
c214a24f06
fix for Sun C++ 5.8
2010-04-10 16:27:07 +02:00
Martin Lucina
770aedbd09
Build fixes for Solaris and non-GNU compilers
...
Compiling C++ code with -D_POSIX_SOURCE on Solaris is unsupported, so remove it.
Isolate GCC-isms inside checks that we are actually using GCC/G++.
Only check for -lstdc++ when on GCC and doing static linking.
2010-04-10 16:18:34 +02:00
Martin Sustrik
716f4ac871
zmq_getsockopt function added
2010-04-09 13:04:15 +02:00
Martin Sustrik
027bb1d2a7
issue 10 - zmq_strerror problem on Windows
2010-04-08 19:20:42 +02:00