summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-04-20Clock instance removed from surveyor_tMartin Sustrik
SURVEYOR socket now uses clock instance from socket_base_t for measuring survey timeout. This allows for better performance in tight xs_recv() loops. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-18Adam Guthrie added to the AUTHORS fileMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-18xs_zmq: initialize size in zmq_getsockoptAdam Guthrie
This fixes a critical bug in zmq_getsockopt.
2012-04-18Improve efficiency of time measurement in tight loopsMartin Sustrik
This patch instantiate a clock_t instance for each XS socket. Thus, it is shared between subsequent calls to xs_recv (and xs_send). That in turn significantly limits the number of invocations of getimeofday (or similar) when timeouts are used and recv/send is called in a tight loop. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-18Test that old surveys are discardedMartin Sustrik
Improvement to the "survey" test Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-18Discard pending surveys when (X)SURVEYOR socket disappearsMartin Sustrik
This is an optimisation. The idea is that when surveyor disappears it makes no sense to process any surveys it have sent. There are two cases handled: - when (X)SURVEYOR socket is closed any unsent outbound messages are discarded - when (X)RESPONDENT detects that its peer have disconnected it drops any unprocessed messages that have been received from it Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-17Use AC_USE_SYSTEM_EXTENSIONS instead of OS-specific definesGabriele Svelto
Signed-off-by: Gabriele Svelto <gabriele.svelto@gmail.com>
2012-04-17XS_SURVEY_TIMEOUT socket option added.Martin Sustrik
It can be used to timeout the survey. Value is in milliseconds and -1 means infinite (default). Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-17"Survey" pattern implementedMartin Sustrik
Survey pattern is "multicast with reply". There are two roles: surveyor and respondent. Surveyor publishes a survey which gets delivered to all connected respondents. Each repondent can send a response to the survey. All the responses are delivered to the original surveyor. Once the surveyor decides that the survey is over (e.g. deadline was reached) it can send initiate survey. Late responses from old surveys are automatically discarded by the surveyor socket. Socket types: SURVEYOR, XSURVEYOR, RESPONDENT, XRESPONDENT Patch also includes a test program with surveoyr, two respondents and an intermediary device. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-17Got rid of <> characters in URLs.Gonzalo Diethelm
2012-04-16Few trivial fixes to REQ/REP pattern.Martin Sustrik
- couple of comments adjusted - empty 'stack delimiter' message correctly closed - non-reachable function xrep_t::rollback() removed Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-16Automotic loading of plugins (Linux)Martin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-16Define the XS_PREFIX_PATH macro with the installation prefixGabriele Svelto
Signed-off-by: Gabriele Svelto <gabriele.svelto@gmail.com>
2012-04-16Automatic loading of plugins on WindowsMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-16Improve POSIX threads detection and configurationGabriele Svelto
POSIX threads support is checked using the AX_PTHREAD macro, this provides improved support and coverage of different platforms. The M4 macros are also moved into the M4 directory. Signed-off-by: Gabriele Svelto <gabriele.svelto@gmail.com>
2012-04-16Honour --with-poller option for synchronous pollingMartin Sustrik
While --with-poller configure option could be used for selecting the polling mechanism for I/O threads (asynchronous), synchronous polling (xs_poll, signaler_t) was not affected by the option. This patch uses selected mechanism is it is either 'select' or 'poll'. Othrwise it chooses the mechanism according to the platform. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-15Fixed a warning in the timeo testGabriele Svelto
Fixed a couple of mixed signed/unsigned comparison which in conjunction with -Werror prevented compilation of the test. Signed-off-by: Gabriele Svelto <gabriele.svelto@gmail.com>
2012-04-15thread_t rewritten in C styleMartin Sustrik
thread_t is one of the classes where C++ syntax creates more problems then it solves. This patch converts it into simple C-style pseudo-class. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-15Filters can transform user subscriptions to wire subscriptionMartin Sustrik
Till now the subscription, as specified by the user, was send upstream. This patch allows SUB-side filter to transform the user subscription into wire subscription. For example, only a has can be sent upstream instead of a perfect subscription. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-15Minor improvement to error reportingMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-15Report EMFILE/ENFILE from xs_socket()Martin Sustrik
This patch propoagates the error from signaler and mailbox initialisation up the stack. To achieve this signaler and mailbox classes were re-written is C-like syntax. Finally, shutdown_stress test now ignores EMFILE/ENFILE errors. Thus, the tests should pass even on OSX which sets the max number of file descriptors pretty low by default. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-14Separate subscription forwarding from SUB-side filteringMartin Sustrik
- subscription forwarding is handled by XSUB socket - filtering is handled by SUB sockets - subscriptions are decoupled from filter engines - filter doesn't have to be able to enumarate the subscriptions (no sf_enumerate function) Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-14Define _GNU_SOURCE in addition to the __BSD_VISIBLE on freebsd-like hostsAndrew W. Nosenko
Define _GNU_SOURCE in addition to the __BSD_VISIBLE on the freebsd-like hosts. It made in hope to cover cases and obtain the full power of underlying kernel on "hybrid" systems like Debian GNU/kFreeBSD, when GLibc (or derived) library lives on top of FreeBSD kernel. On the "real" FreeBSD it only enables getline(3), and therefore, should not hurt. * configure.ac: Define _GNU_SOURCE in addition to the __BSD_VISIBLE for cover GLibc (or derived) on top of FreeBSD kernel cases, as it is in Debian GNU/kFreeBSD case.
2012-04-14Check for SO_NOSIGPIPE availability instead of OS nameAndrew W. Nosenko
* src/stream_engine.cpp (stream_engine_t::stream_engine_t): Use #ifdef SO_NOSIGPIPE instead of #if defined XS_HAVE_OSX || defined XS_HAVE_FREEBSD
2012-04-14If available, use MSG_NOSIGNAL for send()Martin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-14Checking for correct timeout in the test suite improvedMartin Sustrik
This patch introduces 1/2 second tolerance for the timeouts in the tests. This will hopefully make tests not fail even on slow or heavily loaded machines. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-14Set options on new sockets in systematic mannerMartin Sustrik
This patch consolidates the up-to-now scattered code that sets different options on newly created sockets. There are open_socket and open_tcp_socket functions that do the tuning automatically. In case the socket is not created but got from elsewhere (such as accept() call) there are tune_socket and tune_tcp_socket functions that will do the tuning. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-12Memory allocation bug fixed in prefix filterMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-12Accumulated cruft removed from prefix_filter_tMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-11HANDLE_FLAG_INHERIT is set to 0 on internal socketsMartin Sustrik
On Windows, HANDLE_FLAG_INHERIT is equivalent to O_CLOEXEC on UNIX. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-11ETIMEDOUT is a valid error code here. Fixes intermittent assertion failure ↵Mikko Koppanen
on laggy networks
2012-04-10Fix a warning with SunStudio compilerMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-09Fix fd/handle conversion in /dev/poll poller codeGabriele Svelto
Signed-off-by: Gabriele Svelto <gabriele.svelto@gmail.com>
2012-04-09Fix /dev/poll detection on SolarisGabriele Svelto
The /dev/poll facility wasn't correctly recognized because of a missing header. The check was fixed and overhauled in the process. Signed-off-by: Gabriele Svelto <gabriele.svelto@gmail.com>
2012-04-08Set CLOEXEC flag on fds used by signalerMartin Sustrik
While TCP and IPC socket duplicates are correctly closed on fork+exec, file descriptors used for internal communication within libxs are not. This patch fixes the problem. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-08Handle insufficient resources on accept() decentlyMartin Sustrik
If accept() call fails due to insuffient OS resources the new connection is rejected. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-07Fix error handling in TCP and IPC connectersMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-07Fix identity exchange for inproc transportMartin Hurton
The socket connecting using the inproc transport never received the identity of the remote peer.
2012-04-06Flush identity message for inproc transportMartin Hurton
The scoket implementation for inproc transfer failed to flush identity message. The result was that the identity message was not delivered until after the user sent the first message. The identity message was never delivered if the user used the socket only to receive messages.
2012-04-06tcp_address: check address length before manipulating itMartin Hurton
2012-04-06EMTHREAD error code removedMartin Sustrik
libxs (as opposed to libzmq) requires at least one I/O thread per context. Thus, "no I/O thread available" error doesn't make sense anyome. This patch removes the code and the documentation. It keeps the definition of EMTHREAD itself for backward compatibility. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-06Verious warnings generated by SunStudio fixedMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-06Andrew W. Nosenko added to AUTHORS fileMartin Sustrik
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-06Allow pipe_t::flush() to be called from pipe_t::terminate()Martin Sustrik
Previous patch have broken flushing a delimiter in pipe_t::terminate() function. This patch allows the flush to happen even if pipe state is set to 'terminated'. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-06Fix bogus typo in xs::pipe_t::flush()Andrew W. Nosenko
* src/pipe.cpp (flush): Fix bogus typo: '&&' was used instead of '||'
2012-04-06Changed project name in README references; ignore EXE files.Gonzalo Diethelm
2012-04-06Improved readability of README file.Gonzalo Diethelm
2012-04-05XS_PLUGIN and XS_FILTER implementationMartin Sustrik
This patch introduces following features: - XS_PLUGIN context option to add plugins to libxs - XS_FILTER option to switch between different filter types - Automatic loading of plug-ins is *not* implemented. From the implementation point of view: - standard prefix filter is implemented as a pluggable filter - trie_t and mtrie_t are joined into a single class - the code for 0MQ/3.1 compatibility is left in in the form of comments - new test for testing re-subscriptions is added Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-04Accept ECONNRESET from close()Martin Sustrik
Although not a POSIX behaviour, FreeBSD can fail with ECONNRESET. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2012-04-040MQ/2.1 wire format compatibility implementedMartin Sustrik
- XS_PROTOCOL option added - libxs ignores when unused flags are set to 1 (0MQ/2.1 bug) - compatibility tests added Signed-off-by: Martin Sustrik <sustrik@250bpm.com>