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,162 @@
|
|
1
|
+
zmq_pgm(7)
|
2
|
+
==========
|
3
|
+
|
4
|
+
|
5
|
+
NAME
|
6
|
+
----
|
7
|
+
zmq_pgm - 0MQ reliable multicast transport using PGM
|
8
|
+
|
9
|
+
|
10
|
+
SYNOPSIS
|
11
|
+
--------
|
12
|
+
PGM (Pragmatic General Multicast) is a protocol for reliable multicast
|
13
|
+
transport of data over IP networks.
|
14
|
+
|
15
|
+
|
16
|
+
DESCRIPTION
|
17
|
+
-----------
|
18
|
+
0MQ implements two variants of PGM, the standard protocol where PGM datagrams
|
19
|
+
are layered directly on top of IP datagrams as defined by RFC 3208 (the 'pgm'
|
20
|
+
transport) and "Encapsulated PGM" where PGM datagrams are encapsulated inside
|
21
|
+
UDP datagrams (the 'epgm' transport).
|
22
|
+
|
23
|
+
The 'pgm' and 'epgm' transports can only be used with the 'ZMQ_PUB' and
|
24
|
+
'ZMQ_SUB' socket types.
|
25
|
+
|
26
|
+
Further, PGM sockets are rate limited by default and incur a performance
|
27
|
+
penalty when used over a loop-back interface. For details, refer to the
|
28
|
+
'ZMQ_RATE', 'ZMQ_RECOVERY_IVL' and 'ZMQ_MCAST_LOOP' options documented in
|
29
|
+
linkzmq:zmq_setsockopt[3].
|
30
|
+
|
31
|
+
CAUTION: The 'pgm' transport implementation requires access to raw IP sockets.
|
32
|
+
Additional privileges may be required on some operating systems for this
|
33
|
+
operation. Applications not requiring direct interoperability with other PGM
|
34
|
+
implementations are encouraged to use the 'epgm' transport instead which does
|
35
|
+
not require any special privileges.
|
36
|
+
|
37
|
+
|
38
|
+
ADDRESSING
|
39
|
+
----------
|
40
|
+
A 0MQ address string consists of two parts as follows:
|
41
|
+
'transport'`://`'endpoint'. The 'transport' part specifies the underlying
|
42
|
+
transport protocol to use. For the standard PGM protocol, 'transport' shall be
|
43
|
+
set to `pgm`. For the "Encapsulated PGM" protocol 'transport' shall be set to
|
44
|
+
`epgm`. The meaning of the 'endpoint' part for both the 'pgm' and 'epgm'
|
45
|
+
transport is defined below.
|
46
|
+
|
47
|
+
|
48
|
+
Connecting a socket
|
49
|
+
~~~~~~~~~~~~~~~~~~~
|
50
|
+
When connecting a socket to a peer address using _zmq_connect()_ with the 'pgm'
|
51
|
+
or 'epgm' transport, the 'endpoint' shall be interpreted as an 'interface'
|
52
|
+
followed by a semicolon, followed by a 'multicast address', followed by a colon
|
53
|
+
and a port number.
|
54
|
+
|
55
|
+
An 'interface' may be specified by either of the following:
|
56
|
+
|
57
|
+
* The interface name as defined by the operating system.
|
58
|
+
* The primary IPv4 address assigned to the interface, in it's numeric
|
59
|
+
representation.
|
60
|
+
|
61
|
+
NOTE: Interface names are not standardised in any way and should be assumed to
|
62
|
+
be arbitrary and platform dependent. On Win32 platforms no short interface
|
63
|
+
names exist, thus only the primary IPv4 address may be used to specify an
|
64
|
+
'interface'.
|
65
|
+
|
66
|
+
A 'multicast address' is specified by an IPv4 multicast address in it's numeric
|
67
|
+
representation.
|
68
|
+
|
69
|
+
|
70
|
+
WIRE FORMAT
|
71
|
+
-----------
|
72
|
+
Consecutive PGM datagrams are interpreted by 0MQ as a single continuous stream
|
73
|
+
of data where 0MQ messages are not necessarily aligned with PGM datagram
|
74
|
+
boundaries and a single 0MQ message may span several PGM datagrams. This stream
|
75
|
+
of data consists of 0MQ messages encapsulated in 'frames' as described in
|
76
|
+
linkzmq:zmq_tcp[7].
|
77
|
+
|
78
|
+
|
79
|
+
PGM datagram payload
|
80
|
+
~~~~~~~~~~~~~~~~~~~~
|
81
|
+
The following ABNF grammar represents the payload of a single PGM datagram as
|
82
|
+
used by 0MQ:
|
83
|
+
|
84
|
+
....
|
85
|
+
datagram = (offset data)
|
86
|
+
offset = 2OCTET
|
87
|
+
data = *OCTET
|
88
|
+
....
|
89
|
+
|
90
|
+
In order for late joining consumers to be able to identify message boundaries,
|
91
|
+
each PGM datagram payload starts with a 16-bit unsigned integer in network byte
|
92
|
+
order specifying either the offset of the first message 'frame' in the datagram
|
93
|
+
or containing the value `0xFFFF` if the datagram contains solely an
|
94
|
+
intermediate part of a larger message.
|
95
|
+
|
96
|
+
Note that offset specifies where the first message begins rather than the first
|
97
|
+
message part. Thus, if there are trailing message parts at the beginning of
|
98
|
+
the packet the offset ignores them and points to first initial message part
|
99
|
+
in the packet.
|
100
|
+
|
101
|
+
The following diagram illustrates the layout of a single PGM datagram payload:
|
102
|
+
|
103
|
+
....
|
104
|
+
+------------------+----------------------+
|
105
|
+
| offset (16 bits) | data |
|
106
|
+
+------------------+----------------------+
|
107
|
+
....
|
108
|
+
|
109
|
+
The following diagram further illustrates how three example 0MQ frames are laid
|
110
|
+
out in consecutive PGM datagram payloads:
|
111
|
+
|
112
|
+
....
|
113
|
+
First datagram payload
|
114
|
+
+--------------+-------------+---------------------+
|
115
|
+
| Frame offset | Frame 1 | Frame 2, part 1 |
|
116
|
+
| 0x0000 | (Message 1) | (Message 2, part 1) |
|
117
|
+
+--------------+-------------+---------------------+
|
118
|
+
|
119
|
+
Second datagram payload
|
120
|
+
+--------------+---------------------+
|
121
|
+
| Frame offset | Frame 2, part 2 |
|
122
|
+
| 0xFFFF | (Message 2, part 2) |
|
123
|
+
+--------------+---------------------+
|
124
|
+
|
125
|
+
Third datagram payload
|
126
|
+
+--------------+----------------------------+-------------+
|
127
|
+
| Frame offset | Frame 2, final 8 bytes | Frame 3 |
|
128
|
+
| 0x0008 | (Message 2, final 8 bytes) | (Message 3) |
|
129
|
+
+--------------+----------------------------+-------------+
|
130
|
+
....
|
131
|
+
|
132
|
+
|
133
|
+
EXAMPLE
|
134
|
+
-------
|
135
|
+
.Connecting a socket
|
136
|
+
----
|
137
|
+
/* Connecting to the multicast address 239.192.1.1, port 5555, */
|
138
|
+
/* using the first Ethernet network interface on Linux */
|
139
|
+
/* and the Encapsulated PGM protocol */
|
140
|
+
rc = zmq_connect(socket, "epgm://eth0;239.192.1.1:5555");
|
141
|
+
assert (rc == 0);
|
142
|
+
/* Connecting to the multicast address 239.192.1.1, port 5555, */
|
143
|
+
/* using the network interface with the address 192.168.1.1 */
|
144
|
+
/* and the standard PGM protocol */
|
145
|
+
rc = zmq_connect(socket, "pgm://192.168.1.1;239.192.1.1:5555");
|
146
|
+
assert (rc == 0);
|
147
|
+
----
|
148
|
+
|
149
|
+
|
150
|
+
SEE ALSO
|
151
|
+
--------
|
152
|
+
linkzmq:zmq_connect[3]
|
153
|
+
linkzmq:zmq_setsockopt[3]
|
154
|
+
linkzmq:zmq_tcp[7]
|
155
|
+
linkzmq:zmq_ipc[7]
|
156
|
+
linkzmq:zmq_inproc[7]
|
157
|
+
linkzmq:zmq[7]
|
158
|
+
|
159
|
+
AUTHORS
|
160
|
+
-------
|
161
|
+
This 0MQ manual page was written by Martin Sustrik <sustrik@250bpm.com> and
|
162
|
+
Martin Lucina <mato@kotelna.sk>.
|
@@ -0,0 +1,204 @@
|
|
1
|
+
'\" t
|
2
|
+
.\" Title: zmq_poll
|
3
|
+
.\" Author: [see the "AUTHORS" section]
|
4
|
+
.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
|
5
|
+
.\" Date: 05/07/2011
|
6
|
+
.\" Manual: 0MQ Manual
|
7
|
+
.\" Source: 0MQ 2.1.6
|
8
|
+
.\" Language: English
|
9
|
+
.\"
|
10
|
+
.TH "ZMQ_POLL" "3" "05/07/2011" "0MQ 2\&.1\&.6" "0MQ Manual"
|
11
|
+
.\" -----------------------------------------------------------------
|
12
|
+
.\" * Define some portability stuff
|
13
|
+
.\" -----------------------------------------------------------------
|
14
|
+
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
15
|
+
.\" http://bugs.debian.org/507673
|
16
|
+
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
|
17
|
+
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
18
|
+
.ie \n(.g .ds Aq \(aq
|
19
|
+
.el .ds Aq '
|
20
|
+
.\" -----------------------------------------------------------------
|
21
|
+
.\" * set default formatting
|
22
|
+
.\" -----------------------------------------------------------------
|
23
|
+
.\" disable hyphenation
|
24
|
+
.nh
|
25
|
+
.\" disable justification (adjust text to left margin only)
|
26
|
+
.ad l
|
27
|
+
.\" -----------------------------------------------------------------
|
28
|
+
.\" * MAIN CONTENT STARTS HERE *
|
29
|
+
.\" -----------------------------------------------------------------
|
30
|
+
.SH "NAME"
|
31
|
+
zmq_poll \- input/output multiplexing
|
32
|
+
.SH "SYNOPSIS"
|
33
|
+
.sp
|
34
|
+
\fBint zmq_poll (zmq_pollitem_t \fR\fB\fI*items\fR\fR\fB, int \fR\fB\fInitems\fR\fR\fB, long \fR\fB\fItimeout\fR\fR\fB);\fR
|
35
|
+
.SH "DESCRIPTION"
|
36
|
+
.sp
|
37
|
+
The \fIzmq_poll()\fR function provides a mechanism for applications to multiplex input/output events in a level\-triggered fashion over a set of sockets\&. Each member of the array pointed to by the \fIitems\fR argument is a \fBzmq_pollitem_t\fR structure\&. The \fInitems\fR argument specifies the number of items in the \fIitems\fR array\&. The \fBzmq_pollitem_t\fR structure is defined as follows:
|
38
|
+
.sp
|
39
|
+
.if n \{\
|
40
|
+
.RS 4
|
41
|
+
.\}
|
42
|
+
.nf
|
43
|
+
typedef struct
|
44
|
+
{
|
45
|
+
void \fI*socket\fR;
|
46
|
+
int \fIfd\fR;
|
47
|
+
short \fIevents\fR;
|
48
|
+
short \fIrevents\fR;
|
49
|
+
} zmq_pollitem_t;
|
50
|
+
.fi
|
51
|
+
.if n \{\
|
52
|
+
.RE
|
53
|
+
.\}
|
54
|
+
.sp
|
55
|
+
For each \fBzmq_pollitem_t\fR item, \fIzmq_poll()\fR shall examine either the 0MQ socket referenced by \fIsocket\fR \fBor\fR the standard socket specified by the file descriptor \fIfd\fR, for the event(s) specified in \fIevents\fR\&. If both \fIsocket\fR and \fIfd\fR are set in a single \fBzmq_pollitem_t\fR, the 0MQ socket referenced by \fIsocket\fR shall take precedence and the value of \fIfd\fR shall be ignored\&.
|
56
|
+
.if n \{\
|
57
|
+
.sp
|
58
|
+
.\}
|
59
|
+
.RS 4
|
60
|
+
.it 1 an-trap
|
61
|
+
.nr an-no-space-flag 1
|
62
|
+
.nr an-break-flag 1
|
63
|
+
.br
|
64
|
+
.ps +1
|
65
|
+
\fBNote\fR
|
66
|
+
.ps -1
|
67
|
+
.br
|
68
|
+
.sp
|
69
|
+
All 0MQ sockets passed to the \fIzmq_poll()\fR function must share the same 0MQ \fIcontext\fR and must belong to the thread calling \fIzmq_poll()\fR\&.
|
70
|
+
.sp .5v
|
71
|
+
.RE
|
72
|
+
.sp
|
73
|
+
For each \fBzmq_pollitem_t\fR item, \fIzmq_poll()\fR shall first clear the \fIrevents\fR member, and then indicate any requested events that have occurred by setting the bit corresponding to the event condition in the \fIrevents\fR member\&.
|
74
|
+
.sp
|
75
|
+
If none of the requested events have occurred on any \fBzmq_pollitem_t\fR item, \fIzmq_poll()\fR shall wait \fItimeout\fR microseconds for an event to occur on any of the requested items\&. If the value of \fItimeout\fR is 0, \fIzmq_poll()\fR shall return immediately\&. If the value of \fItimeout\fR is \-1, \fIzmq_poll()\fR shall block indefinitely until a requested event has occurred on at least one \fBzmq_pollitem_t\fR\&. The resolution of \fItimeout\fR is 1 millisecond\&.
|
76
|
+
.sp
|
77
|
+
The \fIevents\fR and \fIrevents\fR members of \fBzmq_pollitem_t\fR are bit masks constructed by OR\(cqing a combination of the following event flags:
|
78
|
+
.PP
|
79
|
+
\fBZMQ_POLLIN\fR
|
80
|
+
.RS 4
|
81
|
+
For 0MQ sockets, at least one message may be received from the
|
82
|
+
\fIsocket\fR
|
83
|
+
without blocking\&. For standard sockets this is equivalent to the
|
84
|
+
\fIPOLLIN\fR
|
85
|
+
flag of the
|
86
|
+
\fIpoll()\fR
|
87
|
+
system call and generally means that at least one byte of data may be read from
|
88
|
+
\fIfd\fR
|
89
|
+
without blocking\&.
|
90
|
+
.RE
|
91
|
+
.PP
|
92
|
+
\fBZMQ_POLLOUT\fR
|
93
|
+
.RS 4
|
94
|
+
For 0MQ sockets, at least one message may be sent to the
|
95
|
+
\fIsocket\fR
|
96
|
+
without blocking\&. For standard sockets this is equivalent to the
|
97
|
+
\fIPOLLOUT\fR
|
98
|
+
flag of the
|
99
|
+
\fIpoll()\fR
|
100
|
+
system call and generally means that at least one byte of data may be written to
|
101
|
+
\fIfd\fR
|
102
|
+
without blocking\&.
|
103
|
+
.RE
|
104
|
+
.PP
|
105
|
+
\fBZMQ_POLLERR\fR
|
106
|
+
.RS 4
|
107
|
+
For standard sockets, this flag is passed through
|
108
|
+
\fIzmq_poll()\fR
|
109
|
+
to the underlying
|
110
|
+
\fIpoll()\fR
|
111
|
+
system call and generally means that some sort of error condition is present on the socket specified by
|
112
|
+
\fIfd\fR\&. For 0MQ sockets this flag has no effect if set in
|
113
|
+
\fIevents\fR, and shall never be returned in
|
114
|
+
\fIrevents\fR
|
115
|
+
by
|
116
|
+
\fIzmq_poll()\fR\&.
|
117
|
+
.RE
|
118
|
+
.if n \{\
|
119
|
+
.sp
|
120
|
+
.\}
|
121
|
+
.RS 4
|
122
|
+
.it 1 an-trap
|
123
|
+
.nr an-no-space-flag 1
|
124
|
+
.nr an-break-flag 1
|
125
|
+
.br
|
126
|
+
.ps +1
|
127
|
+
\fBNote\fR
|
128
|
+
.ps -1
|
129
|
+
.br
|
130
|
+
.sp
|
131
|
+
The \fIzmq_poll()\fR function may be implemented or emulated using operating system interfaces other than \fIpoll()\fR, and as such may be subject to the limits of those interfaces in ways not defined in this documentation\&.
|
132
|
+
.sp .5v
|
133
|
+
.RE
|
134
|
+
.SH "RETURN VALUE"
|
135
|
+
.sp
|
136
|
+
Upon successful completion, the \fIzmq_poll()\fR function shall return the number of \fBzmq_pollitem_t\fR structures with events signaled in \fIrevents\fR or 0 if no events have been signaled\&. Upon failure, \fIzmq_poll()\fR shall return \-1 and set \fIerrno\fR to one of the values defined below\&.
|
137
|
+
.SH "ERRORS"
|
138
|
+
.PP
|
139
|
+
\fBETERM\fR
|
140
|
+
.RS 4
|
141
|
+
At least one of the members of the
|
142
|
+
\fIitems\fR
|
143
|
+
array refers to a
|
144
|
+
\fIsocket\fR
|
145
|
+
whose associated 0MQ
|
146
|
+
\fIcontext\fR
|
147
|
+
was terminated\&.
|
148
|
+
.RE
|
149
|
+
.PP
|
150
|
+
\fBEFAULT\fR
|
151
|
+
.RS 4
|
152
|
+
The provided
|
153
|
+
\fIitems\fR
|
154
|
+
was not valid (NULL)\&.
|
155
|
+
.RE
|
156
|
+
.PP
|
157
|
+
\fBEINTR\fR
|
158
|
+
.RS 4
|
159
|
+
The operation was interrupted by delivery of a signal before any events were available\&.
|
160
|
+
.RE
|
161
|
+
.SH "EXAMPLE"
|
162
|
+
.PP
|
163
|
+
\fBPolling indefinitely for input events on both a 0MQ socket and a standard socket.\fR.
|
164
|
+
.sp
|
165
|
+
.if n \{\
|
166
|
+
.RS 4
|
167
|
+
.\}
|
168
|
+
.nf
|
169
|
+
zmq_pollitem_t items [2];
|
170
|
+
/* First item refers to 0MQ socket \*(Aqsocket\*(Aq */
|
171
|
+
items[0]\&.socket = socket;
|
172
|
+
items[0]\&.events = ZMQ_POLLIN;
|
173
|
+
/* Second item refers to standard socket \*(Aqfd\*(Aq */
|
174
|
+
items[1]\&.socket = NULL;
|
175
|
+
items[1]\&.fd = fd;
|
176
|
+
items[1]\&.events = ZMQ_POLLIN;
|
177
|
+
/* Poll for events indefinitely */
|
178
|
+
int rc = zmq_poll (items, 2, \-1);
|
179
|
+
assert (rc >= 0);
|
180
|
+
/* Returned events will be stored in items[]\&.revents */
|
181
|
+
.fi
|
182
|
+
.if n \{\
|
183
|
+
.RE
|
184
|
+
.\}
|
185
|
+
.sp
|
186
|
+
.SH "SEE ALSO"
|
187
|
+
.sp
|
188
|
+
\fBzmq_socket\fR(3) \fBzmq_send\fR(3) \fBzmq_recv\fR(3) \fBzmq\fR(7)
|
189
|
+
.sp
|
190
|
+
Your operating system documentation for the \fIpoll()\fR system call\&.
|
191
|
+
.SH "AUTHORS"
|
192
|
+
.sp
|
193
|
+
This 0MQ manual page was written by Martin Sustrik <\m[blue]\fBsustrik@250bpm\&.com\fR\m[]\&\s-2\u[1]\d\s+2> and Martin Lucina <\m[blue]\fBmato@kotelna\&.sk\fR\m[]\&\s-2\u[2]\d\s+2>\&.
|
194
|
+
.SH "NOTES"
|
195
|
+
.IP " 1." 4
|
196
|
+
sustrik@250bpm.com
|
197
|
+
.RS 4
|
198
|
+
\%mailto:sustrik@250bpm.com
|
199
|
+
.RE
|
200
|
+
.IP " 2." 4
|
201
|
+
mato@kotelna.sk
|
202
|
+
.RS 4
|
203
|
+
\%mailto:mato@kotelna.sk
|
204
|
+
.RE
|
@@ -0,0 +1,755 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
6
|
+
<meta name="generator" content="AsciiDoc 8.5.2" />
|
7
|
+
<title>zmq_poll(3)</title>
|
8
|
+
<style type="text/css">
|
9
|
+
/* Debug borders */
|
10
|
+
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
|
11
|
+
/*
|
12
|
+
border: 1px solid red;
|
13
|
+
*/
|
14
|
+
}
|
15
|
+
|
16
|
+
body {
|
17
|
+
margin: 1em 5% 1em 5%;
|
18
|
+
}
|
19
|
+
|
20
|
+
a {
|
21
|
+
color: blue;
|
22
|
+
text-decoration: underline;
|
23
|
+
}
|
24
|
+
a:visited {
|
25
|
+
color: fuchsia;
|
26
|
+
}
|
27
|
+
|
28
|
+
em {
|
29
|
+
font-style: italic;
|
30
|
+
color: navy;
|
31
|
+
}
|
32
|
+
|
33
|
+
strong {
|
34
|
+
font-weight: bold;
|
35
|
+
color: #083194;
|
36
|
+
}
|
37
|
+
|
38
|
+
tt {
|
39
|
+
color: navy;
|
40
|
+
}
|
41
|
+
|
42
|
+
h1, h2, h3, h4, h5, h6 {
|
43
|
+
color: #527bbd;
|
44
|
+
font-family: sans-serif;
|
45
|
+
margin-top: 1.2em;
|
46
|
+
margin-bottom: 0.5em;
|
47
|
+
line-height: 1.3;
|
48
|
+
}
|
49
|
+
|
50
|
+
h1, h2, h3 {
|
51
|
+
border-bottom: 2px solid silver;
|
52
|
+
}
|
53
|
+
h2 {
|
54
|
+
padding-top: 0.5em;
|
55
|
+
}
|
56
|
+
h3 {
|
57
|
+
float: left;
|
58
|
+
}
|
59
|
+
h3 + * {
|
60
|
+
clear: left;
|
61
|
+
}
|
62
|
+
|
63
|
+
div.sectionbody {
|
64
|
+
font-family: serif;
|
65
|
+
margin-left: 0;
|
66
|
+
}
|
67
|
+
|
68
|
+
hr {
|
69
|
+
border: 1px solid silver;
|
70
|
+
}
|
71
|
+
|
72
|
+
p {
|
73
|
+
margin-top: 0.5em;
|
74
|
+
margin-bottom: 0.5em;
|
75
|
+
}
|
76
|
+
|
77
|
+
ul, ol, li > p {
|
78
|
+
margin-top: 0;
|
79
|
+
}
|
80
|
+
|
81
|
+
pre {
|
82
|
+
padding: 0;
|
83
|
+
margin: 0;
|
84
|
+
}
|
85
|
+
|
86
|
+
span#author {
|
87
|
+
color: #527bbd;
|
88
|
+
font-family: sans-serif;
|
89
|
+
font-weight: bold;
|
90
|
+
font-size: 1.1em;
|
91
|
+
}
|
92
|
+
span#email {
|
93
|
+
}
|
94
|
+
span#revnumber, span#revdate, span#revremark {
|
95
|
+
font-family: sans-serif;
|
96
|
+
}
|
97
|
+
|
98
|
+
div#footer {
|
99
|
+
font-family: sans-serif;
|
100
|
+
font-size: small;
|
101
|
+
border-top: 2px solid silver;
|
102
|
+
padding-top: 0.5em;
|
103
|
+
margin-top: 4.0em;
|
104
|
+
}
|
105
|
+
div#footer-text {
|
106
|
+
float: left;
|
107
|
+
padding-bottom: 0.5em;
|
108
|
+
}
|
109
|
+
div#footer-badges {
|
110
|
+
float: right;
|
111
|
+
padding-bottom: 0.5em;
|
112
|
+
}
|
113
|
+
|
114
|
+
div#preamble {
|
115
|
+
margin-top: 1.5em;
|
116
|
+
margin-bottom: 1.5em;
|
117
|
+
}
|
118
|
+
div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
|
119
|
+
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
|
120
|
+
div.admonitionblock {
|
121
|
+
margin-top: 1.0em;
|
122
|
+
margin-bottom: 1.5em;
|
123
|
+
}
|
124
|
+
div.admonitionblock {
|
125
|
+
margin-top: 2.0em;
|
126
|
+
margin-bottom: 2.0em;
|
127
|
+
margin-right: 10%;
|
128
|
+
color: #606060;
|
129
|
+
}
|
130
|
+
|
131
|
+
div.content { /* Block element content. */
|
132
|
+
padding: 0;
|
133
|
+
}
|
134
|
+
|
135
|
+
/* Block element titles. */
|
136
|
+
div.title, caption.title {
|
137
|
+
color: #527bbd;
|
138
|
+
font-family: sans-serif;
|
139
|
+
font-weight: bold;
|
140
|
+
text-align: left;
|
141
|
+
margin-top: 1.0em;
|
142
|
+
margin-bottom: 0.5em;
|
143
|
+
}
|
144
|
+
div.title + * {
|
145
|
+
margin-top: 0;
|
146
|
+
}
|
147
|
+
|
148
|
+
td div.title:first-child {
|
149
|
+
margin-top: 0.0em;
|
150
|
+
}
|
151
|
+
div.content div.title:first-child {
|
152
|
+
margin-top: 0.0em;
|
153
|
+
}
|
154
|
+
div.content + div.title {
|
155
|
+
margin-top: 0.0em;
|
156
|
+
}
|
157
|
+
|
158
|
+
div.sidebarblock > div.content {
|
159
|
+
background: #ffffee;
|
160
|
+
border: 1px solid silver;
|
161
|
+
padding: 0.5em;
|
162
|
+
}
|
163
|
+
|
164
|
+
div.listingblock > div.content {
|
165
|
+
border: 1px solid silver;
|
166
|
+
background: #f4f4f4;
|
167
|
+
padding: 0.5em;
|
168
|
+
}
|
169
|
+
|
170
|
+
div.quoteblock, div.verseblock {
|
171
|
+
padding-left: 1.0em;
|
172
|
+
margin-left: 1.0em;
|
173
|
+
margin-right: 10%;
|
174
|
+
border-left: 5px solid #dddddd;
|
175
|
+
color: #777777;
|
176
|
+
}
|
177
|
+
|
178
|
+
div.quoteblock > div.attribution {
|
179
|
+
padding-top: 0.5em;
|
180
|
+
text-align: right;
|
181
|
+
}
|
182
|
+
|
183
|
+
div.verseblock > div.content {
|
184
|
+
white-space: pre;
|
185
|
+
}
|
186
|
+
div.verseblock > div.attribution {
|
187
|
+
padding-top: 0.75em;
|
188
|
+
text-align: left;
|
189
|
+
}
|
190
|
+
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
|
191
|
+
div.verseblock + div.attribution {
|
192
|
+
text-align: left;
|
193
|
+
}
|
194
|
+
|
195
|
+
div.admonitionblock .icon {
|
196
|
+
vertical-align: top;
|
197
|
+
font-size: 1.1em;
|
198
|
+
font-weight: bold;
|
199
|
+
text-decoration: underline;
|
200
|
+
color: #527bbd;
|
201
|
+
padding-right: 0.5em;
|
202
|
+
}
|
203
|
+
div.admonitionblock td.content {
|
204
|
+
padding-left: 0.5em;
|
205
|
+
border-left: 3px solid #dddddd;
|
206
|
+
}
|
207
|
+
|
208
|
+
div.exampleblock > div.content {
|
209
|
+
border-left: 3px solid #dddddd;
|
210
|
+
padding-left: 0.5em;
|
211
|
+
}
|
212
|
+
|
213
|
+
div.imageblock div.content { padding-left: 0; }
|
214
|
+
span.image img { border-style: none; }
|
215
|
+
a.image:visited { color: white; }
|
216
|
+
|
217
|
+
dl {
|
218
|
+
margin-top: 0.8em;
|
219
|
+
margin-bottom: 0.8em;
|
220
|
+
}
|
221
|
+
dt {
|
222
|
+
margin-top: 0.5em;
|
223
|
+
margin-bottom: 0;
|
224
|
+
font-style: normal;
|
225
|
+
color: navy;
|
226
|
+
}
|
227
|
+
dd > *:first-child {
|
228
|
+
margin-top: 0.1em;
|
229
|
+
}
|
230
|
+
|
231
|
+
ul, ol {
|
232
|
+
list-style-position: outside;
|
233
|
+
}
|
234
|
+
ol.arabic {
|
235
|
+
list-style-type: decimal;
|
236
|
+
}
|
237
|
+
ol.loweralpha {
|
238
|
+
list-style-type: lower-alpha;
|
239
|
+
}
|
240
|
+
ol.upperalpha {
|
241
|
+
list-style-type: upper-alpha;
|
242
|
+
}
|
243
|
+
ol.lowerroman {
|
244
|
+
list-style-type: lower-roman;
|
245
|
+
}
|
246
|
+
ol.upperroman {
|
247
|
+
list-style-type: upper-roman;
|
248
|
+
}
|
249
|
+
|
250
|
+
div.compact ul, div.compact ol,
|
251
|
+
div.compact p, div.compact p,
|
252
|
+
div.compact div, div.compact div {
|
253
|
+
margin-top: 0.1em;
|
254
|
+
margin-bottom: 0.1em;
|
255
|
+
}
|
256
|
+
|
257
|
+
div.tableblock > table {
|
258
|
+
border: 3px solid #527bbd;
|
259
|
+
}
|
260
|
+
thead, p.table.header {
|
261
|
+
font-family: sans-serif;
|
262
|
+
font-weight: bold;
|
263
|
+
}
|
264
|
+
tfoot {
|
265
|
+
font-weight: bold;
|
266
|
+
}
|
267
|
+
td > div.verse {
|
268
|
+
white-space: pre;
|
269
|
+
}
|
270
|
+
p.table {
|
271
|
+
margin-top: 0;
|
272
|
+
}
|
273
|
+
/* Because the table frame attribute is overriden by CSS in most browsers. */
|
274
|
+
div.tableblock > table[frame="void"] {
|
275
|
+
border-style: none;
|
276
|
+
}
|
277
|
+
div.tableblock > table[frame="hsides"] {
|
278
|
+
border-left-style: none;
|
279
|
+
border-right-style: none;
|
280
|
+
}
|
281
|
+
div.tableblock > table[frame="vsides"] {
|
282
|
+
border-top-style: none;
|
283
|
+
border-bottom-style: none;
|
284
|
+
}
|
285
|
+
|
286
|
+
|
287
|
+
div.hdlist {
|
288
|
+
margin-top: 0.8em;
|
289
|
+
margin-bottom: 0.8em;
|
290
|
+
}
|
291
|
+
div.hdlist tr {
|
292
|
+
padding-bottom: 15px;
|
293
|
+
}
|
294
|
+
dt.hdlist1.strong, td.hdlist1.strong {
|
295
|
+
font-weight: bold;
|
296
|
+
}
|
297
|
+
td.hdlist1 {
|
298
|
+
vertical-align: top;
|
299
|
+
font-style: normal;
|
300
|
+
padding-right: 0.8em;
|
301
|
+
color: navy;
|
302
|
+
}
|
303
|
+
td.hdlist2 {
|
304
|
+
vertical-align: top;
|
305
|
+
}
|
306
|
+
div.hdlist.compact tr {
|
307
|
+
margin: 0;
|
308
|
+
padding-bottom: 0;
|
309
|
+
}
|
310
|
+
|
311
|
+
.comment {
|
312
|
+
background: yellow;
|
313
|
+
}
|
314
|
+
|
315
|
+
.footnote, .footnoteref {
|
316
|
+
font-size: 0.8em;
|
317
|
+
}
|
318
|
+
|
319
|
+
span.footnote, span.footnoteref {
|
320
|
+
vertical-align: super;
|
321
|
+
}
|
322
|
+
|
323
|
+
#footnotes {
|
324
|
+
margin: 20px 0 20px 0;
|
325
|
+
padding: 7px 0 0 0;
|
326
|
+
}
|
327
|
+
|
328
|
+
#footnotes div.footnote {
|
329
|
+
margin: 0 0 5px 0;
|
330
|
+
}
|
331
|
+
|
332
|
+
#footnotes hr {
|
333
|
+
border: none;
|
334
|
+
border-top: 1px solid silver;
|
335
|
+
height: 1px;
|
336
|
+
text-align: left;
|
337
|
+
margin-left: 0;
|
338
|
+
width: 20%;
|
339
|
+
min-width: 100px;
|
340
|
+
}
|
341
|
+
|
342
|
+
|
343
|
+
@media print {
|
344
|
+
div#footer-badges { display: none; }
|
345
|
+
}
|
346
|
+
|
347
|
+
div#toc {
|
348
|
+
margin-bottom: 2.5em;
|
349
|
+
}
|
350
|
+
|
351
|
+
div#toctitle {
|
352
|
+
color: #527bbd;
|
353
|
+
font-family: sans-serif;
|
354
|
+
font-size: 1.1em;
|
355
|
+
font-weight: bold;
|
356
|
+
margin-top: 1.0em;
|
357
|
+
margin-bottom: 0.1em;
|
358
|
+
}
|
359
|
+
|
360
|
+
div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
|
361
|
+
margin-top: 0;
|
362
|
+
margin-bottom: 0;
|
363
|
+
}
|
364
|
+
div.toclevel2 {
|
365
|
+
margin-left: 2em;
|
366
|
+
font-size: 0.9em;
|
367
|
+
}
|
368
|
+
div.toclevel3 {
|
369
|
+
margin-left: 4em;
|
370
|
+
font-size: 0.9em;
|
371
|
+
}
|
372
|
+
div.toclevel4 {
|
373
|
+
margin-left: 6em;
|
374
|
+
font-size: 0.9em;
|
375
|
+
}
|
376
|
+
/* Overrides for manpage documents */
|
377
|
+
h1 {
|
378
|
+
padding-top: 0.5em;
|
379
|
+
padding-bottom: 0.5em;
|
380
|
+
border-top: 2px solid silver;
|
381
|
+
border-bottom: 2px solid silver;
|
382
|
+
}
|
383
|
+
h2 {
|
384
|
+
border-style: none;
|
385
|
+
}
|
386
|
+
div.sectionbody {
|
387
|
+
margin-left: 5%;
|
388
|
+
}
|
389
|
+
|
390
|
+
@media print {
|
391
|
+
div#toc { display: none; }
|
392
|
+
}
|
393
|
+
|
394
|
+
/* Workarounds for IE6's broken and incomplete CSS2. */
|
395
|
+
|
396
|
+
div.sidebar-content {
|
397
|
+
background: #ffffee;
|
398
|
+
border: 1px solid silver;
|
399
|
+
padding: 0.5em;
|
400
|
+
}
|
401
|
+
div.sidebar-title, div.image-title {
|
402
|
+
color: #527bbd;
|
403
|
+
font-family: sans-serif;
|
404
|
+
font-weight: bold;
|
405
|
+
margin-top: 0.0em;
|
406
|
+
margin-bottom: 0.5em;
|
407
|
+
}
|
408
|
+
|
409
|
+
div.listingblock div.content {
|
410
|
+
border: 1px solid silver;
|
411
|
+
background: #f4f4f4;
|
412
|
+
padding: 0.5em;
|
413
|
+
}
|
414
|
+
|
415
|
+
div.quoteblock-attribution {
|
416
|
+
padding-top: 0.5em;
|
417
|
+
text-align: right;
|
418
|
+
}
|
419
|
+
|
420
|
+
div.verseblock-content {
|
421
|
+
white-space: pre;
|
422
|
+
}
|
423
|
+
div.verseblock-attribution {
|
424
|
+
padding-top: 0.75em;
|
425
|
+
text-align: left;
|
426
|
+
}
|
427
|
+
|
428
|
+
div.exampleblock-content {
|
429
|
+
border-left: 3px solid #dddddd;
|
430
|
+
padding-left: 0.5em;
|
431
|
+
}
|
432
|
+
|
433
|
+
/* IE6 sets dynamically generated links as visited. */
|
434
|
+
div#toc a:visited { color: blue; }
|
435
|
+
</style>
|
436
|
+
<script type="text/javascript">
|
437
|
+
/*<+'])');
|
481
|
+
// Function that scans the DOM tree for header elements (the DOM2
|
482
|
+
// nodeIterator API would be a better technique but not supported by all
|
483
|
+
// browsers).
|
484
|
+
var iterate = function (el) {
|
485
|
+
for (var i = el.firstChild; i != null; i = i.nextSibling) {
|
486
|
+
if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
|
487
|
+
var mo = re.exec(i.tagName);
|
488
|
+
if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
|
489
|
+
result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
|
490
|
+
}
|
491
|
+
iterate(i);
|
492
|
+
}
|
493
|
+
}
|
494
|
+
}
|
495
|
+
iterate(el);
|
496
|
+
return result;
|
497
|
+
}
|
498
|
+
|
499
|
+
var toc = document.getElementById("toc");
|
500
|
+
var entries = tocEntries(document.getElementById("content"), toclevels);
|
501
|
+
for (var i = 0; i < entries.length; ++i) {
|
502
|
+
var entry = entries[i];
|
503
|
+
if (entry.element.id == "")
|
504
|
+
entry.element.id = "_toc_" + i;
|
505
|
+
var a = document.createElement("a");
|
506
|
+
a.href = "#" + entry.element.id;
|
507
|
+
a.appendChild(document.createTextNode(entry.text));
|
508
|
+
var div = document.createElement("div");
|
509
|
+
div.appendChild(a);
|
510
|
+
div.className = "toclevel" + entry.toclevel;
|
511
|
+
toc.appendChild(div);
|
512
|
+
}
|
513
|
+
if (entries.length == 0)
|
514
|
+
toc.parentNode.removeChild(toc);
|
515
|
+
},
|
516
|
+
|
517
|
+
|
518
|
+
/////////////////////////////////////////////////////////////////////
|
519
|
+
// Footnotes generator
|
520
|
+
/////////////////////////////////////////////////////////////////////
|
521
|
+
|
522
|
+
/* Based on footnote generation code from:
|
523
|
+
* http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
|
524
|
+
*/
|
525
|
+
|
526
|
+
footnotes: function () {
|
527
|
+
var cont = document.getElementById("content");
|
528
|
+
var noteholder = document.getElementById("footnotes");
|
529
|
+
var spans = cont.getElementsByTagName("span");
|
530
|
+
var refs = {};
|
531
|
+
var n = 0;
|
532
|
+
for (i=0; i<spans.length; i++) {
|
533
|
+
if (spans[i].className == "footnote") {
|
534
|
+
n++;
|
535
|
+
// Use [\s\S] in place of . so multi-line matches work.
|
536
|
+
// Because JavaScript has no s (dotall) regex flag.
|
537
|
+
note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
|
538
|
+
noteholder.innerHTML +=
|
539
|
+
"<div class='footnote' id='_footnote_" + n + "'>" +
|
540
|
+
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +
|
541
|
+
n + "</a>. " + note + "</div>";
|
542
|
+
spans[i].innerHTML =
|
543
|
+
"[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
|
544
|
+
"' title='View footnote' class='footnote'>" + n + "</a>]";
|
545
|
+
var id =spans[i].getAttribute("id");
|
546
|
+
if (id != null) refs["#"+id] = n;
|
547
|
+
}
|
548
|
+
}
|
549
|
+
if (n == 0)
|
550
|
+
noteholder.parentNode.removeChild(noteholder);
|
551
|
+
else {
|
552
|
+
// Process footnoterefs.
|
553
|
+
for (i=0; i<spans.length; i++) {
|
554
|
+
if (spans[i].className == "footnoteref") {
|
555
|
+
var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
|
556
|
+
href = href.match(/#.*/)[0]; // Because IE return full URL.
|
557
|
+
n = refs[href];
|
558
|
+
spans[i].innerHTML =
|
559
|
+
"[<a href='#_footnote_" + n +
|
560
|
+
"' title='View footnote' class='footnote'>" + n + "</a>]";
|
561
|
+
}
|
562
|
+
}
|
563
|
+
}
|
564
|
+
}
|
565
|
+
|
566
|
+
}
|
567
|
+
/*]]>*/
|
568
|
+
</script>
|
569
|
+
</head>
|
570
|
+
<body>
|
571
|
+
<div id="header">
|
572
|
+
<h1>
|
573
|
+
zmq_poll(3) Manual Page
|
574
|
+
</h1>
|
575
|
+
<h2>NAME</h2>
|
576
|
+
<div class="sectionbody">
|
577
|
+
<p>zmq_poll -
|
578
|
+
input/output multiplexing
|
579
|
+
</p>
|
580
|
+
</div>
|
581
|
+
</div>
|
582
|
+
<div id="content">
|
583
|
+
<h2 id="_synopsis">SYNOPSIS</h2>
|
584
|
+
<div class="sectionbody">
|
585
|
+
<div class="paragraph"><p><strong>int zmq_poll (zmq_pollitem_t <em>*items</em>, int <em>nitems</em>, long <em>timeout</em>);</strong></p></div>
|
586
|
+
</div>
|
587
|
+
<h2 id="_description">DESCRIPTION</h2>
|
588
|
+
<div class="sectionbody">
|
589
|
+
<div class="paragraph"><p>The <em>zmq_poll()</em> function provides a mechanism for applications to multiplex
|
590
|
+
input/output events in a level-triggered fashion over a set of sockets. Each
|
591
|
+
member of the array pointed to by the <em>items</em> argument is a <strong>zmq_pollitem_t</strong>
|
592
|
+
structure. The <em>nitems</em> argument specifies the number of items in the <em>items</em>
|
593
|
+
array. The <strong>zmq_pollitem_t</strong> structure is defined as follows:</p></div>
|
594
|
+
<div class="literalblock">
|
595
|
+
<div class="content">
|
596
|
+
<pre><tt>typedef struct
|
597
|
+
{
|
598
|
+
void <em>*socket</em>;
|
599
|
+
int <em>fd</em>;
|
600
|
+
short <em>events</em>;
|
601
|
+
short <em>revents</em>;
|
602
|
+
} zmq_pollitem_t;</tt></pre>
|
603
|
+
</div></div>
|
604
|
+
<div class="paragraph"><p>For each <strong>zmq_pollitem_t</strong> item, <em>zmq_poll()</em> shall examine either the ØMQ
|
605
|
+
socket referenced by <em>socket</em> <strong>or</strong> the standard socket specified by the file
|
606
|
+
descriptor <em>fd</em>, for the event(s) specified in <em>events</em>. If both <em>socket</em> and
|
607
|
+
<em>fd</em> are set in a single <strong>zmq_pollitem_t</strong>, the ØMQ socket referenced by
|
608
|
+
<em>socket</em> shall take precedence and the value of <em>fd</em> shall be ignored.</p></div>
|
609
|
+
<div class="admonitionblock">
|
610
|
+
<table><tr>
|
611
|
+
<td class="icon">
|
612
|
+
<div class="title">Note</div>
|
613
|
+
</td>
|
614
|
+
<td class="content">All ØMQ sockets passed to the <em>zmq_poll()</em> function must share the
|
615
|
+
same ØMQ <em>context</em> and must belong to the thread calling <em>zmq_poll()</em>.</td>
|
616
|
+
</tr></table>
|
617
|
+
</div>
|
618
|
+
<div class="paragraph"><p>For each <strong>zmq_pollitem_t</strong> item, <em>zmq_poll()</em> shall first clear the <em>revents</em>
|
619
|
+
member, and then indicate any requested events that have occurred by setting the
|
620
|
+
bit corresponding to the event condition in the <em>revents</em> member.</p></div>
|
621
|
+
<div class="paragraph"><p>If none of the requested events have occurred on any <strong>zmq_pollitem_t</strong> item,
|
622
|
+
<em>zmq_poll()</em> shall wait <em>timeout</em> microseconds for an event to occur on
|
623
|
+
any of the requested items. If the value of <em>timeout</em> is <tt>0</tt>, <em>zmq_poll()</em>
|
624
|
+
shall return immediately. If the value of <em>timeout</em> is <tt>-1</tt>, <em>zmq_poll()</em> shall
|
625
|
+
block indefinitely until a requested event has occurred on at least one
|
626
|
+
<strong>zmq_pollitem_t</strong>. The resolution of <em>timeout</em> is 1 millisecond.</p></div>
|
627
|
+
<div class="paragraph"><p>The <em>events</em> and <em>revents</em> members of <strong>zmq_pollitem_t</strong> are bit masks constructed
|
628
|
+
by OR’ing a combination of the following event flags:</p></div>
|
629
|
+
<div class="dlist"><dl>
|
630
|
+
<dt class="hdlist1">
|
631
|
+
<strong>ZMQ_POLLIN</strong>
|
632
|
+
</dt>
|
633
|
+
<dd>
|
634
|
+
<p>
|
635
|
+
For ØMQ sockets, at least one message may be received from the <em>socket</em> without
|
636
|
+
blocking. For standard sockets this is equivalent to the <em>POLLIN</em> flag of the
|
637
|
+
<em>poll()</em> system call and generally means that at least one byte of data may be
|
638
|
+
read from <em>fd</em> without blocking.
|
639
|
+
</p>
|
640
|
+
</dd>
|
641
|
+
<dt class="hdlist1">
|
642
|
+
<strong>ZMQ_POLLOUT</strong>
|
643
|
+
</dt>
|
644
|
+
<dd>
|
645
|
+
<p>
|
646
|
+
For ØMQ sockets, at least one message may be sent to the <em>socket</em> without
|
647
|
+
blocking. For standard sockets this is equivalent to the <em>POLLOUT</em> flag of the
|
648
|
+
<em>poll()</em> system call and generally means that at least one byte of data may be
|
649
|
+
written to <em>fd</em> without blocking.
|
650
|
+
</p>
|
651
|
+
</dd>
|
652
|
+
<dt class="hdlist1">
|
653
|
+
<strong>ZMQ_POLLERR</strong>
|
654
|
+
</dt>
|
655
|
+
<dd>
|
656
|
+
<p>
|
657
|
+
For standard sockets, this flag is passed through <em>zmq_poll()</em> to the
|
658
|
+
underlying <em>poll()</em> system call and generally means that some sort of error
|
659
|
+
condition is present on the socket specified by <em>fd</em>. For ØMQ sockets this flag
|
660
|
+
has no effect if set in <em>events</em>, and shall never be returned in <em>revents</em> by
|
661
|
+
<em>zmq_poll()</em>.
|
662
|
+
</p>
|
663
|
+
</dd>
|
664
|
+
</dl></div>
|
665
|
+
<div class="admonitionblock">
|
666
|
+
<table><tr>
|
667
|
+
<td class="icon">
|
668
|
+
<div class="title">Note</div>
|
669
|
+
</td>
|
670
|
+
<td class="content">The <em>zmq_poll()</em> function may be implemented or emulated using operating
|
671
|
+
system interfaces other than <em>poll()</em>, and as such may be subject to the limits
|
672
|
+
of those interfaces in ways not defined in this documentation.</td>
|
673
|
+
</tr></table>
|
674
|
+
</div>
|
675
|
+
</div>
|
676
|
+
<h2 id="_return_value">RETURN VALUE</h2>
|
677
|
+
<div class="sectionbody">
|
678
|
+
<div class="paragraph"><p>Upon successful completion, the <em>zmq_poll()</em> function shall return the number
|
679
|
+
of <strong>zmq_pollitem_t</strong> structures with events signaled in <em>revents</em> or <tt>0</tt> if no
|
680
|
+
events have been signaled. Upon failure, <em>zmq_poll()</em> shall return <tt>-1</tt> and set
|
681
|
+
<em>errno</em> to one of the values defined below.</p></div>
|
682
|
+
</div>
|
683
|
+
<h2 id="_errors">ERRORS</h2>
|
684
|
+
<div class="sectionbody">
|
685
|
+
<div class="dlist"><dl>
|
686
|
+
<dt class="hdlist1">
|
687
|
+
<strong>ETERM</strong>
|
688
|
+
</dt>
|
689
|
+
<dd>
|
690
|
+
<p>
|
691
|
+
At least one of the members of the <em>items</em> array refers to a <em>socket</em> whose
|
692
|
+
associated ØMQ <em>context</em> was terminated.
|
693
|
+
</p>
|
694
|
+
</dd>
|
695
|
+
<dt class="hdlist1">
|
696
|
+
<strong>EFAULT</strong>
|
697
|
+
</dt>
|
698
|
+
<dd>
|
699
|
+
<p>
|
700
|
+
The provided <em>items</em> was not valid (NULL).
|
701
|
+
</p>
|
702
|
+
</dd>
|
703
|
+
<dt class="hdlist1">
|
704
|
+
<strong>EINTR</strong>
|
705
|
+
</dt>
|
706
|
+
<dd>
|
707
|
+
<p>
|
708
|
+
The operation was interrupted by delivery of a signal before any events were
|
709
|
+
available.
|
710
|
+
</p>
|
711
|
+
</dd>
|
712
|
+
</dl></div>
|
713
|
+
</div>
|
714
|
+
<h2 id="_example">EXAMPLE</h2>
|
715
|
+
<div class="sectionbody">
|
716
|
+
<div class="listingblock">
|
717
|
+
<div class="title">Polling indefinitely for input events on both a ØMQ socket and a standard socket.</div>
|
718
|
+
<div class="content">
|
719
|
+
<pre><tt>zmq_pollitem_t items [2];
|
720
|
+
/* First item refers to 0MQ socket 'socket' */
|
721
|
+
items[0].socket = socket;
|
722
|
+
items[0].events = ZMQ_POLLIN;
|
723
|
+
/* Second item refers to standard socket 'fd' */
|
724
|
+
items[1].socket = NULL;
|
725
|
+
items[1].fd = fd;
|
726
|
+
items[1].events = ZMQ_POLLIN;
|
727
|
+
/* Poll for events indefinitely */
|
728
|
+
int rc = zmq_poll (items, 2, -1);
|
729
|
+
assert (rc >= 0);
|
730
|
+
/* Returned events will be stored in items[].revents */</tt></pre>
|
731
|
+
</div></div>
|
732
|
+
</div>
|
733
|
+
<h2 id="_see_also">SEE ALSO</h2>
|
734
|
+
<div class="sectionbody">
|
735
|
+
<div class="paragraph"><p><a href="zmq_socket.html">zmq_socket(3)</a>
|
736
|
+
<a href="zmq_send.html">zmq_send(3)</a>
|
737
|
+
<a href="zmq_recv.html">zmq_recv(3)</a>
|
738
|
+
<a href="zmq.html">zmq(7)</a></p></div>
|
739
|
+
<div class="paragraph"><p>Your operating system documentation for the <em>poll()</em> system call.</p></div>
|
740
|
+
</div>
|
741
|
+
<h2 id="_authors">AUTHORS</h2>
|
742
|
+
<div class="sectionbody">
|
743
|
+
<div class="paragraph"><p>This ØMQ manual page was written by Martin Sustrik <<a href="mailto:sustrik@250bpm.com">sustrik@250bpm.com</a>> and
|
744
|
+
Martin Lucina <<a href="mailto:mato@kotelna.sk">mato@kotelna.sk</a>>.</p></div>
|
745
|
+
</div>
|
746
|
+
</div>
|
747
|
+
<div id="footnotes"><hr /></div>
|
748
|
+
<div id="footer">
|
749
|
+
<div id="footer-text">
|
750
|
+
ØMQ 2.1.6<br />
|
751
|
+
Last updated 2011-05-07 07:13:32 CEST
|
752
|
+
</div>
|
753
|
+
</div>
|
754
|
+
</body>
|
755
|
+
</html>
|