libzmq 0.0.1
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/LICENSE +703 -0
- data/README.md +31 -0
- data/lib/libzmq.rb +17 -0
- data/lib/libzmq/ffi-rzmq.rb +3 -0
- data/libzmq/Makefile +5 -0
- data/libzmq/extconf.rb +24 -0
- data/libzmq/zeromq-2.1.7/AUTHORS +92 -0
- data/libzmq/zeromq-2.1.7/COPYING +674 -0
- data/libzmq/zeromq-2.1.7/COPYING.LESSER +206 -0
- data/libzmq/zeromq-2.1.7/ChangeLog +15620 -0
- data/libzmq/zeromq-2.1.7/INSTALL +237 -0
- data/libzmq/zeromq-2.1.7/MAINTAINERS +56 -0
- data/libzmq/zeromq-2.1.7/Makefile.am +42 -0
- data/libzmq/zeromq-2.1.7/Makefile.in +779 -0
- data/libzmq/zeromq-2.1.7/NEWS +275 -0
- data/libzmq/zeromq-2.1.7/README +39 -0
- data/libzmq/zeromq-2.1.7/acinclude.m4 +582 -0
- data/libzmq/zeromq-2.1.7/aclocal.m4 +1206 -0
- data/libzmq/zeromq-2.1.7/autogen.sh +45 -0
- data/libzmq/zeromq-2.1.7/builds/msvc/Makefile.am +8 -0
- data/libzmq/zeromq-2.1.7/builds/msvc/Makefile.in +390 -0
- data/libzmq/zeromq-2.1.7/builds/msvc/c_local_lat/c_local_lat.vcproj +176 -0
- data/libzmq/zeromq-2.1.7/builds/msvc/c_local_thr/c_local_thr.vcproj +176 -0
- data/libzmq/zeromq-2.1.7/builds/msvc/c_remote_lat/c_remote_lat.vcproj +176 -0
- data/libzmq/zeromq-2.1.7/builds/msvc/c_remote_thr/c_remote_thr.vcproj +176 -0
- data/libzmq/zeromq-2.1.7/builds/msvc/libzmq/libzmq.vcproj +783 -0
- data/libzmq/zeromq-2.1.7/builds/msvc/msvc.sln +89 -0
- data/libzmq/zeromq-2.1.7/builds/msvc/platform.hpp +32 -0
- data/libzmq/zeromq-2.1.7/builds/redhat/zeromq.spec.in +139 -0
- data/libzmq/zeromq-2.1.7/config/compile +143 -0
- data/libzmq/zeromq-2.1.7/config/config.guess +1502 -0
- data/libzmq/zeromq-2.1.7/config/config.sub +1714 -0
- data/libzmq/zeromq-2.1.7/config/depcomp +630 -0
- data/libzmq/zeromq-2.1.7/config/install-sh +520 -0
- data/libzmq/zeromq-2.1.7/config/libtool.m4 +7377 -0
- data/libzmq/zeromq-2.1.7/config/ltmain.sh +8413 -0
- data/libzmq/zeromq-2.1.7/config/ltoptions.m4 +368 -0
- data/libzmq/zeromq-2.1.7/config/ltsugar.m4 +123 -0
- data/libzmq/zeromq-2.1.7/config/ltversion.m4 +23 -0
- data/libzmq/zeromq-2.1.7/config/lt~obsolete.m4 +92 -0
- data/libzmq/zeromq-2.1.7/config/missing +376 -0
- data/libzmq/zeromq-2.1.7/configure +21645 -0
- data/libzmq/zeromq-2.1.7/configure.in +380 -0
- data/libzmq/zeromq-2.1.7/doc/Makefile.am +46 -0
- data/libzmq/zeromq-2.1.7/doc/Makefile.in +546 -0
- data/libzmq/zeromq-2.1.7/doc/asciidoc.conf +56 -0
- data/libzmq/zeromq-2.1.7/doc/zmq.7 +242 -0
- data/libzmq/zeromq-2.1.7/doc/zmq.html +846 -0
- data/libzmq/zeromq-2.1.7/doc/zmq.txt +218 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_bind.3 +166 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_bind.html +746 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_bind.txt +91 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_close.3 +81 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_close.html +645 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_close.txt +52 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_connect.3 +161 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_connect.html +732 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_connect.txt +89 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_cpp.7 +410 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_cpp.html +765 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_cpp.txt +212 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_device.3 +140 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_device.html +736 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_device.txt +138 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_epgm.7 +209 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_epgm.html +749 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_epgm.txt +162 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_errno.3 +78 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_errno.html +634 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_errno.txt +50 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_getsockopt.3 +944 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_getsockopt.html +1713 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_getsockopt.txt +407 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_init.3 +71 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_init.html +635 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_init.txt +51 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_inproc.7 +115 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_inproc.html +669 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_inproc.txt +89 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_ipc.7 +109 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_ipc.html +662 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_ipc.txt +80 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_close.3 +81 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_close.html +647 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_close.txt +55 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_copy.3 +95 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_copy.html +656 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_copy.txt +57 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_data.3 +76 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_data.html +633 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_data.txt +48 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_init.3 +110 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_init.html +656 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_init.txt +65 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_init_data.3 +138 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_init_data.html +678 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_init_data.txt +83 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_init_size.3 +97 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_init_size.html +656 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_init_size.txt +58 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_move.3 +79 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_move.html +645 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_move.txt +52 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_size.3 +76 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_size.html +633 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_msg_size.txt +48 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_pgm.7 +209 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_pgm.html +749 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_pgm.txt +162 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_poll.3 +204 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_poll.html +755 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_poll.txt +132 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_recv.3 +172 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_recv.html +746 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_recv.txt +121 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_send.3 +185 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_send.html +755 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_send.txt +120 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_setsockopt.3 +878 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_setsockopt.html +1603 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_setsockopt.txt +382 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_socket.3 +779 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_socket.html +1424 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_socket.txt +342 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_strerror.3 +78 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_strerror.html +634 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_strerror.txt +55 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_tcp.7 +244 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_tcp.html +755 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_tcp.txt +162 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_term.3 +135 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_term.html +672 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_term.txt +65 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_version.3 +78 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_version.html +632 -0
- data/libzmq/zeromq-2.1.7/doc/zmq_version.txt +53 -0
- data/libzmq/zeromq-2.1.7/foreign/openpgm/Makefile.am +8 -0
- data/libzmq/zeromq-2.1.7/foreign/openpgm/Makefile.in +588 -0
- data/libzmq/zeromq-2.1.7/foreign/openpgm/libpgm-5.1.115~dfsg.tar.gz +0 -0
- data/libzmq/zeromq-2.1.7/foreign/xmlParser/xmlParser.cpp +2923 -0
- data/libzmq/zeromq-2.1.7/foreign/xmlParser/xmlParser.hpp +762 -0
- data/libzmq/zeromq-2.1.7/include/zmq.h +269 -0
- data/libzmq/zeromq-2.1.7/include/zmq.hpp +301 -0
- data/libzmq/zeromq-2.1.7/include/zmq_utils.h +64 -0
- data/libzmq/zeromq-2.1.7/perf/Makefile.am +21 -0
- data/libzmq/zeromq-2.1.7/perf/Makefile.in +566 -0
- data/libzmq/zeromq-2.1.7/perf/inproc_lat.cpp +232 -0
- data/libzmq/zeromq-2.1.7/perf/inproc_thr.cpp +246 -0
- data/libzmq/zeromq-2.1.7/perf/local_lat.cpp +108 -0
- data/libzmq/zeromq-2.1.7/perf/local_thr.cpp +138 -0
- data/libzmq/zeromq-2.1.7/perf/remote_lat.cpp +121 -0
- data/libzmq/zeromq-2.1.7/perf/remote_thr.cpp +104 -0
- data/libzmq/zeromq-2.1.7/src/Makefile.am +155 -0
- data/libzmq/zeromq-2.1.7/src/Makefile.in +1320 -0
- data/libzmq/zeromq-2.1.7/src/array.hpp +147 -0
- data/libzmq/zeromq-2.1.7/src/atomic_counter.hpp +164 -0
- data/libzmq/zeromq-2.1.7/src/atomic_ptr.hpp +159 -0
- data/libzmq/zeromq-2.1.7/src/blob.hpp +34 -0
- data/libzmq/zeromq-2.1.7/src/clock.cpp +118 -0
- data/libzmq/zeromq-2.1.7/src/clock.hpp +60 -0
- data/libzmq/zeromq-2.1.7/src/command.cpp +39 -0
- data/libzmq/zeromq-2.1.7/src/command.hpp +147 -0
- data/libzmq/zeromq-2.1.7/src/config.hpp +88 -0
- data/libzmq/zeromq-2.1.7/src/connect_session.cpp +119 -0
- data/libzmq/zeromq-2.1.7/src/connect_session.hpp +65 -0
- data/libzmq/zeromq-2.1.7/src/ctx.cpp +322 -0
- data/libzmq/zeromq-2.1.7/src/ctx.hpp +159 -0
- data/libzmq/zeromq-2.1.7/src/decoder.cpp +129 -0
- data/libzmq/zeromq-2.1.7/src/decoder.hpp +207 -0
- data/libzmq/zeromq-2.1.7/src/device.cpp +120 -0
- data/libzmq/zeromq-2.1.7/src/device.hpp +32 -0
- data/libzmq/zeromq-2.1.7/src/devpoll.cpp +190 -0
- data/libzmq/zeromq-2.1.7/src/devpoll.hpp +100 -0
- data/libzmq/zeromq-2.1.7/src/dist.cpp +200 -0
- data/libzmq/zeromq-2.1.7/src/dist.hpp +90 -0
- data/libzmq/zeromq-2.1.7/src/encoder.cpp +90 -0
- data/libzmq/zeromq-2.1.7/src/encoder.hpp +184 -0
- data/libzmq/zeromq-2.1.7/src/epoll.cpp +177 -0
- data/libzmq/zeromq-2.1.7/src/epoll.hpp +96 -0
- data/libzmq/zeromq-2.1.7/src/err.cpp +238 -0
- data/libzmq/zeromq-2.1.7/src/err.hpp +145 -0
- data/libzmq/zeromq-2.1.7/src/fd.hpp +45 -0
- data/libzmq/zeromq-2.1.7/src/fq.cpp +164 -0
- data/libzmq/zeromq-2.1.7/src/fq.hpp +80 -0
- data/libzmq/zeromq-2.1.7/src/i_engine.hpp +53 -0
- data/libzmq/zeromq-2.1.7/src/i_inout.hpp +50 -0
- data/libzmq/zeromq-2.1.7/src/i_poll_events.hpp +46 -0
- data/libzmq/zeromq-2.1.7/src/io_object.cpp +107 -0
- data/libzmq/zeromq-2.1.7/src/io_object.hpp +78 -0
- data/libzmq/zeromq-2.1.7/src/io_thread.cpp +109 -0
- data/libzmq/zeromq-2.1.7/src/io_thread.hpp +88 -0
- data/libzmq/zeromq-2.1.7/src/ip.cpp +339 -0
- data/libzmq/zeromq-2.1.7/src/ip.hpp +68 -0
- data/libzmq/zeromq-2.1.7/src/kqueue.cpp +194 -0
- data/libzmq/zeromq-2.1.7/src/kqueue.hpp +103 -0
- data/libzmq/zeromq-2.1.7/src/lb.cpp +174 -0
- data/libzmq/zeromq-2.1.7/src/lb.hpp +79 -0
- data/libzmq/zeromq-2.1.7/src/libzmq.pc.in +10 -0
- data/libzmq/zeromq-2.1.7/src/likely.hpp +33 -0
- data/libzmq/zeromq-2.1.7/src/mailbox.cpp +382 -0
- data/libzmq/zeromq-2.1.7/src/mailbox.hpp +62 -0
- data/libzmq/zeromq-2.1.7/src/msg_content.hpp +52 -0
- data/libzmq/zeromq-2.1.7/src/mutex.hpp +121 -0
- data/libzmq/zeromq-2.1.7/src/named_session.cpp +85 -0
- data/libzmq/zeromq-2.1.7/src/named_session.hpp +57 -0
- data/libzmq/zeromq-2.1.7/src/object.cpp +467 -0
- data/libzmq/zeromq-2.1.7/src/object.hpp +127 -0
- data/libzmq/zeromq-2.1.7/src/options.cpp +336 -0
- data/libzmq/zeromq-2.1.7/src/options.hpp +87 -0
- data/libzmq/zeromq-2.1.7/src/own.cpp +214 -0
- data/libzmq/zeromq-2.1.7/src/own.hpp +140 -0
- data/libzmq/zeromq-2.1.7/src/pair.cpp +180 -0
- data/libzmq/zeromq-2.1.7/src/pair.hpp +76 -0
- data/libzmq/zeromq-2.1.7/src/pgm_receiver.cpp +259 -0
- data/libzmq/zeromq-2.1.7/src/pgm_receiver.hpp +129 -0
- data/libzmq/zeromq-2.1.7/src/pgm_sender.cpp +215 -0
- data/libzmq/zeromq-2.1.7/src/pgm_sender.hpp +105 -0
- data/libzmq/zeromq-2.1.7/src/pgm_socket.cpp +705 -0
- data/libzmq/zeromq-2.1.7/src/pgm_socket.hpp +118 -0
- data/libzmq/zeromq-2.1.7/src/pipe.cpp +409 -0
- data/libzmq/zeromq-2.1.7/src/pipe.hpp +214 -0
- data/libzmq/zeromq-2.1.7/src/platform.hpp.in +228 -0
- data/libzmq/zeromq-2.1.7/src/poll.cpp +180 -0
- data/libzmq/zeromq-2.1.7/src/poll.hpp +104 -0
- data/libzmq/zeromq-2.1.7/src/poller.hpp +73 -0
- data/libzmq/zeromq-2.1.7/src/poller_base.cpp +99 -0
- data/libzmq/zeromq-2.1.7/src/poller_base.hpp +84 -0
- data/libzmq/zeromq-2.1.7/src/pub.cpp +31 -0
- data/libzmq/zeromq-2.1.7/src/pub.hpp +44 -0
- data/libzmq/zeromq-2.1.7/src/pull.cpp +61 -0
- data/libzmq/zeromq-2.1.7/src/pull.hpp +60 -0
- data/libzmq/zeromq-2.1.7/src/push.cpp +62 -0
- data/libzmq/zeromq-2.1.7/src/push.hpp +59 -0
- data/libzmq/zeromq-2.1.7/src/reaper.cpp +121 -0
- data/libzmq/zeromq-2.1.7/src/reaper.hpp +77 -0
- data/libzmq/zeromq-2.1.7/src/rep.cpp +131 -0
- data/libzmq/zeromq-2.1.7/src/rep.hpp +59 -0
- data/libzmq/zeromq-2.1.7/src/req.cpp +121 -0
- data/libzmq/zeromq-2.1.7/src/req.hpp +58 -0
- data/libzmq/zeromq-2.1.7/src/select.cpp +211 -0
- data/libzmq/zeromq-2.1.7/src/select.hpp +116 -0
- data/libzmq/zeromq-2.1.7/src/semaphore.hpp +189 -0
- data/libzmq/zeromq-2.1.7/src/session.cpp +347 -0
- data/libzmq/zeromq-2.1.7/src/session.hpp +150 -0
- data/libzmq/zeromq-2.1.7/src/socket_base.cpp +811 -0
- data/libzmq/zeromq-2.1.7/src/socket_base.hpp +207 -0
- data/libzmq/zeromq-2.1.7/src/stdint.hpp +63 -0
- data/libzmq/zeromq-2.1.7/src/sub.cpp +75 -0
- data/libzmq/zeromq-2.1.7/src/sub.hpp +50 -0
- data/libzmq/zeromq-2.1.7/src/swap.cpp +325 -0
- data/libzmq/zeromq-2.1.7/src/swap.hpp +123 -0
- data/libzmq/zeromq-2.1.7/src/tcp_connecter.cpp +310 -0
- data/libzmq/zeromq-2.1.7/src/tcp_connecter.hpp +81 -0
- data/libzmq/zeromq-2.1.7/src/tcp_listener.cpp +371 -0
- data/libzmq/zeromq-2.1.7/src/tcp_listener.hpp +73 -0
- data/libzmq/zeromq-2.1.7/src/tcp_socket.cpp +228 -0
- data/libzmq/zeromq-2.1.7/src/tcp_socket.hpp +72 -0
- data/libzmq/zeromq-2.1.7/src/thread.cpp +97 -0
- data/libzmq/zeromq-2.1.7/src/thread.hpp +78 -0
- data/libzmq/zeromq-2.1.7/src/transient_session.cpp +41 -0
- data/libzmq/zeromq-2.1.7/src/transient_session.hpp +52 -0
- data/libzmq/zeromq-2.1.7/src/trie.cpp +181 -0
- data/libzmq/zeromq-2.1.7/src/trie.hpp +59 -0
- data/libzmq/zeromq-2.1.7/src/uuid.cpp +233 -0
- data/libzmq/zeromq-2.1.7/src/uuid.hpp +111 -0
- data/libzmq/zeromq-2.1.7/src/windows.hpp +79 -0
- data/libzmq/zeromq-2.1.7/src/wire.hpp +99 -0
- data/libzmq/zeromq-2.1.7/src/xpub.cpp +76 -0
- data/libzmq/zeromq-2.1.7/src/xpub.hpp +61 -0
- data/libzmq/zeromq-2.1.7/src/xrep.cpp +337 -0
- data/libzmq/zeromq-2.1.7/src/xrep.hpp +116 -0
- data/libzmq/zeromq-2.1.7/src/xreq.cpp +74 -0
- data/libzmq/zeromq-2.1.7/src/xreq.hpp +65 -0
- data/libzmq/zeromq-2.1.7/src/xsub.cpp +172 -0
- data/libzmq/zeromq-2.1.7/src/xsub.hpp +80 -0
- data/libzmq/zeromq-2.1.7/src/ypipe.hpp +209 -0
- data/libzmq/zeromq-2.1.7/src/yqueue.hpp +198 -0
- data/libzmq/zeromq-2.1.7/src/zmq.cpp +798 -0
- data/libzmq/zeromq-2.1.7/src/zmq_connecter.cpp +166 -0
- data/libzmq/zeromq-2.1.7/src/zmq_connecter.hpp +92 -0
- data/libzmq/zeromq-2.1.7/src/zmq_engine.cpp +220 -0
- data/libzmq/zeromq-2.1.7/src/zmq_engine.hpp +87 -0
- data/libzmq/zeromq-2.1.7/src/zmq_init.cpp +216 -0
- data/libzmq/zeromq-2.1.7/src/zmq_init.hpp +93 -0
- data/libzmq/zeromq-2.1.7/src/zmq_listener.cpp +78 -0
- data/libzmq/zeromq-2.1.7/src/zmq_listener.hpp +67 -0
- data/libzmq/zeromq-2.1.7/tests/Makefile.am +30 -0
- data/libzmq/zeromq-2.1.7/tests/Makefile.in +713 -0
- data/libzmq/zeromq-2.1.7/tests/test_hwm.cpp +68 -0
- data/libzmq/zeromq-2.1.7/tests/test_pair_inproc.cpp +31 -0
- data/libzmq/zeromq-2.1.7/tests/test_pair_ipc.cpp +31 -0
- data/libzmq/zeromq-2.1.7/tests/test_pair_tcp.cpp +31 -0
- data/libzmq/zeromq-2.1.7/tests/test_reqrep_inproc.cpp +31 -0
- data/libzmq/zeromq-2.1.7/tests/test_reqrep_ipc.cpp +31 -0
- data/libzmq/zeromq-2.1.7/tests/test_reqrep_tcp.cpp +31 -0
- data/libzmq/zeromq-2.1.7/tests/test_shutdown_stress.cpp +87 -0
- data/libzmq/zeromq-2.1.7/tests/testutil.hpp +130 -0
- data/libzmq/zeromq-2.1.7/version.sh +21 -0
- data/libzmq/zeromq-2.1.7/zeromq.spec +139 -0
- metadata +348 -0
@@ -0,0 +1,116 @@
|
|
1
|
+
/*
|
2
|
+
Copyright (c) 2007-2011 iMatix Corporation
|
3
|
+
Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
|
4
|
+
|
5
|
+
This file is part of 0MQ.
|
6
|
+
|
7
|
+
0MQ is free software; you can redistribute it and/or modify it under
|
8
|
+
the terms of the GNU Lesser General Public License as published by
|
9
|
+
the Free Software Foundation; either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
11
|
+
|
12
|
+
0MQ is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU Lesser General Public License for more details.
|
16
|
+
|
17
|
+
You should have received a copy of the GNU Lesser General Public License
|
18
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
*/
|
20
|
+
|
21
|
+
#ifndef __ZMQ_XREP_HPP_INCLUDED__
|
22
|
+
#define __ZMQ_XREP_HPP_INCLUDED__
|
23
|
+
|
24
|
+
#include <map>
|
25
|
+
#include <vector>
|
26
|
+
|
27
|
+
#include "socket_base.hpp"
|
28
|
+
#include "blob.hpp"
|
29
|
+
#include "pipe.hpp"
|
30
|
+
|
31
|
+
namespace zmq
|
32
|
+
{
|
33
|
+
|
34
|
+
// TODO: This class uses O(n) scheduling. Rewrite it to use O(1) algorithm.
|
35
|
+
class xrep_t :
|
36
|
+
public socket_base_t,
|
37
|
+
public i_reader_events,
|
38
|
+
public i_writer_events
|
39
|
+
{
|
40
|
+
public:
|
41
|
+
|
42
|
+
xrep_t (class ctx_t *parent_, uint32_t tid_);
|
43
|
+
~xrep_t ();
|
44
|
+
|
45
|
+
// Overloads of functions from socket_base_t.
|
46
|
+
void xattach_pipes (reader_t *inpipe_, writer_t *outpipe_,
|
47
|
+
const blob_t &peer_identity_);
|
48
|
+
int xsend (zmq_msg_t *msg_, int flags_);
|
49
|
+
int xrecv (zmq_msg_t *msg_, int flags_);
|
50
|
+
int rollback ();
|
51
|
+
bool xhas_in ();
|
52
|
+
bool xhas_out ();
|
53
|
+
|
54
|
+
private:
|
55
|
+
|
56
|
+
// Hook into the termination process.
|
57
|
+
void process_term (int linger_);
|
58
|
+
|
59
|
+
// i_reader_events interface implementation.
|
60
|
+
void activated (reader_t *pipe_);
|
61
|
+
void terminated (reader_t *pipe_);
|
62
|
+
void delimited (reader_t *pipe_);
|
63
|
+
|
64
|
+
// i_writer_events interface implementation.
|
65
|
+
void activated (writer_t *pipe_);
|
66
|
+
void terminated (writer_t *pipe_);
|
67
|
+
|
68
|
+
struct inpipe_t
|
69
|
+
{
|
70
|
+
class reader_t *reader;
|
71
|
+
blob_t identity;
|
72
|
+
bool active;
|
73
|
+
};
|
74
|
+
|
75
|
+
// Inbound pipes with the names of corresponging peers.
|
76
|
+
typedef std::vector <inpipe_t> inpipes_t;
|
77
|
+
inpipes_t inpipes;
|
78
|
+
|
79
|
+
// The pipe we are currently reading from.
|
80
|
+
inpipes_t::size_type current_in;
|
81
|
+
|
82
|
+
// Have we prefetched a message.
|
83
|
+
bool prefetched;
|
84
|
+
|
85
|
+
// Holds the prefetched message.
|
86
|
+
zmq_msg_t prefetched_msg;
|
87
|
+
|
88
|
+
// If true, more incoming message parts are expected.
|
89
|
+
bool more_in;
|
90
|
+
|
91
|
+
struct outpipe_t
|
92
|
+
{
|
93
|
+
class writer_t *writer;
|
94
|
+
bool active;
|
95
|
+
};
|
96
|
+
|
97
|
+
// Outbound pipes indexed by the peer names.
|
98
|
+
typedef std::map <blob_t, outpipe_t> outpipes_t;
|
99
|
+
outpipes_t outpipes;
|
100
|
+
|
101
|
+
// The pipe we are currently writing to.
|
102
|
+
class writer_t *current_out;
|
103
|
+
|
104
|
+
// If true, more outgoing message parts are expected.
|
105
|
+
bool more_out;
|
106
|
+
|
107
|
+
// If true, termination process is already underway.
|
108
|
+
bool terminating;
|
109
|
+
|
110
|
+
xrep_t (const xrep_t&);
|
111
|
+
const xrep_t &operator = (const xrep_t&);
|
112
|
+
};
|
113
|
+
|
114
|
+
}
|
115
|
+
|
116
|
+
#endif
|
@@ -0,0 +1,74 @@
|
|
1
|
+
/*
|
2
|
+
Copyright (c) 2007-2011 iMatix Corporation
|
3
|
+
Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
|
4
|
+
|
5
|
+
This file is part of 0MQ.
|
6
|
+
|
7
|
+
0MQ is free software; you can redistribute it and/or modify it under
|
8
|
+
the terms of the GNU Lesser General Public License as published by
|
9
|
+
the Free Software Foundation; either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
11
|
+
|
12
|
+
0MQ is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU Lesser General Public License for more details.
|
16
|
+
|
17
|
+
You should have received a copy of the GNU Lesser General Public License
|
18
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
*/
|
20
|
+
|
21
|
+
#include "../include/zmq.h"
|
22
|
+
|
23
|
+
#include "xreq.hpp"
|
24
|
+
#include "err.hpp"
|
25
|
+
|
26
|
+
zmq::xreq_t::xreq_t (class ctx_t *parent_, uint32_t tid_) :
|
27
|
+
socket_base_t (parent_, tid_),
|
28
|
+
fq (this),
|
29
|
+
lb (this)
|
30
|
+
{
|
31
|
+
options.type = ZMQ_XREQ;
|
32
|
+
options.requires_in = true;
|
33
|
+
options.requires_out = true;
|
34
|
+
}
|
35
|
+
|
36
|
+
zmq::xreq_t::~xreq_t ()
|
37
|
+
{
|
38
|
+
}
|
39
|
+
|
40
|
+
void zmq::xreq_t::xattach_pipes (class reader_t *inpipe_,
|
41
|
+
class writer_t *outpipe_, const blob_t &peer_identity_)
|
42
|
+
{
|
43
|
+
zmq_assert (inpipe_ && outpipe_);
|
44
|
+
fq.attach (inpipe_);
|
45
|
+
lb.attach (outpipe_);
|
46
|
+
}
|
47
|
+
|
48
|
+
void zmq::xreq_t::process_term (int linger_)
|
49
|
+
{
|
50
|
+
fq.terminate ();
|
51
|
+
lb.terminate ();
|
52
|
+
socket_base_t::process_term (linger_);
|
53
|
+
}
|
54
|
+
|
55
|
+
int zmq::xreq_t::xsend (zmq_msg_t *msg_, int flags_)
|
56
|
+
{
|
57
|
+
return lb.send (msg_, flags_);
|
58
|
+
}
|
59
|
+
|
60
|
+
int zmq::xreq_t::xrecv (zmq_msg_t *msg_, int flags_)
|
61
|
+
{
|
62
|
+
return fq.recv (msg_, flags_);
|
63
|
+
}
|
64
|
+
|
65
|
+
bool zmq::xreq_t::xhas_in ()
|
66
|
+
{
|
67
|
+
return fq.has_in ();
|
68
|
+
}
|
69
|
+
|
70
|
+
bool zmq::xreq_t::xhas_out ()
|
71
|
+
{
|
72
|
+
return lb.has_out ();
|
73
|
+
}
|
74
|
+
|
@@ -0,0 +1,65 @@
|
|
1
|
+
/*
|
2
|
+
Copyright (c) 2007-2011 iMatix Corporation
|
3
|
+
Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
|
4
|
+
|
5
|
+
|
6
|
+
This file is part of 0MQ.
|
7
|
+
|
8
|
+
0MQ is free software; you can redistribute it and/or modify it under
|
9
|
+
the terms of the GNU Lesser General Public License as published by
|
10
|
+
the Free Software Foundation; either version 3 of the License, or
|
11
|
+
(at your option) any later version.
|
12
|
+
|
13
|
+
0MQ is distributed in the hope that it will be useful,
|
14
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
GNU Lesser General Public License for more details.
|
17
|
+
|
18
|
+
You should have received a copy of the GNU Lesser General Public License
|
19
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
20
|
+
*/
|
21
|
+
|
22
|
+
#ifndef __ZMQ_XREQ_HPP_INCLUDED__
|
23
|
+
#define __ZMQ_XREQ_HPP_INCLUDED__
|
24
|
+
|
25
|
+
#include "socket_base.hpp"
|
26
|
+
#include "fq.hpp"
|
27
|
+
#include "lb.hpp"
|
28
|
+
|
29
|
+
namespace zmq
|
30
|
+
{
|
31
|
+
|
32
|
+
class xreq_t : public socket_base_t
|
33
|
+
{
|
34
|
+
public:
|
35
|
+
|
36
|
+
xreq_t (class ctx_t *parent_, uint32_t tid_);
|
37
|
+
~xreq_t ();
|
38
|
+
|
39
|
+
protected:
|
40
|
+
|
41
|
+
// Overloads of functions from socket_base_t.
|
42
|
+
void xattach_pipes (class reader_t *inpipe_, class writer_t *outpipe_,
|
43
|
+
const blob_t &peer_identity_);
|
44
|
+
int xsend (zmq_msg_t *msg_, int flags_);
|
45
|
+
int xrecv (zmq_msg_t *msg_, int flags_);
|
46
|
+
bool xhas_in ();
|
47
|
+
bool xhas_out ();
|
48
|
+
|
49
|
+
private:
|
50
|
+
|
51
|
+
// Hook into the termination process.
|
52
|
+
void process_term (int linger_);
|
53
|
+
|
54
|
+
// Messages are fair-queued from inbound pipes. And load-balanced to
|
55
|
+
// the outbound pipes.
|
56
|
+
fq_t fq;
|
57
|
+
lb_t lb;
|
58
|
+
|
59
|
+
xreq_t (const xreq_t&);
|
60
|
+
const xreq_t &operator = (const xreq_t&);
|
61
|
+
};
|
62
|
+
|
63
|
+
}
|
64
|
+
|
65
|
+
#endif
|
@@ -0,0 +1,172 @@
|
|
1
|
+
/*
|
2
|
+
Copyright (c) 2007-2011 iMatix Corporation
|
3
|
+
Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
|
4
|
+
|
5
|
+
This file is part of 0MQ.
|
6
|
+
|
7
|
+
0MQ is free software; you can redistribute it and/or modify it under
|
8
|
+
the terms of the GNU Lesser General Public License as published by
|
9
|
+
the Free Software Foundation; either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
11
|
+
|
12
|
+
0MQ is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU Lesser General Public License for more details.
|
16
|
+
|
17
|
+
You should have received a copy of the GNU Lesser General Public License
|
18
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
*/
|
20
|
+
|
21
|
+
#include <string.h>
|
22
|
+
|
23
|
+
#include "../include/zmq.h"
|
24
|
+
|
25
|
+
#include "xsub.hpp"
|
26
|
+
#include "err.hpp"
|
27
|
+
|
28
|
+
zmq::xsub_t::xsub_t (class ctx_t *parent_, uint32_t tid_) :
|
29
|
+
socket_base_t (parent_, tid_),
|
30
|
+
fq (this),
|
31
|
+
has_message (false),
|
32
|
+
more (false)
|
33
|
+
{
|
34
|
+
options.type = ZMQ_XSUB;
|
35
|
+
options.requires_in = true;
|
36
|
+
options.requires_out = false;
|
37
|
+
zmq_msg_init (&message);
|
38
|
+
}
|
39
|
+
|
40
|
+
zmq::xsub_t::~xsub_t ()
|
41
|
+
{
|
42
|
+
zmq_msg_close (&message);
|
43
|
+
}
|
44
|
+
|
45
|
+
void zmq::xsub_t::xattach_pipes (class reader_t *inpipe_,
|
46
|
+
class writer_t *outpipe_, const blob_t &peer_identity_)
|
47
|
+
{
|
48
|
+
zmq_assert (inpipe_ && !outpipe_);
|
49
|
+
fq.attach (inpipe_);
|
50
|
+
}
|
51
|
+
|
52
|
+
void zmq::xsub_t::process_term (int linger_)
|
53
|
+
{
|
54
|
+
fq.terminate ();
|
55
|
+
socket_base_t::process_term (linger_);
|
56
|
+
}
|
57
|
+
|
58
|
+
int zmq::xsub_t::xsend (zmq_msg_t *msg_, int options_)
|
59
|
+
{
|
60
|
+
size_t size = zmq_msg_size (msg_);
|
61
|
+
unsigned char *data = (unsigned char*) zmq_msg_data (msg_);
|
62
|
+
|
63
|
+
// Malformed subscriptions are dropped silently.
|
64
|
+
if (size >= 1) {
|
65
|
+
|
66
|
+
// Process a subscription.
|
67
|
+
if (*data == 1)
|
68
|
+
subscriptions.add (data + 1, size - 1);
|
69
|
+
|
70
|
+
// Process an unsubscription. Invalid unsubscription is ignored.
|
71
|
+
if (*data == 0)
|
72
|
+
subscriptions.rm (data + 1, size - 1);
|
73
|
+
}
|
74
|
+
|
75
|
+
int rc = zmq_msg_close (msg_);
|
76
|
+
zmq_assert (rc == 0);
|
77
|
+
rc = zmq_msg_init (msg_);
|
78
|
+
zmq_assert (rc == 0);
|
79
|
+
return 0;
|
80
|
+
}
|
81
|
+
|
82
|
+
bool zmq::xsub_t::xhas_out ()
|
83
|
+
{
|
84
|
+
// Subscription can be added/removed anytime.
|
85
|
+
return true;
|
86
|
+
}
|
87
|
+
|
88
|
+
int zmq::xsub_t::xrecv (zmq_msg_t *msg_, int flags_)
|
89
|
+
{
|
90
|
+
// If there's already a message prepared by a previous call to zmq_poll,
|
91
|
+
// return it straight ahead.
|
92
|
+
if (has_message) {
|
93
|
+
zmq_msg_move (msg_, &message);
|
94
|
+
has_message = false;
|
95
|
+
more = msg_->flags & ZMQ_MSG_MORE;
|
96
|
+
return 0;
|
97
|
+
}
|
98
|
+
|
99
|
+
// TODO: This can result in infinite loop in the case of continuous
|
100
|
+
// stream of non-matching messages which breaks the non-blocking recv
|
101
|
+
// semantics.
|
102
|
+
while (true) {
|
103
|
+
|
104
|
+
// Get a message using fair queueing algorithm.
|
105
|
+
int rc = fq.recv (msg_, flags_);
|
106
|
+
|
107
|
+
// If there's no message available, return immediately.
|
108
|
+
// The same when error occurs.
|
109
|
+
if (rc != 0)
|
110
|
+
return -1;
|
111
|
+
|
112
|
+
// Check whether the message matches at least one subscription.
|
113
|
+
// Non-initial parts of the message are passed
|
114
|
+
if (more || match (msg_)) {
|
115
|
+
more = msg_->flags & ZMQ_MSG_MORE;
|
116
|
+
return 0;
|
117
|
+
}
|
118
|
+
|
119
|
+
// Message doesn't match. Pop any remaining parts of the message
|
120
|
+
// from the pipe.
|
121
|
+
while (msg_->flags & ZMQ_MSG_MORE) {
|
122
|
+
rc = fq.recv (msg_, ZMQ_NOBLOCK);
|
123
|
+
zmq_assert (rc == 0);
|
124
|
+
}
|
125
|
+
}
|
126
|
+
}
|
127
|
+
|
128
|
+
bool zmq::xsub_t::xhas_in ()
|
129
|
+
{
|
130
|
+
// There are subsequent parts of the partly-read message available.
|
131
|
+
if (more)
|
132
|
+
return true;
|
133
|
+
|
134
|
+
// If there's already a message prepared by a previous call to zmq_poll,
|
135
|
+
// return straight ahead.
|
136
|
+
if (has_message)
|
137
|
+
return true;
|
138
|
+
|
139
|
+
// TODO: This can result in infinite loop in the case of continuous
|
140
|
+
// stream of non-matching messages.
|
141
|
+
while (true) {
|
142
|
+
|
143
|
+
// Get a message using fair queueing algorithm.
|
144
|
+
int rc = fq.recv (&message, ZMQ_NOBLOCK);
|
145
|
+
|
146
|
+
// If there's no message available, return immediately.
|
147
|
+
// The same when error occurs.
|
148
|
+
if (rc != 0) {
|
149
|
+
zmq_assert (errno == EAGAIN);
|
150
|
+
return false;
|
151
|
+
}
|
152
|
+
|
153
|
+
// Check whether the message matches at least one subscription.
|
154
|
+
if (match (&message)) {
|
155
|
+
has_message = true;
|
156
|
+
return true;
|
157
|
+
}
|
158
|
+
|
159
|
+
// Message doesn't match. Pop any remaining parts of the message
|
160
|
+
// from the pipe.
|
161
|
+
while (message.flags & ZMQ_MSG_MORE) {
|
162
|
+
rc = fq.recv (&message, ZMQ_NOBLOCK);
|
163
|
+
zmq_assert (rc == 0);
|
164
|
+
}
|
165
|
+
}
|
166
|
+
}
|
167
|
+
|
168
|
+
bool zmq::xsub_t::match (zmq_msg_t *msg_)
|
169
|
+
{
|
170
|
+
return subscriptions.check ((unsigned char*) zmq_msg_data (msg_),
|
171
|
+
zmq_msg_size (msg_));
|
172
|
+
}
|
@@ -0,0 +1,80 @@
|
|
1
|
+
/*
|
2
|
+
Copyright (c) 2007-2011 iMatix Corporation
|
3
|
+
Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
|
4
|
+
|
5
|
+
This file is part of 0MQ.
|
6
|
+
|
7
|
+
0MQ is free software; you can redistribute it and/or modify it under
|
8
|
+
the terms of the GNU Lesser General Public License as published by
|
9
|
+
the Free Software Foundation; either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
11
|
+
|
12
|
+
0MQ is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU Lesser General Public License for more details.
|
16
|
+
|
17
|
+
You should have received a copy of the GNU Lesser General Public License
|
18
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
*/
|
20
|
+
|
21
|
+
#ifndef __ZMQ_XSUB_HPP_INCLUDED__
|
22
|
+
#define __ZMQ_XSUB_HPP_INCLUDED__
|
23
|
+
|
24
|
+
#include "../include/zmq.h"
|
25
|
+
|
26
|
+
#include "trie.hpp"
|
27
|
+
#include "socket_base.hpp"
|
28
|
+
#include "fq.hpp"
|
29
|
+
|
30
|
+
namespace zmq
|
31
|
+
{
|
32
|
+
|
33
|
+
class xsub_t : public socket_base_t
|
34
|
+
{
|
35
|
+
public:
|
36
|
+
|
37
|
+
xsub_t (class ctx_t *parent_, uint32_t tid_);
|
38
|
+
~xsub_t ();
|
39
|
+
|
40
|
+
protected:
|
41
|
+
|
42
|
+
// Overloads of functions from socket_base_t.
|
43
|
+
void xattach_pipes (class reader_t *inpipe_, class writer_t *outpipe_,
|
44
|
+
const blob_t &peer_identity_);
|
45
|
+
int xsend (zmq_msg_t *msg_, int options_);
|
46
|
+
bool xhas_out ();
|
47
|
+
int xrecv (zmq_msg_t *msg_, int flags_);
|
48
|
+
bool xhas_in ();
|
49
|
+
|
50
|
+
private:
|
51
|
+
|
52
|
+
// Hook into the termination process.
|
53
|
+
void process_term (int linger_);
|
54
|
+
|
55
|
+
// Check whether the message matches at least one subscription.
|
56
|
+
bool match (zmq_msg_t *msg_);
|
57
|
+
|
58
|
+
// Fair queueing object for inbound pipes.
|
59
|
+
fq_t fq;
|
60
|
+
|
61
|
+
// The repository of subscriptions.
|
62
|
+
trie_t subscriptions;
|
63
|
+
|
64
|
+
// If true, 'message' contains a matching message to return on the
|
65
|
+
// next recv call.
|
66
|
+
bool has_message;
|
67
|
+
zmq_msg_t message;
|
68
|
+
|
69
|
+
// If true, part of a multipart message was already received, but
|
70
|
+
// there are following parts still waiting.
|
71
|
+
bool more;
|
72
|
+
|
73
|
+
xsub_t (const xsub_t&);
|
74
|
+
const xsub_t &operator = (const xsub_t&);
|
75
|
+
};
|
76
|
+
|
77
|
+
}
|
78
|
+
|
79
|
+
#endif
|
80
|
+
|