libzmq 0.0.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/libzmq/Makefile +2 -2
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/AUTHORS +3 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/COPYING +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/COPYING.LESSER +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/ChangeLog +663 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/INSTALL +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/MAINTAINERS +7 -7
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/Makefile.am +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/Makefile.in +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/NEWS +68 -21
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/README +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/acinclude.m4 +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/aclocal.m4 +2 -2
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/autogen.sh +4 -4
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/Makefile.am +3 -1
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/Makefile.in +3 -1
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/c_local_lat/c_local_lat.vcproj +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/c_local_thr/c_local_thr.vcproj +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/c_remote_lat/c_remote_lat.vcproj +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/c_remote_thr/c_remote_thr.vcproj +0 -0
- data/libzmq/zeromq-2.1.9/builds/msvc/inproc_lat/inproc_lat.vcproj +174 -0
- data/libzmq/zeromq-2.1.9/builds/msvc/inproc_thr/inproc_thr.vcproj +174 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/libzmq/libzmq.vcproj +4 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/msvc.sln +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/platform.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/redhat/zeromq.spec.in +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/compile +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/config.guess +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/config.sub +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/depcomp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/install-sh +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/libtool.m4 +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/ltmain.sh +2 -2
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/ltoptions.m4 +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/ltsugar.m4 +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/ltversion.m4 +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/lt~obsolete.m4 +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/missing +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/configure +18 -10
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/configure.in +6 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/Makefile.am +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/Makefile.in +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/asciidoc.conf +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq.7 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq.html +86 -72
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_bind.3 +8 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_bind.html +67 -65
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_bind.txt +2 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_close.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_close.html +57 -65
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_close.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_connect.3 +8 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_connect.html +67 -65
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_connect.txt +2 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_cpp.7 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_cpp.html +127 -109
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_cpp.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_device.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_device.html +67 -65
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_device.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_epgm.7 +5 -5
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_epgm.html +67 -69
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_epgm.txt +2 -2
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_errno.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_errno.html +57 -65
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_errno.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_getsockopt.3 +4 -4
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_getsockopt.html +114 -84
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_getsockopt.txt +1 -1
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_init.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_init.html +57 -65
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_init.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_inproc.7 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_inproc.html +63 -67
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_inproc.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_ipc.7 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_ipc.html +63 -67
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_ipc.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_close.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_close.html +56 -64
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_close.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_copy.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_copy.html +56 -64
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_copy.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_data.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_data.html +57 -65
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_data.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init.html +59 -65
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init_data.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init_data.html +59 -65
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init_data.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init_size.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init_size.html +57 -65
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init_size.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_move.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_move.html +56 -64
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_move.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_size.3 +4 -4
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_size.html +58 -66
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_size.txt +1 -1
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_pgm.7 +5 -5
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_pgm.html +67 -69
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_pgm.txt +2 -2
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_poll.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_poll.html +59 -65
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_poll.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_recv.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_recv.html +62 -66
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_recv.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_send.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_send.html +62 -66
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_send.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_setsockopt.3 +4 -4
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_setsockopt.html +108 -82
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_setsockopt.txt +1 -1
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_socket.3 +5 -5
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_socket.html +89 -71
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_socket.txt +2 -2
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_strerror.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_strerror.html +59 -65
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_strerror.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_tcp.7 +4 -4
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_tcp.html +64 -68
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_tcp.txt +1 -1
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_term.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_term.html +57 -65
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_term.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_version.3 +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_version.html +59 -65
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_version.txt +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/foreign/openpgm/Makefile.am +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/foreign/openpgm/Makefile.in +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/foreign/openpgm/libpgm-5.1.115~dfsg.tar.gz +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/foreign/xmlParser/xmlParser.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/foreign/xmlParser/xmlParser.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/include/zmq.h +2 -2
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/include/zmq.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/include/zmq_utils.h +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/Makefile.am +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/Makefile.in +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/inproc_lat.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/inproc_thr.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/local_lat.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/local_thr.cpp +1 -1
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/remote_lat.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/remote_thr.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/Makefile.am +2 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/Makefile.in +20 -8
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/array.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/atomic_counter.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/atomic_ptr.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/blob.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/clock.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/clock.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/command.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/command.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/config.hpp +7 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/connect_session.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/connect_session.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/ctx.cpp +8 -6
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/ctx.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/decoder.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/decoder.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/device.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/device.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/devpoll.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/devpoll.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/dist.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/dist.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/encoder.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/encoder.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/epoll.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/epoll.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/err.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/err.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/fd.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/fq.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/fq.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/i_engine.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/i_inout.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/i_poll_events.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/io_object.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/io_object.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/io_thread.cpp +1 -1
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/io_thread.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/ip.cpp +10 -10
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/ip.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/kqueue.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/kqueue.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/lb.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/lb.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/libzmq.pc.in +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/likely.hpp +0 -0
- data/libzmq/zeromq-2.1.9/src/mailbox.cpp +82 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/mailbox.hpp +19 -7
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/msg_content.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/mutex.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/named_session.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/named_session.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/object.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/object.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/options.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/options.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/own.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/own.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pair.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pair.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pgm_receiver.cpp +2 -2
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pgm_receiver.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pgm_sender.cpp +4 -4
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pgm_sender.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pgm_socket.cpp +4 -4
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pgm_socket.hpp +4 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pipe.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pipe.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/platform.hpp.in +3 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/poll.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/poll.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/poller.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/poller_base.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/poller_base.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pub.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pub.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pull.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pull.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/push.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/push.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/reaper.cpp +1 -1
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/reaper.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/rep.cpp +1 -1
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/rep.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/req.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/req.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/select.cpp +5 -4
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/select.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/semaphore.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/session.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/session.hpp +0 -0
- data/libzmq/{zeromq-2.1.7/src/mailbox.cpp → zeromq-2.1.9/src/signaler.cpp} +135 -173
- data/libzmq/zeromq-2.1.9/src/signaler.hpp +63 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/socket_base.cpp +58 -21
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/socket_base.hpp +3 -3
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/stdint.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/sub.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/sub.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/swap.cpp +3 -5
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/swap.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/tcp_connecter.cpp +2 -1
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/tcp_connecter.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/tcp_listener.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/tcp_listener.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/tcp_socket.cpp +5 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/tcp_socket.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/thread.cpp +9 -7
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/thread.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/transient_session.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/transient_session.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/trie.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/trie.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/uuid.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/uuid.hpp +0 -0
- data/libzmq/zeromq-2.1.9/src/windows.hpp +177 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/wire.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xpub.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xpub.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xrep.cpp +0 -4
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xrep.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xreq.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xreq.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xsub.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xsub.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/ypipe.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/yqueue.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq.cpp +17 -7
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_connecter.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_connecter.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_engine.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_engine.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_init.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_init.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_listener.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_listener.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/Makefile.am +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/Makefile.in +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_hwm.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_pair_inproc.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_pair_ipc.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_pair_tcp.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_reqrep_inproc.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_reqrep_ipc.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_reqrep_tcp.cpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_shutdown_stress.cpp +1 -1
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/testutil.hpp +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/version.sh +0 -0
- data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/zeromq.spec +1 -1
- metadata +299 -295
- data/libzmq/zeromq-2.1.7/src/windows.hpp +0 -79
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -60,8 +60,8 @@ int zmq::pgm_receiver_t::init (bool udp_encapsulation_, const char *network_)
|
|
|
60
60
|
void zmq::pgm_receiver_t::plug (io_thread_t *io_thread_, i_inout *inout_)
|
|
61
61
|
{
|
|
62
62
|
// Retrieve PGM fds and start polling.
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
fd_t socket_fd = retired_fd;
|
|
64
|
+
fd_t waiting_pipe_fd = retired_fd;
|
|
65
65
|
pgm_socket.get_receiver_fds (&socket_fd, &waiting_pipe_fd);
|
|
66
66
|
socket_handle = add_fd (socket_fd);
|
|
67
67
|
pipe_handle = add_fd (waiting_pipe_fd);
|
|
File without changes
|
|
@@ -64,10 +64,10 @@ int zmq::pgm_sender_t::init (bool udp_encapsulation_, const char *network_)
|
|
|
64
64
|
void zmq::pgm_sender_t::plug (io_thread_t *io_thread_, i_inout *inout_)
|
|
65
65
|
{
|
|
66
66
|
// Alocate 2 fds for PGM socket.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
fd_t downlink_socket_fd = retired_fd;
|
|
68
|
+
fd_t uplink_socket_fd = retired_fd;
|
|
69
|
+
fd_t rdata_notify_fd = retired_fd;
|
|
70
|
+
fd_t pending_notify_fd = retired_fd;
|
|
71
71
|
|
|
72
72
|
encoder.set_inout (inout_);
|
|
73
73
|
|
|
File without changes
|
|
@@ -394,8 +394,8 @@ zmq::pgm_socket_t::~pgm_socket_t ()
|
|
|
394
394
|
|
|
395
395
|
// Get receiver fds. receive_fd_ is signaled for incoming packets,
|
|
396
396
|
// waiting_pipe_fd_ is signaled for state driven events and data.
|
|
397
|
-
void zmq::pgm_socket_t::get_receiver_fds (
|
|
398
|
-
|
|
397
|
+
void zmq::pgm_socket_t::get_receiver_fds (fd_t *receive_fd_,
|
|
398
|
+
fd_t *waiting_pipe_fd_)
|
|
399
399
|
{
|
|
400
400
|
socklen_t socklen;
|
|
401
401
|
bool rc;
|
|
@@ -421,8 +421,8 @@ void zmq::pgm_socket_t::get_receiver_fds (int *receive_fd_,
|
|
|
421
421
|
// receive_fd_ is for incoming back-channel protocol packets.
|
|
422
422
|
// rdata_notify_fd_ is raised for waiting repair transmissions.
|
|
423
423
|
// pending_notify_fd_ is for state driven events.
|
|
424
|
-
void zmq::pgm_socket_t::get_sender_fds (
|
|
425
|
-
|
|
424
|
+
void zmq::pgm_socket_t::get_sender_fds (fd_t *send_fd_, fd_t *receive_fd_,
|
|
425
|
+
fd_t *rdata_notify_fd_, fd_t *pending_notify_fd_)
|
|
426
426
|
{
|
|
427
427
|
socklen_t socklen;
|
|
428
428
|
bool rc;
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
#include <pgm/in.h>
|
|
37
37
|
#endif
|
|
38
38
|
|
|
39
|
+
#include "fd.hpp"
|
|
39
40
|
#include "options.hpp"
|
|
40
41
|
|
|
41
42
|
namespace zmq
|
|
@@ -56,12 +57,12 @@ namespace zmq
|
|
|
56
57
|
int init (bool udp_encapsulation_, const char *network_);
|
|
57
58
|
|
|
58
59
|
// Get receiver fds and store them into user allocated memory.
|
|
59
|
-
void get_receiver_fds (
|
|
60
|
+
void get_receiver_fds (fd_t *receive_fd_, fd_t *waiting_pipe_fd_);
|
|
60
61
|
|
|
61
62
|
// Get sender and receiver fds and store it to user allocated
|
|
62
63
|
// memory. Receive fd is used to process NAKs from peers.
|
|
63
|
-
void get_sender_fds (
|
|
64
|
-
|
|
64
|
+
void get_sender_fds (fd_t *send_fd_, fd_t *receive_fd_,
|
|
65
|
+
fd_t *rdata_notify_fd_, fd_t *pending_notify_fd_);
|
|
65
66
|
|
|
66
67
|
// Send data as one APDU, transmit window owned memory.
|
|
67
68
|
size_t send (unsigned char *data_, size_t data_len_);
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -61,7 +61,7 @@ void zmq::reaper_t::in_event ()
|
|
|
61
61
|
|
|
62
62
|
// Get the next command. If there is none, exit.
|
|
63
63
|
command_t cmd;
|
|
64
|
-
int rc = mailbox.recv (&cmd,
|
|
64
|
+
int rc = mailbox.recv (&cmd, 0);
|
|
65
65
|
if (rc != 0 && errno == EINTR)
|
|
66
66
|
continue;
|
|
67
67
|
if (rc != 0 && errno == EAGAIN)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -19,20 +19,21 @@
|
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
21
|
#include "platform.hpp"
|
|
22
|
+
#if defined ZMQ_HAVE_WINDOWS
|
|
23
|
+
#include "windows.hpp"
|
|
24
|
+
#endif
|
|
22
25
|
|
|
23
26
|
#include <string.h>
|
|
24
27
|
#include <algorithm>
|
|
25
28
|
|
|
26
|
-
#
|
|
27
|
-
#include "winsock2.h"
|
|
28
|
-
#elif defined ZMQ_HAVE_HPUX
|
|
29
|
+
#if defined ZMQ_HAVE_HPUX
|
|
29
30
|
#include <sys/param.h>
|
|
30
31
|
#include <sys/types.h>
|
|
31
32
|
#include <sys/time.h>
|
|
32
33
|
#elif defined ZMQ_HAVE_OPENVMS
|
|
33
34
|
#include <sys/types.h>
|
|
34
35
|
#include <sys/time.h>
|
|
35
|
-
#
|
|
36
|
+
#elif !defined ZMQ_HAVE_WINDOWS
|
|
36
37
|
#include <sys/select.h>
|
|
37
38
|
#endif
|
|
38
39
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -18,8 +18,45 @@
|
|
|
18
18
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
-
#include "mailbox.hpp"
|
|
22
21
|
#include "platform.hpp"
|
|
22
|
+
|
|
23
|
+
#if defined ZMQ_FORCE_SELECT
|
|
24
|
+
#define ZMQ_SIGNALER_WAIT_BASED_ON_SELECT
|
|
25
|
+
#elif defined ZMQ_FORCE_POLL
|
|
26
|
+
#define ZMQ_SIGNALER_WAIT_BASED_ON_POLL
|
|
27
|
+
#elif defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD ||\
|
|
28
|
+
defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_SOLARIS ||\
|
|
29
|
+
defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_QNXNTO ||\
|
|
30
|
+
defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX ||\
|
|
31
|
+
defined ZMQ_HAVE_NETBSD
|
|
32
|
+
#define ZMQ_SIGNALER_WAIT_BASED_ON_POLL
|
|
33
|
+
#elif defined ZMQ_HAVE_WINDOWS || defined ZMQ_HAVE_OPENVMS
|
|
34
|
+
#define ZMQ_SIGNALER_WAIT_BASED_ON_SELECT
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
// On AIX, poll.h has to be included before zmq.h to get consistent
|
|
38
|
+
// definition of pollfd structure (AIX uses 'reqevents' and 'retnevents'
|
|
39
|
+
// instead of 'events' and 'revents' and defines macros to map from POSIX-y
|
|
40
|
+
// names to AIX-specific names).
|
|
41
|
+
#if defined ZMQ_SIGNALER_WAIT_BASED_ON_POLL
|
|
42
|
+
#include <poll.h>
|
|
43
|
+
#elif defined ZMQ_SIGNALER_WAIT_BASED_ON_SELECT
|
|
44
|
+
#if defined ZMQ_HAVE_WINDOWS
|
|
45
|
+
#include "windows.hpp"
|
|
46
|
+
#elif defined ZMQ_HAVE_HPUX
|
|
47
|
+
#include <sys/param.h>
|
|
48
|
+
#include <sys/types.h>
|
|
49
|
+
#include <sys/time.h>
|
|
50
|
+
#elif defined ZMQ_HAVE_OPENVMS
|
|
51
|
+
#include <sys/types.h>
|
|
52
|
+
#include <sys/time.h>
|
|
53
|
+
#else
|
|
54
|
+
#include <sys/select.h>
|
|
55
|
+
#endif
|
|
56
|
+
#endif
|
|
57
|
+
|
|
58
|
+
#include "signaler.hpp"
|
|
59
|
+
#include "likely.hpp"
|
|
23
60
|
#include "err.hpp"
|
|
24
61
|
#include "fd.hpp"
|
|
25
62
|
#include "ip.hpp"
|
|
@@ -36,111 +73,24 @@
|
|
|
36
73
|
#include <sys/socket.h>
|
|
37
74
|
#endif
|
|
38
75
|
|
|
39
|
-
zmq::
|
|
76
|
+
zmq::signaler_t::signaler_t ()
|
|
40
77
|
{
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
#if defined ZMQ_HAVE_WINDOWS
|
|
45
|
-
|
|
46
|
-
zmq::mailbox_t::mailbox_t ()
|
|
47
|
-
{
|
|
48
|
-
// Create the socketpair for signalling.
|
|
49
|
-
int rc = make_socketpair (&r, &w);
|
|
78
|
+
// Create the socketpair for signaling.
|
|
79
|
+
int rc = make_fdpair (&r, &w);
|
|
50
80
|
errno_assert (rc == 0);
|
|
51
81
|
|
|
52
|
-
// Set
|
|
82
|
+
// Set both fds to non-blocking mode.
|
|
83
|
+
#if defined ZMQ_HAVE_WINDOWS
|
|
53
84
|
unsigned long argp = 1;
|
|
54
85
|
rc = ioctlsocket (w, FIONBIO, &argp);
|
|
55
86
|
wsa_assert (rc != SOCKET_ERROR);
|
|
56
|
-
|
|
57
|
-
// Set the reader to non-blocking mode.
|
|
58
|
-
argp = 1;
|
|
59
87
|
rc = ioctlsocket (r, FIONBIO, &argp);
|
|
60
88
|
wsa_assert (rc != SOCKET_ERROR);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
zmq::mailbox_t::~mailbox_t ()
|
|
64
|
-
{
|
|
65
|
-
int rc = closesocket (w);
|
|
66
|
-
wsa_assert (rc != SOCKET_ERROR);
|
|
67
|
-
|
|
68
|
-
rc = closesocket (r);
|
|
69
|
-
wsa_assert (rc != SOCKET_ERROR);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
void zmq::mailbox_t::send (const command_t &cmd_)
|
|
73
|
-
{
|
|
74
|
-
// TODO: Implement SNDBUF auto-resizing as for POSIX platforms.
|
|
75
|
-
// In the mean time, the following code with assert if the send()
|
|
76
|
-
// call would block.
|
|
77
|
-
int nbytes = ::send (w, (char *)&cmd_, sizeof (command_t), 0);
|
|
78
|
-
wsa_assert (nbytes != SOCKET_ERROR);
|
|
79
|
-
zmq_assert (nbytes == sizeof (command_t));
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
int zmq::mailbox_t::recv (command_t *cmd_, bool block_)
|
|
83
|
-
{
|
|
84
|
-
// If required, set the reader to blocking mode.
|
|
85
|
-
if (block_) {
|
|
86
|
-
unsigned long argp = 0;
|
|
87
|
-
int rc = ioctlsocket (r, FIONBIO, &argp);
|
|
88
|
-
wsa_assert (rc != SOCKET_ERROR);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// Attempt to read an entire command. Returns EAGAIN if non-blocking
|
|
92
|
-
// and a command is not available. Save value of errno if we wish to pass
|
|
93
|
-
// it to caller.
|
|
94
|
-
int err = 0;
|
|
95
|
-
int nbytes = ::recv (r, (char *)cmd_, sizeof (command_t), 0);
|
|
96
|
-
if (nbytes == -1 && WSAGetLastError () == WSAEWOULDBLOCK)
|
|
97
|
-
err = EAGAIN;
|
|
98
|
-
|
|
99
|
-
// Re-set the reader to non-blocking mode.
|
|
100
|
-
if (block_) {
|
|
101
|
-
unsigned long argp = 1;
|
|
102
|
-
int rc = ioctlsocket (r, FIONBIO, &argp);
|
|
103
|
-
wsa_assert (rc != SOCKET_ERROR);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// If the recv failed, return with the saved errno.
|
|
107
|
-
if (err != 0) {
|
|
108
|
-
errno = err;
|
|
109
|
-
return -1;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// Sanity check for success.
|
|
113
|
-
wsa_assert (nbytes != SOCKET_ERROR);
|
|
114
|
-
|
|
115
|
-
// Check whether we haven't got half of command.
|
|
116
|
-
zmq_assert (nbytes == sizeof (command_t));
|
|
117
|
-
|
|
118
|
-
return 0;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
89
|
#else
|
|
122
|
-
|
|
123
|
-
zmq::mailbox_t::mailbox_t ()
|
|
124
|
-
{
|
|
125
|
-
#ifdef PIPE_BUF
|
|
126
|
-
// Make sure that command can be written to the socket in atomic fashion.
|
|
127
|
-
// If this wasn't guaranteed, commands from different threads would be
|
|
128
|
-
// interleaved.
|
|
129
|
-
zmq_assert (sizeof (command_t) <= PIPE_BUF);
|
|
130
|
-
#endif
|
|
131
|
-
|
|
132
|
-
// Create the socketpair for signaling.
|
|
133
|
-
int rc = make_socketpair (&r, &w);
|
|
134
|
-
errno_assert (rc == 0);
|
|
135
|
-
|
|
136
|
-
// Set the writer to non-blocking mode.
|
|
137
90
|
int flags = fcntl (w, F_GETFL, 0);
|
|
138
91
|
errno_assert (flags >= 0);
|
|
139
92
|
rc = fcntl (w, F_SETFL, flags | O_NONBLOCK);
|
|
140
93
|
errno_assert (rc == 0);
|
|
141
|
-
|
|
142
|
-
#ifndef MSG_DONTWAIT
|
|
143
|
-
// Set the reader to non-blocking mode.
|
|
144
94
|
flags = fcntl (r, F_GETFL, 0);
|
|
145
95
|
errno_assert (flags >= 0);
|
|
146
96
|
rc = fcntl (r, F_SETFL, flags | O_NONBLOCK);
|
|
@@ -148,108 +98,113 @@ zmq::mailbox_t::mailbox_t ()
|
|
|
148
98
|
#endif
|
|
149
99
|
}
|
|
150
100
|
|
|
151
|
-
zmq::
|
|
101
|
+
zmq::signaler_t::~signaler_t ()
|
|
152
102
|
{
|
|
103
|
+
#if defined ZMQ_HAVE_WINDOWS
|
|
104
|
+
int rc = closesocket (w);
|
|
105
|
+
wsa_assert (rc != SOCKET_ERROR);
|
|
106
|
+
rc = closesocket (r);
|
|
107
|
+
wsa_assert (rc != SOCKET_ERROR);
|
|
108
|
+
#else
|
|
153
109
|
close (w);
|
|
154
110
|
close (r);
|
|
111
|
+
#endif
|
|
155
112
|
}
|
|
156
113
|
|
|
157
|
-
|
|
114
|
+
zmq::fd_t zmq::signaler_t::get_fd ()
|
|
158
115
|
{
|
|
159
|
-
|
|
160
|
-
ssize_t nbytes;
|
|
161
|
-
do {
|
|
162
|
-
nbytes = ::send (w, &cmd_, sizeof (command_t), 0);
|
|
163
|
-
} while (nbytes == -1 && errno == EINTR);
|
|
164
|
-
|
|
165
|
-
// Attempt to increase mailbox SNDBUF if the send failed.
|
|
166
|
-
if (nbytes == -1 && errno == EAGAIN) {
|
|
167
|
-
int old_sndbuf, new_sndbuf;
|
|
168
|
-
socklen_t sndbuf_size = sizeof old_sndbuf;
|
|
169
|
-
|
|
170
|
-
// Retrieve current send buffer size.
|
|
171
|
-
int rc = getsockopt (w, SOL_SOCKET, SO_SNDBUF, &old_sndbuf,
|
|
172
|
-
&sndbuf_size);
|
|
173
|
-
errno_assert (rc == 0);
|
|
174
|
-
new_sndbuf = old_sndbuf * 2;
|
|
175
|
-
|
|
176
|
-
// Double the new send buffer size.
|
|
177
|
-
rc = setsockopt (w, SOL_SOCKET, SO_SNDBUF, &new_sndbuf, sndbuf_size);
|
|
178
|
-
errno_assert (rc == 0);
|
|
179
|
-
|
|
180
|
-
// Verify that the OS actually honored the request.
|
|
181
|
-
rc = getsockopt (w, SOL_SOCKET, SO_SNDBUF, &new_sndbuf, &sndbuf_size);
|
|
182
|
-
errno_assert (rc == 0);
|
|
183
|
-
zmq_assert (new_sndbuf > old_sndbuf);
|
|
184
|
-
|
|
185
|
-
// Retry the sending operation; at this point it must succeed.
|
|
186
|
-
do {
|
|
187
|
-
nbytes = ::send (w, &cmd_, sizeof (command_t), 0);
|
|
188
|
-
} while (nbytes == -1 && errno == EINTR);
|
|
189
|
-
}
|
|
190
|
-
errno_assert (nbytes != -1);
|
|
191
|
-
|
|
192
|
-
// This should never happen as we've already checked that command size is
|
|
193
|
-
// less than PIPE_BUF.
|
|
194
|
-
zmq_assert (nbytes == sizeof (command_t));
|
|
116
|
+
return r;
|
|
195
117
|
}
|
|
196
118
|
|
|
197
|
-
|
|
119
|
+
void zmq::signaler_t::send ()
|
|
198
120
|
{
|
|
199
|
-
#
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
block_ ? 0 : MSG_DONTWAIT);
|
|
205
|
-
if (nbytes == -1 && (errno == EAGAIN || errno == EINTR))
|
|
206
|
-
return -1;
|
|
121
|
+
#if defined ZMQ_HAVE_WINDOWS
|
|
122
|
+
unsigned char dummy = 0;
|
|
123
|
+
int nbytes = ::send (w, (char*) &dummy, sizeof (dummy), 0);
|
|
124
|
+
wsa_assert (nbytes != SOCKET_ERROR);
|
|
125
|
+
zmq_assert (nbytes == sizeof (dummy));
|
|
207
126
|
#else
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
127
|
+
unsigned char dummy = 0;
|
|
128
|
+
while (true) {
|
|
129
|
+
ssize_t nbytes = ::send (w, &dummy, sizeof (dummy), 0);
|
|
130
|
+
if (unlikely (nbytes == -1 && errno == EINTR))
|
|
131
|
+
continue;
|
|
132
|
+
zmq_assert (nbytes == sizeof (dummy));
|
|
133
|
+
break;
|
|
215
134
|
}
|
|
135
|
+
#endif
|
|
136
|
+
}
|
|
216
137
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
errno_assert (flags >= 0);
|
|
229
|
-
int rc = fcntl (r, F_SETFL, flags | O_NONBLOCK);
|
|
230
|
-
errno_assert (rc == 0);
|
|
138
|
+
int zmq::signaler_t::wait (int timeout_)
|
|
139
|
+
{
|
|
140
|
+
#ifdef ZMQ_SIGNALER_WAIT_BASED_ON_POLL
|
|
141
|
+
|
|
142
|
+
struct pollfd pfd;
|
|
143
|
+
pfd.fd = r;
|
|
144
|
+
pfd.events = POLLIN;
|
|
145
|
+
int rc = poll (&pfd, 1, timeout_);
|
|
146
|
+
if (unlikely (rc < 0)) {
|
|
147
|
+
zmq_assert (errno == EINTR);
|
|
148
|
+
return -1;
|
|
231
149
|
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
if (err != 0) {
|
|
235
|
-
errno = err;
|
|
150
|
+
else if (unlikely (rc == 0)) {
|
|
151
|
+
errno = EAGAIN;
|
|
236
152
|
return -1;
|
|
237
153
|
}
|
|
154
|
+
zmq_assert (rc == 1);
|
|
155
|
+
zmq_assert (pfd.revents & POLLIN);
|
|
156
|
+
return 0;
|
|
238
157
|
|
|
239
|
-
#
|
|
240
|
-
|
|
241
|
-
// Sanity check for success.
|
|
242
|
-
errno_assert (nbytes != -1);
|
|
243
|
-
|
|
244
|
-
// Check whether we haven't got half of command.
|
|
245
|
-
zmq_assert (nbytes == sizeof (command_t));
|
|
158
|
+
#elif defined ZMQ_SIGNALER_WAIT_BASED_ON_SELECT
|
|
246
159
|
|
|
160
|
+
fd_set fds;
|
|
161
|
+
FD_ZERO (&fds);
|
|
162
|
+
FD_SET (r, &fds);
|
|
163
|
+
struct timeval timeout;
|
|
164
|
+
if (timeout_ >= 0) {
|
|
165
|
+
timeout.tv_sec = timeout_ / 1000;
|
|
166
|
+
timeout.tv_usec = timeout_ % 1000 * 1000;
|
|
167
|
+
}
|
|
168
|
+
#ifdef ZMQ_HAVE_WINDOWS
|
|
169
|
+
int rc = select (0, &fds, NULL, NULL,
|
|
170
|
+
timeout_ >= 0 ? &timeout : NULL);
|
|
171
|
+
wsa_assert (rc != SOCKET_ERROR);
|
|
172
|
+
#else
|
|
173
|
+
int rc = select (r + 1, &fds, NULL, NULL,
|
|
174
|
+
timeout_ >= 0 ? &timeout : NULL);
|
|
175
|
+
if (unlikely (rc < 0)) {
|
|
176
|
+
zmq_assert (errno == EINTR);
|
|
177
|
+
return -1;
|
|
178
|
+
}
|
|
179
|
+
#endif
|
|
180
|
+
if (unlikely (rc == 0)) {
|
|
181
|
+
errno = EAGAIN;
|
|
182
|
+
return -1;
|
|
183
|
+
}
|
|
184
|
+
zmq_assert (rc == 1);
|
|
247
185
|
return 0;
|
|
186
|
+
|
|
187
|
+
#else
|
|
188
|
+
#error
|
|
189
|
+
#endif
|
|
248
190
|
}
|
|
249
191
|
|
|
192
|
+
void zmq::signaler_t::recv ()
|
|
193
|
+
{
|
|
194
|
+
// Attempt to read a signal.
|
|
195
|
+
unsigned char dummy;
|
|
196
|
+
#ifdef ZMQ_HAVE_WINDOWS
|
|
197
|
+
int nbytes = ::recv (r, (char*) &dummy, sizeof (dummy), 0);
|
|
198
|
+
wsa_assert (nbytes != SOCKET_ERROR);
|
|
199
|
+
#else
|
|
200
|
+
ssize_t nbytes = ::recv (r, &dummy, sizeof (dummy), 0);
|
|
201
|
+
errno_assert (nbytes >= 0);
|
|
250
202
|
#endif
|
|
203
|
+
zmq_assert (nbytes == sizeof (dummy));
|
|
204
|
+
zmq_assert (dummy == 0);
|
|
205
|
+
}
|
|
251
206
|
|
|
252
|
-
int zmq::
|
|
207
|
+
int zmq::signaler_t::make_fdpair (fd_t *r_, fd_t *w_)
|
|
253
208
|
{
|
|
254
209
|
#if defined ZMQ_HAVE_WINDOWS
|
|
255
210
|
|
|
@@ -380,3 +335,10 @@ int zmq::mailbox_t::make_socketpair (fd_t *r_, fd_t *w_)
|
|
|
380
335
|
#endif
|
|
381
336
|
}
|
|
382
337
|
|
|
338
|
+
#if defined ZMQ_SIGNALER_WAIT_BASED_ON_SELECT
|
|
339
|
+
#undef ZMQ_SIGNALER_WAIT_BASED_ON_SELECT
|
|
340
|
+
#endif
|
|
341
|
+
#if defined ZMQ_SIGNALER_WAIT_BASED_ON_POLL
|
|
342
|
+
#undef ZMQ_SIGNALER_WAIT_BASED_ON_POLL
|
|
343
|
+
#endif
|
|
344
|
+
|