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,62 @@
|
|
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_MAILBOX_HPP_INCLUDED__
|
22
|
+
#define __ZMQ_MAILBOX_HPP_INCLUDED__
|
23
|
+
|
24
|
+
#include <stddef.h>
|
25
|
+
|
26
|
+
#include "platform.hpp"
|
27
|
+
#include "fd.hpp"
|
28
|
+
#include "stdint.hpp"
|
29
|
+
#include "config.hpp"
|
30
|
+
#include "command.hpp"
|
31
|
+
|
32
|
+
namespace zmq
|
33
|
+
{
|
34
|
+
|
35
|
+
class mailbox_t
|
36
|
+
{
|
37
|
+
public:
|
38
|
+
|
39
|
+
mailbox_t ();
|
40
|
+
~mailbox_t ();
|
41
|
+
|
42
|
+
fd_t get_fd ();
|
43
|
+
void send (const command_t &cmd_);
|
44
|
+
int recv (command_t *cmd_, bool block_);
|
45
|
+
|
46
|
+
private:
|
47
|
+
|
48
|
+
// Write & read end of the socketpair.
|
49
|
+
fd_t w;
|
50
|
+
fd_t r;
|
51
|
+
|
52
|
+
// Platform-dependent function to create a socketpair.
|
53
|
+
static int make_socketpair (fd_t *r_, fd_t *w_);
|
54
|
+
|
55
|
+
// Disable copying of mailbox_t object.
|
56
|
+
mailbox_t (const mailbox_t&);
|
57
|
+
const mailbox_t &operator = (const mailbox_t&);
|
58
|
+
};
|
59
|
+
|
60
|
+
}
|
61
|
+
|
62
|
+
#endif
|
@@ -0,0 +1,52 @@
|
|
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_MSG_HPP_INCLUDE__
|
22
|
+
#define __ZMQ_MSG_HPP_INCLUDE__
|
23
|
+
|
24
|
+
#include <stddef.h>
|
25
|
+
|
26
|
+
#include "../include/zmq.h"
|
27
|
+
|
28
|
+
#include "atomic_counter.hpp"
|
29
|
+
|
30
|
+
namespace zmq
|
31
|
+
{
|
32
|
+
|
33
|
+
// Shared message buffer. Message data are either allocated in one
|
34
|
+
// continuous block along with this structure - thus avoiding one
|
35
|
+
// malloc/free pair or they are stored in used-supplied memory.
|
36
|
+
// In the latter case, ffn member stores pointer to the function to be
|
37
|
+
// used to deallocate the data. If the buffer is actually shared (there
|
38
|
+
// are at least 2 references to it) refcount member contains number of
|
39
|
+
// references.
|
40
|
+
|
41
|
+
struct msg_content_t
|
42
|
+
{
|
43
|
+
void *data;
|
44
|
+
size_t size;
|
45
|
+
zmq_free_fn *ffn;
|
46
|
+
void *hint;
|
47
|
+
zmq::atomic_counter_t refcnt;
|
48
|
+
};
|
49
|
+
|
50
|
+
}
|
51
|
+
|
52
|
+
#endif
|
@@ -0,0 +1,121 @@
|
|
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_MUTEX_HPP_INCLUDED__
|
22
|
+
#define __ZMQ_MUTEX_HPP_INCLUDED__
|
23
|
+
|
24
|
+
#include "platform.hpp"
|
25
|
+
#include "err.hpp"
|
26
|
+
|
27
|
+
// Mutex class encapsulates OS mutex in a platform-independent way.
|
28
|
+
|
29
|
+
#ifdef ZMQ_HAVE_WINDOWS
|
30
|
+
|
31
|
+
#include "windows.hpp"
|
32
|
+
|
33
|
+
namespace zmq
|
34
|
+
{
|
35
|
+
|
36
|
+
class mutex_t
|
37
|
+
{
|
38
|
+
public:
|
39
|
+
inline mutex_t ()
|
40
|
+
{
|
41
|
+
InitializeCriticalSection (&cs);
|
42
|
+
}
|
43
|
+
|
44
|
+
inline ~mutex_t ()
|
45
|
+
{
|
46
|
+
DeleteCriticalSection (&cs);
|
47
|
+
}
|
48
|
+
|
49
|
+
inline void lock ()
|
50
|
+
{
|
51
|
+
EnterCriticalSection (&cs);
|
52
|
+
}
|
53
|
+
|
54
|
+
inline void unlock ()
|
55
|
+
{
|
56
|
+
LeaveCriticalSection (&cs);
|
57
|
+
}
|
58
|
+
|
59
|
+
private:
|
60
|
+
|
61
|
+
CRITICAL_SECTION cs;
|
62
|
+
|
63
|
+
// Disable copy construction and assignment.
|
64
|
+
mutex_t (const mutex_t&);
|
65
|
+
void operator = (const mutex_t&);
|
66
|
+
};
|
67
|
+
|
68
|
+
}
|
69
|
+
|
70
|
+
#else
|
71
|
+
|
72
|
+
#include <pthread.h>
|
73
|
+
|
74
|
+
namespace zmq
|
75
|
+
{
|
76
|
+
|
77
|
+
class mutex_t
|
78
|
+
{
|
79
|
+
public:
|
80
|
+
inline mutex_t ()
|
81
|
+
{
|
82
|
+
int rc = pthread_mutex_init (&mutex, NULL);
|
83
|
+
if (rc)
|
84
|
+
posix_assert (rc);
|
85
|
+
}
|
86
|
+
|
87
|
+
inline ~mutex_t ()
|
88
|
+
{
|
89
|
+
int rc = pthread_mutex_destroy (&mutex);
|
90
|
+
if (rc)
|
91
|
+
posix_assert (rc);
|
92
|
+
}
|
93
|
+
|
94
|
+
inline void lock ()
|
95
|
+
{
|
96
|
+
int rc = pthread_mutex_lock (&mutex);
|
97
|
+
if (rc)
|
98
|
+
posix_assert (rc);
|
99
|
+
}
|
100
|
+
|
101
|
+
inline void unlock ()
|
102
|
+
{
|
103
|
+
int rc = pthread_mutex_unlock (&mutex);
|
104
|
+
if (rc)
|
105
|
+
posix_assert (rc);
|
106
|
+
}
|
107
|
+
|
108
|
+
private:
|
109
|
+
|
110
|
+
pthread_mutex_t mutex;
|
111
|
+
|
112
|
+
// Disable copy construction and assignment.
|
113
|
+
mutex_t (const mutex_t&);
|
114
|
+
const mutex_t &operator = (const mutex_t&);
|
115
|
+
};
|
116
|
+
|
117
|
+
}
|
118
|
+
|
119
|
+
#endif
|
120
|
+
|
121
|
+
#endif
|
@@ -0,0 +1,85 @@
|
|
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 "named_session.hpp"
|
22
|
+
#include "socket_base.hpp"
|
23
|
+
|
24
|
+
zmq::named_session_t::named_session_t (class io_thread_t *io_thread_,
|
25
|
+
socket_base_t *socket_, const options_t &options_,
|
26
|
+
const blob_t &name_) :
|
27
|
+
session_t (io_thread_, socket_, options_),
|
28
|
+
name (name_)
|
29
|
+
{
|
30
|
+
// Make double sure that the session has valid name.
|
31
|
+
zmq_assert (!name.empty ());
|
32
|
+
zmq_assert (name [0] != 0);
|
33
|
+
|
34
|
+
if (!socket_->register_session (name, this)) {
|
35
|
+
|
36
|
+
// TODO: There's already a session with the specified
|
37
|
+
// identity. We should log the error and drop the
|
38
|
+
// session.
|
39
|
+
zmq_assert (false);
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
zmq::named_session_t::~named_session_t ()
|
44
|
+
{
|
45
|
+
// Unregister the session from the global list of named sessions.
|
46
|
+
if (!name.empty ())
|
47
|
+
unregister_session (name);
|
48
|
+
}
|
49
|
+
|
50
|
+
void zmq::named_session_t::attached (const blob_t &peer_identity_)
|
51
|
+
{
|
52
|
+
if (!name.empty ()) {
|
53
|
+
|
54
|
+
// If both IDs are temporary, no checking is needed.
|
55
|
+
// TODO: Old ID should be reused in this case...
|
56
|
+
if (name.empty () || name [0] != 0 ||
|
57
|
+
peer_identity_.empty () || peer_identity_ [0] != 0) {
|
58
|
+
|
59
|
+
// If we already know the peer name do nothing, just check whether
|
60
|
+
// it haven't changed.
|
61
|
+
zmq_assert (name == peer_identity_);
|
62
|
+
}
|
63
|
+
}
|
64
|
+
else if (!peer_identity_.empty ()) {
|
65
|
+
|
66
|
+
// Store the peer identity.
|
67
|
+
name = peer_identity_;
|
68
|
+
|
69
|
+
// Register the session using the peer name.
|
70
|
+
if (!register_session (name, this)) {
|
71
|
+
|
72
|
+
// TODO: There's already a session with the specified
|
73
|
+
// identity. We should presumably syslog it and drop the
|
74
|
+
// session.
|
75
|
+
zmq_assert (false);
|
76
|
+
}
|
77
|
+
}
|
78
|
+
}
|
79
|
+
|
80
|
+
void zmq::named_session_t::detached ()
|
81
|
+
{
|
82
|
+
// Do nothing. Named sessions are never destroyed because of disconnection,
|
83
|
+
// neither they have to actively reconnect.
|
84
|
+
}
|
85
|
+
|
@@ -0,0 +1,57 @@
|
|
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_NAMED_SESSION_HPP_INCLUDED__
|
22
|
+
#define __ZMQ_NAMED_SESSION_HPP_INCLUDED__
|
23
|
+
|
24
|
+
#include "session.hpp"
|
25
|
+
#include "blob.hpp"
|
26
|
+
|
27
|
+
namespace zmq
|
28
|
+
{
|
29
|
+
|
30
|
+
// Named session is created by listener object when the peer identifies
|
31
|
+
// itself by a strong name. Named session survives reconnections.
|
32
|
+
|
33
|
+
class named_session_t : public session_t
|
34
|
+
{
|
35
|
+
public:
|
36
|
+
|
37
|
+
named_session_t (class io_thread_t *io_thread_,
|
38
|
+
class socket_base_t *socket_, const options_t &options_,
|
39
|
+
const blob_t &name_);
|
40
|
+
~named_session_t ();
|
41
|
+
|
42
|
+
// Handlers for events from session base class.
|
43
|
+
void attached (const blob_t &peer_identity_);
|
44
|
+
void detached ();
|
45
|
+
|
46
|
+
private:
|
47
|
+
|
48
|
+
// Name of the session. Corresponds to the peer's strong identity.
|
49
|
+
blob_t name;
|
50
|
+
|
51
|
+
named_session_t (const named_session_t&);
|
52
|
+
const named_session_t &operator = (const named_session_t&);
|
53
|
+
};
|
54
|
+
|
55
|
+
}
|
56
|
+
|
57
|
+
#endif
|
@@ -0,0 +1,467 @@
|
|
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
|
+
#include <stdarg.h>
|
23
|
+
|
24
|
+
#include "object.hpp"
|
25
|
+
#include "ctx.hpp"
|
26
|
+
#include "err.hpp"
|
27
|
+
#include "pipe.hpp"
|
28
|
+
#include "io_thread.hpp"
|
29
|
+
#include "session.hpp"
|
30
|
+
#include "socket_base.hpp"
|
31
|
+
|
32
|
+
zmq::object_t::object_t (ctx_t *ctx_, uint32_t tid_) :
|
33
|
+
ctx (ctx_),
|
34
|
+
tid (tid_)
|
35
|
+
{
|
36
|
+
}
|
37
|
+
|
38
|
+
zmq::object_t::object_t (object_t *parent_) :
|
39
|
+
ctx (parent_->ctx),
|
40
|
+
tid (parent_->tid)
|
41
|
+
{
|
42
|
+
}
|
43
|
+
|
44
|
+
zmq::object_t::~object_t ()
|
45
|
+
{
|
46
|
+
}
|
47
|
+
|
48
|
+
uint32_t zmq::object_t::get_tid ()
|
49
|
+
{
|
50
|
+
return tid;
|
51
|
+
}
|
52
|
+
|
53
|
+
zmq::ctx_t *zmq::object_t::get_ctx ()
|
54
|
+
{
|
55
|
+
return ctx;
|
56
|
+
}
|
57
|
+
|
58
|
+
void zmq::object_t::process_command (command_t &cmd_)
|
59
|
+
{
|
60
|
+
switch (cmd_.type) {
|
61
|
+
|
62
|
+
case command_t::activate_reader:
|
63
|
+
process_activate_reader ();
|
64
|
+
break;
|
65
|
+
|
66
|
+
case command_t::activate_writer:
|
67
|
+
process_activate_writer (cmd_.args.activate_writer.msgs_read);
|
68
|
+
break;
|
69
|
+
|
70
|
+
case command_t::stop:
|
71
|
+
process_stop ();
|
72
|
+
break;
|
73
|
+
|
74
|
+
case command_t::plug:
|
75
|
+
process_plug ();
|
76
|
+
process_seqnum ();
|
77
|
+
return;
|
78
|
+
|
79
|
+
case command_t::own:
|
80
|
+
process_own (cmd_.args.own.object);
|
81
|
+
process_seqnum ();
|
82
|
+
break;
|
83
|
+
|
84
|
+
case command_t::attach:
|
85
|
+
process_attach (cmd_.args.attach.engine,
|
86
|
+
cmd_.args.attach.peer_identity ?
|
87
|
+
blob_t (cmd_.args.attach.peer_identity,
|
88
|
+
cmd_.args.attach.peer_identity_size) : blob_t ());
|
89
|
+
process_seqnum ();
|
90
|
+
break;
|
91
|
+
|
92
|
+
case command_t::bind:
|
93
|
+
process_bind (cmd_.args.bind.in_pipe, cmd_.args.bind.out_pipe,
|
94
|
+
cmd_.args.bind.peer_identity ? blob_t (cmd_.args.bind.peer_identity,
|
95
|
+
cmd_.args.bind.peer_identity_size) : blob_t ());
|
96
|
+
process_seqnum ();
|
97
|
+
break;
|
98
|
+
|
99
|
+
case command_t::pipe_term:
|
100
|
+
process_pipe_term ();
|
101
|
+
return;
|
102
|
+
|
103
|
+
case command_t::pipe_term_ack:
|
104
|
+
process_pipe_term_ack ();
|
105
|
+
break;
|
106
|
+
|
107
|
+
case command_t::term_req:
|
108
|
+
process_term_req (cmd_.args.term_req.object);
|
109
|
+
break;
|
110
|
+
|
111
|
+
case command_t::term:
|
112
|
+
process_term (cmd_.args.term.linger);
|
113
|
+
break;
|
114
|
+
|
115
|
+
case command_t::term_ack:
|
116
|
+
process_term_ack ();
|
117
|
+
break;
|
118
|
+
|
119
|
+
case command_t::reap:
|
120
|
+
process_reap (cmd_.args.reap.socket);
|
121
|
+
break;
|
122
|
+
|
123
|
+
case command_t::reaped:
|
124
|
+
process_reaped ();
|
125
|
+
break;
|
126
|
+
|
127
|
+
default:
|
128
|
+
zmq_assert (false);
|
129
|
+
}
|
130
|
+
|
131
|
+
// The assumption here is that each command is processed once only,
|
132
|
+
// so deallocating it after processing is all right.
|
133
|
+
deallocate_command (&cmd_);
|
134
|
+
}
|
135
|
+
|
136
|
+
int zmq::object_t::register_endpoint (const char *addr_, endpoint_t &endpoint_)
|
137
|
+
{
|
138
|
+
return ctx->register_endpoint (addr_, endpoint_);
|
139
|
+
}
|
140
|
+
|
141
|
+
void zmq::object_t::unregister_endpoints (socket_base_t *socket_)
|
142
|
+
{
|
143
|
+
return ctx->unregister_endpoints (socket_);
|
144
|
+
}
|
145
|
+
|
146
|
+
zmq::endpoint_t zmq::object_t::find_endpoint (const char *addr_)
|
147
|
+
{
|
148
|
+
return ctx->find_endpoint (addr_);
|
149
|
+
}
|
150
|
+
|
151
|
+
void zmq::object_t::destroy_socket (socket_base_t *socket_)
|
152
|
+
{
|
153
|
+
ctx->destroy_socket (socket_);
|
154
|
+
}
|
155
|
+
|
156
|
+
void zmq::object_t::log (const char *format_, ...)
|
157
|
+
{
|
158
|
+
va_list args;
|
159
|
+
va_start (args, format_);
|
160
|
+
ctx->log (format_, args);
|
161
|
+
va_end (args);
|
162
|
+
}
|
163
|
+
|
164
|
+
zmq::io_thread_t *zmq::object_t::choose_io_thread (uint64_t affinity_)
|
165
|
+
{
|
166
|
+
return ctx->choose_io_thread (affinity_);
|
167
|
+
}
|
168
|
+
|
169
|
+
void zmq::object_t::send_stop ()
|
170
|
+
{
|
171
|
+
// 'stop' command goes always from administrative thread to
|
172
|
+
// the current object.
|
173
|
+
command_t cmd;
|
174
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
175
|
+
memset (&cmd, 0, sizeof (cmd));
|
176
|
+
#endif
|
177
|
+
cmd.destination = this;
|
178
|
+
cmd.type = command_t::stop;
|
179
|
+
ctx->send_command (tid, cmd);
|
180
|
+
}
|
181
|
+
|
182
|
+
void zmq::object_t::send_plug (own_t *destination_, bool inc_seqnum_)
|
183
|
+
{
|
184
|
+
if (inc_seqnum_)
|
185
|
+
destination_->inc_seqnum ();
|
186
|
+
|
187
|
+
command_t cmd;
|
188
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
189
|
+
memset (&cmd, 0, sizeof (cmd));
|
190
|
+
#endif
|
191
|
+
cmd.destination = destination_;
|
192
|
+
cmd.type = command_t::plug;
|
193
|
+
send_command (cmd);
|
194
|
+
}
|
195
|
+
|
196
|
+
void zmq::object_t::send_own (own_t *destination_, own_t *object_)
|
197
|
+
{
|
198
|
+
destination_->inc_seqnum ();
|
199
|
+
command_t cmd;
|
200
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
201
|
+
memset (&cmd, 0, sizeof (cmd));
|
202
|
+
#endif
|
203
|
+
cmd.destination = destination_;
|
204
|
+
cmd.type = command_t::own;
|
205
|
+
cmd.args.own.object = object_;
|
206
|
+
send_command (cmd);
|
207
|
+
}
|
208
|
+
|
209
|
+
void zmq::object_t::send_attach (session_t *destination_, i_engine *engine_,
|
210
|
+
const blob_t &peer_identity_, bool inc_seqnum_)
|
211
|
+
{
|
212
|
+
if (inc_seqnum_)
|
213
|
+
destination_->inc_seqnum ();
|
214
|
+
|
215
|
+
command_t cmd;
|
216
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
217
|
+
memset (&cmd, 0, sizeof (cmd));
|
218
|
+
#endif
|
219
|
+
cmd.destination = destination_;
|
220
|
+
cmd.type = command_t::attach;
|
221
|
+
cmd.args.attach.engine = engine_;
|
222
|
+
if (peer_identity_.empty ()) {
|
223
|
+
cmd.args.attach.peer_identity_size = 0;
|
224
|
+
cmd.args.attach.peer_identity = NULL;
|
225
|
+
}
|
226
|
+
else {
|
227
|
+
zmq_assert (peer_identity_.size () <= 0xff);
|
228
|
+
cmd.args.attach.peer_identity_size =
|
229
|
+
(unsigned char) peer_identity_.size ();
|
230
|
+
cmd.args.attach.peer_identity =
|
231
|
+
(unsigned char*) malloc (peer_identity_.size ());
|
232
|
+
alloc_assert (cmd.args.attach.peer_identity_size);
|
233
|
+
memcpy (cmd.args.attach.peer_identity, peer_identity_.data (),
|
234
|
+
peer_identity_.size ());
|
235
|
+
}
|
236
|
+
send_command (cmd);
|
237
|
+
}
|
238
|
+
|
239
|
+
void zmq::object_t::send_bind (own_t *destination_, reader_t *in_pipe_,
|
240
|
+
writer_t *out_pipe_, const blob_t &peer_identity_, bool inc_seqnum_)
|
241
|
+
{
|
242
|
+
if (inc_seqnum_)
|
243
|
+
destination_->inc_seqnum ();
|
244
|
+
|
245
|
+
command_t cmd;
|
246
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
247
|
+
memset (&cmd, 0, sizeof (cmd));
|
248
|
+
#endif
|
249
|
+
cmd.destination = destination_;
|
250
|
+
cmd.type = command_t::bind;
|
251
|
+
cmd.args.bind.in_pipe = in_pipe_;
|
252
|
+
cmd.args.bind.out_pipe = out_pipe_;
|
253
|
+
if (peer_identity_.empty ()) {
|
254
|
+
cmd.args.bind.peer_identity_size = 0;
|
255
|
+
cmd.args.bind.peer_identity = NULL;
|
256
|
+
}
|
257
|
+
else {
|
258
|
+
zmq_assert (peer_identity_.size () <= 0xff);
|
259
|
+
cmd.args.bind.peer_identity_size =
|
260
|
+
(unsigned char) peer_identity_.size ();
|
261
|
+
cmd.args.bind.peer_identity =
|
262
|
+
(unsigned char*) malloc (peer_identity_.size ());
|
263
|
+
alloc_assert (cmd.args.bind.peer_identity_size);
|
264
|
+
memcpy (cmd.args.bind.peer_identity, peer_identity_.data (),
|
265
|
+
peer_identity_.size ());
|
266
|
+
}
|
267
|
+
send_command (cmd);
|
268
|
+
}
|
269
|
+
|
270
|
+
void zmq::object_t::send_activate_reader (reader_t *destination_)
|
271
|
+
{
|
272
|
+
command_t cmd;
|
273
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
274
|
+
memset (&cmd, 0, sizeof (cmd));
|
275
|
+
#endif
|
276
|
+
cmd.destination = destination_;
|
277
|
+
cmd.type = command_t::activate_reader;
|
278
|
+
send_command (cmd);
|
279
|
+
}
|
280
|
+
|
281
|
+
void zmq::object_t::send_activate_writer (writer_t *destination_,
|
282
|
+
uint64_t msgs_read_)
|
283
|
+
{
|
284
|
+
command_t cmd;
|
285
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
286
|
+
memset (&cmd, 0, sizeof (cmd));
|
287
|
+
#endif
|
288
|
+
cmd.destination = destination_;
|
289
|
+
cmd.type = command_t::activate_writer;
|
290
|
+
cmd.args.activate_writer.msgs_read = msgs_read_;
|
291
|
+
send_command (cmd);
|
292
|
+
}
|
293
|
+
|
294
|
+
void zmq::object_t::send_pipe_term (writer_t *destination_)
|
295
|
+
{
|
296
|
+
command_t cmd;
|
297
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
298
|
+
memset (&cmd, 0, sizeof (cmd));
|
299
|
+
#endif
|
300
|
+
cmd.destination = destination_;
|
301
|
+
cmd.type = command_t::pipe_term;
|
302
|
+
send_command (cmd);
|
303
|
+
}
|
304
|
+
|
305
|
+
void zmq::object_t::send_pipe_term_ack (reader_t *destination_)
|
306
|
+
{
|
307
|
+
command_t cmd;
|
308
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
309
|
+
memset (&cmd, 0, sizeof (cmd));
|
310
|
+
#endif
|
311
|
+
cmd.destination = destination_;
|
312
|
+
cmd.type = command_t::pipe_term_ack;
|
313
|
+
send_command (cmd);
|
314
|
+
}
|
315
|
+
|
316
|
+
void zmq::object_t::send_term_req (own_t *destination_,
|
317
|
+
own_t *object_)
|
318
|
+
{
|
319
|
+
command_t cmd;
|
320
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
321
|
+
memset (&cmd, 0, sizeof (cmd));
|
322
|
+
#endif
|
323
|
+
cmd.destination = destination_;
|
324
|
+
cmd.type = command_t::term_req;
|
325
|
+
cmd.args.term_req.object = object_;
|
326
|
+
send_command (cmd);
|
327
|
+
}
|
328
|
+
|
329
|
+
void zmq::object_t::send_term (own_t *destination_, int linger_)
|
330
|
+
{
|
331
|
+
command_t cmd;
|
332
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
333
|
+
memset (&cmd, 0, sizeof (cmd));
|
334
|
+
#endif
|
335
|
+
cmd.destination = destination_;
|
336
|
+
cmd.type = command_t::term;
|
337
|
+
cmd.args.term.linger = linger_;
|
338
|
+
send_command (cmd);
|
339
|
+
}
|
340
|
+
|
341
|
+
void zmq::object_t::send_term_ack (own_t *destination_)
|
342
|
+
{
|
343
|
+
command_t cmd;
|
344
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
345
|
+
memset (&cmd, 0, sizeof (cmd));
|
346
|
+
#endif
|
347
|
+
cmd.destination = destination_;
|
348
|
+
cmd.type = command_t::term_ack;
|
349
|
+
send_command (cmd);
|
350
|
+
}
|
351
|
+
|
352
|
+
void zmq::object_t::send_reap (class socket_base_t *socket_)
|
353
|
+
{
|
354
|
+
command_t cmd;
|
355
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
356
|
+
memset (&cmd, 0, sizeof (cmd));
|
357
|
+
#endif
|
358
|
+
cmd.destination = ctx->get_reaper ();
|
359
|
+
cmd.type = command_t::reap;
|
360
|
+
cmd.args.reap.socket = socket_;
|
361
|
+
send_command (cmd);
|
362
|
+
}
|
363
|
+
|
364
|
+
void zmq::object_t::send_reaped ()
|
365
|
+
{
|
366
|
+
command_t cmd;
|
367
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
368
|
+
memset (&cmd, 0, sizeof (cmd));
|
369
|
+
#endif
|
370
|
+
cmd.destination = ctx->get_reaper ();
|
371
|
+
cmd.type = command_t::reaped;
|
372
|
+
send_command (cmd);
|
373
|
+
}
|
374
|
+
|
375
|
+
void zmq::object_t::send_done ()
|
376
|
+
{
|
377
|
+
command_t cmd;
|
378
|
+
#if defined ZMQ_MAKE_VALGRIND_HAPPY
|
379
|
+
memset (&cmd, 0, sizeof (cmd));
|
380
|
+
#endif
|
381
|
+
cmd.destination = NULL;
|
382
|
+
cmd.type = command_t::done;
|
383
|
+
ctx->send_command (ctx_t::term_tid, cmd);
|
384
|
+
}
|
385
|
+
|
386
|
+
void zmq::object_t::process_stop ()
|
387
|
+
{
|
388
|
+
zmq_assert (false);
|
389
|
+
}
|
390
|
+
|
391
|
+
void zmq::object_t::process_plug ()
|
392
|
+
{
|
393
|
+
zmq_assert (false);
|
394
|
+
}
|
395
|
+
|
396
|
+
void zmq::object_t::process_own (own_t *object_)
|
397
|
+
{
|
398
|
+
zmq_assert (false);
|
399
|
+
}
|
400
|
+
|
401
|
+
void zmq::object_t::process_attach (i_engine *engine_,
|
402
|
+
const blob_t &peer_identity_)
|
403
|
+
{
|
404
|
+
zmq_assert (false);
|
405
|
+
}
|
406
|
+
|
407
|
+
void zmq::object_t::process_bind (reader_t *in_pipe_, writer_t *out_pipe_,
|
408
|
+
const blob_t &peer_identity_)
|
409
|
+
{
|
410
|
+
zmq_assert (false);
|
411
|
+
}
|
412
|
+
|
413
|
+
void zmq::object_t::process_activate_reader ()
|
414
|
+
{
|
415
|
+
zmq_assert (false);
|
416
|
+
}
|
417
|
+
|
418
|
+
void zmq::object_t::process_activate_writer (uint64_t msgs_read_)
|
419
|
+
{
|
420
|
+
zmq_assert (false);
|
421
|
+
}
|
422
|
+
|
423
|
+
void zmq::object_t::process_pipe_term ()
|
424
|
+
{
|
425
|
+
zmq_assert (false);
|
426
|
+
}
|
427
|
+
|
428
|
+
void zmq::object_t::process_pipe_term_ack ()
|
429
|
+
{
|
430
|
+
zmq_assert (false);
|
431
|
+
}
|
432
|
+
|
433
|
+
void zmq::object_t::process_term_req (own_t *object_)
|
434
|
+
{
|
435
|
+
zmq_assert (false);
|
436
|
+
}
|
437
|
+
|
438
|
+
void zmq::object_t::process_term (int linger_)
|
439
|
+
{
|
440
|
+
zmq_assert (false);
|
441
|
+
}
|
442
|
+
|
443
|
+
void zmq::object_t::process_term_ack ()
|
444
|
+
{
|
445
|
+
zmq_assert (false);
|
446
|
+
}
|
447
|
+
|
448
|
+
void zmq::object_t::process_reap (class socket_base_t *socket_)
|
449
|
+
{
|
450
|
+
zmq_assert (false);
|
451
|
+
}
|
452
|
+
|
453
|
+
void zmq::object_t::process_reaped ()
|
454
|
+
{
|
455
|
+
zmq_assert (false);
|
456
|
+
}
|
457
|
+
|
458
|
+
void zmq::object_t::process_seqnum ()
|
459
|
+
{
|
460
|
+
zmq_assert (false);
|
461
|
+
}
|
462
|
+
|
463
|
+
void zmq::object_t::send_command (command_t &cmd_)
|
464
|
+
{
|
465
|
+
ctx->send_command (cmd_.destination->get_tid (), cmd_);
|
466
|
+
}
|
467
|
+
|