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.
Files changed (300) hide show
  1. data/LICENSE +703 -0
  2. data/README.md +31 -0
  3. data/lib/libzmq.rb +17 -0
  4. data/lib/libzmq/ffi-rzmq.rb +3 -0
  5. data/libzmq/Makefile +5 -0
  6. data/libzmq/extconf.rb +24 -0
  7. data/libzmq/zeromq-2.1.7/AUTHORS +92 -0
  8. data/libzmq/zeromq-2.1.7/COPYING +674 -0
  9. data/libzmq/zeromq-2.1.7/COPYING.LESSER +206 -0
  10. data/libzmq/zeromq-2.1.7/ChangeLog +15620 -0
  11. data/libzmq/zeromq-2.1.7/INSTALL +237 -0
  12. data/libzmq/zeromq-2.1.7/MAINTAINERS +56 -0
  13. data/libzmq/zeromq-2.1.7/Makefile.am +42 -0
  14. data/libzmq/zeromq-2.1.7/Makefile.in +779 -0
  15. data/libzmq/zeromq-2.1.7/NEWS +275 -0
  16. data/libzmq/zeromq-2.1.7/README +39 -0
  17. data/libzmq/zeromq-2.1.7/acinclude.m4 +582 -0
  18. data/libzmq/zeromq-2.1.7/aclocal.m4 +1206 -0
  19. data/libzmq/zeromq-2.1.7/autogen.sh +45 -0
  20. data/libzmq/zeromq-2.1.7/builds/msvc/Makefile.am +8 -0
  21. data/libzmq/zeromq-2.1.7/builds/msvc/Makefile.in +390 -0
  22. data/libzmq/zeromq-2.1.7/builds/msvc/c_local_lat/c_local_lat.vcproj +176 -0
  23. data/libzmq/zeromq-2.1.7/builds/msvc/c_local_thr/c_local_thr.vcproj +176 -0
  24. data/libzmq/zeromq-2.1.7/builds/msvc/c_remote_lat/c_remote_lat.vcproj +176 -0
  25. data/libzmq/zeromq-2.1.7/builds/msvc/c_remote_thr/c_remote_thr.vcproj +176 -0
  26. data/libzmq/zeromq-2.1.7/builds/msvc/libzmq/libzmq.vcproj +783 -0
  27. data/libzmq/zeromq-2.1.7/builds/msvc/msvc.sln +89 -0
  28. data/libzmq/zeromq-2.1.7/builds/msvc/platform.hpp +32 -0
  29. data/libzmq/zeromq-2.1.7/builds/redhat/zeromq.spec.in +139 -0
  30. data/libzmq/zeromq-2.1.7/config/compile +143 -0
  31. data/libzmq/zeromq-2.1.7/config/config.guess +1502 -0
  32. data/libzmq/zeromq-2.1.7/config/config.sub +1714 -0
  33. data/libzmq/zeromq-2.1.7/config/depcomp +630 -0
  34. data/libzmq/zeromq-2.1.7/config/install-sh +520 -0
  35. data/libzmq/zeromq-2.1.7/config/libtool.m4 +7377 -0
  36. data/libzmq/zeromq-2.1.7/config/ltmain.sh +8413 -0
  37. data/libzmq/zeromq-2.1.7/config/ltoptions.m4 +368 -0
  38. data/libzmq/zeromq-2.1.7/config/ltsugar.m4 +123 -0
  39. data/libzmq/zeromq-2.1.7/config/ltversion.m4 +23 -0
  40. data/libzmq/zeromq-2.1.7/config/lt~obsolete.m4 +92 -0
  41. data/libzmq/zeromq-2.1.7/config/missing +376 -0
  42. data/libzmq/zeromq-2.1.7/configure +21645 -0
  43. data/libzmq/zeromq-2.1.7/configure.in +380 -0
  44. data/libzmq/zeromq-2.1.7/doc/Makefile.am +46 -0
  45. data/libzmq/zeromq-2.1.7/doc/Makefile.in +546 -0
  46. data/libzmq/zeromq-2.1.7/doc/asciidoc.conf +56 -0
  47. data/libzmq/zeromq-2.1.7/doc/zmq.7 +242 -0
  48. data/libzmq/zeromq-2.1.7/doc/zmq.html +846 -0
  49. data/libzmq/zeromq-2.1.7/doc/zmq.txt +218 -0
  50. data/libzmq/zeromq-2.1.7/doc/zmq_bind.3 +166 -0
  51. data/libzmq/zeromq-2.1.7/doc/zmq_bind.html +746 -0
  52. data/libzmq/zeromq-2.1.7/doc/zmq_bind.txt +91 -0
  53. data/libzmq/zeromq-2.1.7/doc/zmq_close.3 +81 -0
  54. data/libzmq/zeromq-2.1.7/doc/zmq_close.html +645 -0
  55. data/libzmq/zeromq-2.1.7/doc/zmq_close.txt +52 -0
  56. data/libzmq/zeromq-2.1.7/doc/zmq_connect.3 +161 -0
  57. data/libzmq/zeromq-2.1.7/doc/zmq_connect.html +732 -0
  58. data/libzmq/zeromq-2.1.7/doc/zmq_connect.txt +89 -0
  59. data/libzmq/zeromq-2.1.7/doc/zmq_cpp.7 +410 -0
  60. data/libzmq/zeromq-2.1.7/doc/zmq_cpp.html +765 -0
  61. data/libzmq/zeromq-2.1.7/doc/zmq_cpp.txt +212 -0
  62. data/libzmq/zeromq-2.1.7/doc/zmq_device.3 +140 -0
  63. data/libzmq/zeromq-2.1.7/doc/zmq_device.html +736 -0
  64. data/libzmq/zeromq-2.1.7/doc/zmq_device.txt +138 -0
  65. data/libzmq/zeromq-2.1.7/doc/zmq_epgm.7 +209 -0
  66. data/libzmq/zeromq-2.1.7/doc/zmq_epgm.html +749 -0
  67. data/libzmq/zeromq-2.1.7/doc/zmq_epgm.txt +162 -0
  68. data/libzmq/zeromq-2.1.7/doc/zmq_errno.3 +78 -0
  69. data/libzmq/zeromq-2.1.7/doc/zmq_errno.html +634 -0
  70. data/libzmq/zeromq-2.1.7/doc/zmq_errno.txt +50 -0
  71. data/libzmq/zeromq-2.1.7/doc/zmq_getsockopt.3 +944 -0
  72. data/libzmq/zeromq-2.1.7/doc/zmq_getsockopt.html +1713 -0
  73. data/libzmq/zeromq-2.1.7/doc/zmq_getsockopt.txt +407 -0
  74. data/libzmq/zeromq-2.1.7/doc/zmq_init.3 +71 -0
  75. data/libzmq/zeromq-2.1.7/doc/zmq_init.html +635 -0
  76. data/libzmq/zeromq-2.1.7/doc/zmq_init.txt +51 -0
  77. data/libzmq/zeromq-2.1.7/doc/zmq_inproc.7 +115 -0
  78. data/libzmq/zeromq-2.1.7/doc/zmq_inproc.html +669 -0
  79. data/libzmq/zeromq-2.1.7/doc/zmq_inproc.txt +89 -0
  80. data/libzmq/zeromq-2.1.7/doc/zmq_ipc.7 +109 -0
  81. data/libzmq/zeromq-2.1.7/doc/zmq_ipc.html +662 -0
  82. data/libzmq/zeromq-2.1.7/doc/zmq_ipc.txt +80 -0
  83. data/libzmq/zeromq-2.1.7/doc/zmq_msg_close.3 +81 -0
  84. data/libzmq/zeromq-2.1.7/doc/zmq_msg_close.html +647 -0
  85. data/libzmq/zeromq-2.1.7/doc/zmq_msg_close.txt +55 -0
  86. data/libzmq/zeromq-2.1.7/doc/zmq_msg_copy.3 +95 -0
  87. data/libzmq/zeromq-2.1.7/doc/zmq_msg_copy.html +656 -0
  88. data/libzmq/zeromq-2.1.7/doc/zmq_msg_copy.txt +57 -0
  89. data/libzmq/zeromq-2.1.7/doc/zmq_msg_data.3 +76 -0
  90. data/libzmq/zeromq-2.1.7/doc/zmq_msg_data.html +633 -0
  91. data/libzmq/zeromq-2.1.7/doc/zmq_msg_data.txt +48 -0
  92. data/libzmq/zeromq-2.1.7/doc/zmq_msg_init.3 +110 -0
  93. data/libzmq/zeromq-2.1.7/doc/zmq_msg_init.html +656 -0
  94. data/libzmq/zeromq-2.1.7/doc/zmq_msg_init.txt +65 -0
  95. data/libzmq/zeromq-2.1.7/doc/zmq_msg_init_data.3 +138 -0
  96. data/libzmq/zeromq-2.1.7/doc/zmq_msg_init_data.html +678 -0
  97. data/libzmq/zeromq-2.1.7/doc/zmq_msg_init_data.txt +83 -0
  98. data/libzmq/zeromq-2.1.7/doc/zmq_msg_init_size.3 +97 -0
  99. data/libzmq/zeromq-2.1.7/doc/zmq_msg_init_size.html +656 -0
  100. data/libzmq/zeromq-2.1.7/doc/zmq_msg_init_size.txt +58 -0
  101. data/libzmq/zeromq-2.1.7/doc/zmq_msg_move.3 +79 -0
  102. data/libzmq/zeromq-2.1.7/doc/zmq_msg_move.html +645 -0
  103. data/libzmq/zeromq-2.1.7/doc/zmq_msg_move.txt +52 -0
  104. data/libzmq/zeromq-2.1.7/doc/zmq_msg_size.3 +76 -0
  105. data/libzmq/zeromq-2.1.7/doc/zmq_msg_size.html +633 -0
  106. data/libzmq/zeromq-2.1.7/doc/zmq_msg_size.txt +48 -0
  107. data/libzmq/zeromq-2.1.7/doc/zmq_pgm.7 +209 -0
  108. data/libzmq/zeromq-2.1.7/doc/zmq_pgm.html +749 -0
  109. data/libzmq/zeromq-2.1.7/doc/zmq_pgm.txt +162 -0
  110. data/libzmq/zeromq-2.1.7/doc/zmq_poll.3 +204 -0
  111. data/libzmq/zeromq-2.1.7/doc/zmq_poll.html +755 -0
  112. data/libzmq/zeromq-2.1.7/doc/zmq_poll.txt +132 -0
  113. data/libzmq/zeromq-2.1.7/doc/zmq_recv.3 +172 -0
  114. data/libzmq/zeromq-2.1.7/doc/zmq_recv.html +746 -0
  115. data/libzmq/zeromq-2.1.7/doc/zmq_recv.txt +121 -0
  116. data/libzmq/zeromq-2.1.7/doc/zmq_send.3 +185 -0
  117. data/libzmq/zeromq-2.1.7/doc/zmq_send.html +755 -0
  118. data/libzmq/zeromq-2.1.7/doc/zmq_send.txt +120 -0
  119. data/libzmq/zeromq-2.1.7/doc/zmq_setsockopt.3 +878 -0
  120. data/libzmq/zeromq-2.1.7/doc/zmq_setsockopt.html +1603 -0
  121. data/libzmq/zeromq-2.1.7/doc/zmq_setsockopt.txt +382 -0
  122. data/libzmq/zeromq-2.1.7/doc/zmq_socket.3 +779 -0
  123. data/libzmq/zeromq-2.1.7/doc/zmq_socket.html +1424 -0
  124. data/libzmq/zeromq-2.1.7/doc/zmq_socket.txt +342 -0
  125. data/libzmq/zeromq-2.1.7/doc/zmq_strerror.3 +78 -0
  126. data/libzmq/zeromq-2.1.7/doc/zmq_strerror.html +634 -0
  127. data/libzmq/zeromq-2.1.7/doc/zmq_strerror.txt +55 -0
  128. data/libzmq/zeromq-2.1.7/doc/zmq_tcp.7 +244 -0
  129. data/libzmq/zeromq-2.1.7/doc/zmq_tcp.html +755 -0
  130. data/libzmq/zeromq-2.1.7/doc/zmq_tcp.txt +162 -0
  131. data/libzmq/zeromq-2.1.7/doc/zmq_term.3 +135 -0
  132. data/libzmq/zeromq-2.1.7/doc/zmq_term.html +672 -0
  133. data/libzmq/zeromq-2.1.7/doc/zmq_term.txt +65 -0
  134. data/libzmq/zeromq-2.1.7/doc/zmq_version.3 +78 -0
  135. data/libzmq/zeromq-2.1.7/doc/zmq_version.html +632 -0
  136. data/libzmq/zeromq-2.1.7/doc/zmq_version.txt +53 -0
  137. data/libzmq/zeromq-2.1.7/foreign/openpgm/Makefile.am +8 -0
  138. data/libzmq/zeromq-2.1.7/foreign/openpgm/Makefile.in +588 -0
  139. data/libzmq/zeromq-2.1.7/foreign/openpgm/libpgm-5.1.115~dfsg.tar.gz +0 -0
  140. data/libzmq/zeromq-2.1.7/foreign/xmlParser/xmlParser.cpp +2923 -0
  141. data/libzmq/zeromq-2.1.7/foreign/xmlParser/xmlParser.hpp +762 -0
  142. data/libzmq/zeromq-2.1.7/include/zmq.h +269 -0
  143. data/libzmq/zeromq-2.1.7/include/zmq.hpp +301 -0
  144. data/libzmq/zeromq-2.1.7/include/zmq_utils.h +64 -0
  145. data/libzmq/zeromq-2.1.7/perf/Makefile.am +21 -0
  146. data/libzmq/zeromq-2.1.7/perf/Makefile.in +566 -0
  147. data/libzmq/zeromq-2.1.7/perf/inproc_lat.cpp +232 -0
  148. data/libzmq/zeromq-2.1.7/perf/inproc_thr.cpp +246 -0
  149. data/libzmq/zeromq-2.1.7/perf/local_lat.cpp +108 -0
  150. data/libzmq/zeromq-2.1.7/perf/local_thr.cpp +138 -0
  151. data/libzmq/zeromq-2.1.7/perf/remote_lat.cpp +121 -0
  152. data/libzmq/zeromq-2.1.7/perf/remote_thr.cpp +104 -0
  153. data/libzmq/zeromq-2.1.7/src/Makefile.am +155 -0
  154. data/libzmq/zeromq-2.1.7/src/Makefile.in +1320 -0
  155. data/libzmq/zeromq-2.1.7/src/array.hpp +147 -0
  156. data/libzmq/zeromq-2.1.7/src/atomic_counter.hpp +164 -0
  157. data/libzmq/zeromq-2.1.7/src/atomic_ptr.hpp +159 -0
  158. data/libzmq/zeromq-2.1.7/src/blob.hpp +34 -0
  159. data/libzmq/zeromq-2.1.7/src/clock.cpp +118 -0
  160. data/libzmq/zeromq-2.1.7/src/clock.hpp +60 -0
  161. data/libzmq/zeromq-2.1.7/src/command.cpp +39 -0
  162. data/libzmq/zeromq-2.1.7/src/command.hpp +147 -0
  163. data/libzmq/zeromq-2.1.7/src/config.hpp +88 -0
  164. data/libzmq/zeromq-2.1.7/src/connect_session.cpp +119 -0
  165. data/libzmq/zeromq-2.1.7/src/connect_session.hpp +65 -0
  166. data/libzmq/zeromq-2.1.7/src/ctx.cpp +322 -0
  167. data/libzmq/zeromq-2.1.7/src/ctx.hpp +159 -0
  168. data/libzmq/zeromq-2.1.7/src/decoder.cpp +129 -0
  169. data/libzmq/zeromq-2.1.7/src/decoder.hpp +207 -0
  170. data/libzmq/zeromq-2.1.7/src/device.cpp +120 -0
  171. data/libzmq/zeromq-2.1.7/src/device.hpp +32 -0
  172. data/libzmq/zeromq-2.1.7/src/devpoll.cpp +190 -0
  173. data/libzmq/zeromq-2.1.7/src/devpoll.hpp +100 -0
  174. data/libzmq/zeromq-2.1.7/src/dist.cpp +200 -0
  175. data/libzmq/zeromq-2.1.7/src/dist.hpp +90 -0
  176. data/libzmq/zeromq-2.1.7/src/encoder.cpp +90 -0
  177. data/libzmq/zeromq-2.1.7/src/encoder.hpp +184 -0
  178. data/libzmq/zeromq-2.1.7/src/epoll.cpp +177 -0
  179. data/libzmq/zeromq-2.1.7/src/epoll.hpp +96 -0
  180. data/libzmq/zeromq-2.1.7/src/err.cpp +238 -0
  181. data/libzmq/zeromq-2.1.7/src/err.hpp +145 -0
  182. data/libzmq/zeromq-2.1.7/src/fd.hpp +45 -0
  183. data/libzmq/zeromq-2.1.7/src/fq.cpp +164 -0
  184. data/libzmq/zeromq-2.1.7/src/fq.hpp +80 -0
  185. data/libzmq/zeromq-2.1.7/src/i_engine.hpp +53 -0
  186. data/libzmq/zeromq-2.1.7/src/i_inout.hpp +50 -0
  187. data/libzmq/zeromq-2.1.7/src/i_poll_events.hpp +46 -0
  188. data/libzmq/zeromq-2.1.7/src/io_object.cpp +107 -0
  189. data/libzmq/zeromq-2.1.7/src/io_object.hpp +78 -0
  190. data/libzmq/zeromq-2.1.7/src/io_thread.cpp +109 -0
  191. data/libzmq/zeromq-2.1.7/src/io_thread.hpp +88 -0
  192. data/libzmq/zeromq-2.1.7/src/ip.cpp +339 -0
  193. data/libzmq/zeromq-2.1.7/src/ip.hpp +68 -0
  194. data/libzmq/zeromq-2.1.7/src/kqueue.cpp +194 -0
  195. data/libzmq/zeromq-2.1.7/src/kqueue.hpp +103 -0
  196. data/libzmq/zeromq-2.1.7/src/lb.cpp +174 -0
  197. data/libzmq/zeromq-2.1.7/src/lb.hpp +79 -0
  198. data/libzmq/zeromq-2.1.7/src/libzmq.pc.in +10 -0
  199. data/libzmq/zeromq-2.1.7/src/likely.hpp +33 -0
  200. data/libzmq/zeromq-2.1.7/src/mailbox.cpp +382 -0
  201. data/libzmq/zeromq-2.1.7/src/mailbox.hpp +62 -0
  202. data/libzmq/zeromq-2.1.7/src/msg_content.hpp +52 -0
  203. data/libzmq/zeromq-2.1.7/src/mutex.hpp +121 -0
  204. data/libzmq/zeromq-2.1.7/src/named_session.cpp +85 -0
  205. data/libzmq/zeromq-2.1.7/src/named_session.hpp +57 -0
  206. data/libzmq/zeromq-2.1.7/src/object.cpp +467 -0
  207. data/libzmq/zeromq-2.1.7/src/object.hpp +127 -0
  208. data/libzmq/zeromq-2.1.7/src/options.cpp +336 -0
  209. data/libzmq/zeromq-2.1.7/src/options.hpp +87 -0
  210. data/libzmq/zeromq-2.1.7/src/own.cpp +214 -0
  211. data/libzmq/zeromq-2.1.7/src/own.hpp +140 -0
  212. data/libzmq/zeromq-2.1.7/src/pair.cpp +180 -0
  213. data/libzmq/zeromq-2.1.7/src/pair.hpp +76 -0
  214. data/libzmq/zeromq-2.1.7/src/pgm_receiver.cpp +259 -0
  215. data/libzmq/zeromq-2.1.7/src/pgm_receiver.hpp +129 -0
  216. data/libzmq/zeromq-2.1.7/src/pgm_sender.cpp +215 -0
  217. data/libzmq/zeromq-2.1.7/src/pgm_sender.hpp +105 -0
  218. data/libzmq/zeromq-2.1.7/src/pgm_socket.cpp +705 -0
  219. data/libzmq/zeromq-2.1.7/src/pgm_socket.hpp +118 -0
  220. data/libzmq/zeromq-2.1.7/src/pipe.cpp +409 -0
  221. data/libzmq/zeromq-2.1.7/src/pipe.hpp +214 -0
  222. data/libzmq/zeromq-2.1.7/src/platform.hpp.in +228 -0
  223. data/libzmq/zeromq-2.1.7/src/poll.cpp +180 -0
  224. data/libzmq/zeromq-2.1.7/src/poll.hpp +104 -0
  225. data/libzmq/zeromq-2.1.7/src/poller.hpp +73 -0
  226. data/libzmq/zeromq-2.1.7/src/poller_base.cpp +99 -0
  227. data/libzmq/zeromq-2.1.7/src/poller_base.hpp +84 -0
  228. data/libzmq/zeromq-2.1.7/src/pub.cpp +31 -0
  229. data/libzmq/zeromq-2.1.7/src/pub.hpp +44 -0
  230. data/libzmq/zeromq-2.1.7/src/pull.cpp +61 -0
  231. data/libzmq/zeromq-2.1.7/src/pull.hpp +60 -0
  232. data/libzmq/zeromq-2.1.7/src/push.cpp +62 -0
  233. data/libzmq/zeromq-2.1.7/src/push.hpp +59 -0
  234. data/libzmq/zeromq-2.1.7/src/reaper.cpp +121 -0
  235. data/libzmq/zeromq-2.1.7/src/reaper.hpp +77 -0
  236. data/libzmq/zeromq-2.1.7/src/rep.cpp +131 -0
  237. data/libzmq/zeromq-2.1.7/src/rep.hpp +59 -0
  238. data/libzmq/zeromq-2.1.7/src/req.cpp +121 -0
  239. data/libzmq/zeromq-2.1.7/src/req.hpp +58 -0
  240. data/libzmq/zeromq-2.1.7/src/select.cpp +211 -0
  241. data/libzmq/zeromq-2.1.7/src/select.hpp +116 -0
  242. data/libzmq/zeromq-2.1.7/src/semaphore.hpp +189 -0
  243. data/libzmq/zeromq-2.1.7/src/session.cpp +347 -0
  244. data/libzmq/zeromq-2.1.7/src/session.hpp +150 -0
  245. data/libzmq/zeromq-2.1.7/src/socket_base.cpp +811 -0
  246. data/libzmq/zeromq-2.1.7/src/socket_base.hpp +207 -0
  247. data/libzmq/zeromq-2.1.7/src/stdint.hpp +63 -0
  248. data/libzmq/zeromq-2.1.7/src/sub.cpp +75 -0
  249. data/libzmq/zeromq-2.1.7/src/sub.hpp +50 -0
  250. data/libzmq/zeromq-2.1.7/src/swap.cpp +325 -0
  251. data/libzmq/zeromq-2.1.7/src/swap.hpp +123 -0
  252. data/libzmq/zeromq-2.1.7/src/tcp_connecter.cpp +310 -0
  253. data/libzmq/zeromq-2.1.7/src/tcp_connecter.hpp +81 -0
  254. data/libzmq/zeromq-2.1.7/src/tcp_listener.cpp +371 -0
  255. data/libzmq/zeromq-2.1.7/src/tcp_listener.hpp +73 -0
  256. data/libzmq/zeromq-2.1.7/src/tcp_socket.cpp +228 -0
  257. data/libzmq/zeromq-2.1.7/src/tcp_socket.hpp +72 -0
  258. data/libzmq/zeromq-2.1.7/src/thread.cpp +97 -0
  259. data/libzmq/zeromq-2.1.7/src/thread.hpp +78 -0
  260. data/libzmq/zeromq-2.1.7/src/transient_session.cpp +41 -0
  261. data/libzmq/zeromq-2.1.7/src/transient_session.hpp +52 -0
  262. data/libzmq/zeromq-2.1.7/src/trie.cpp +181 -0
  263. data/libzmq/zeromq-2.1.7/src/trie.hpp +59 -0
  264. data/libzmq/zeromq-2.1.7/src/uuid.cpp +233 -0
  265. data/libzmq/zeromq-2.1.7/src/uuid.hpp +111 -0
  266. data/libzmq/zeromq-2.1.7/src/windows.hpp +79 -0
  267. data/libzmq/zeromq-2.1.7/src/wire.hpp +99 -0
  268. data/libzmq/zeromq-2.1.7/src/xpub.cpp +76 -0
  269. data/libzmq/zeromq-2.1.7/src/xpub.hpp +61 -0
  270. data/libzmq/zeromq-2.1.7/src/xrep.cpp +337 -0
  271. data/libzmq/zeromq-2.1.7/src/xrep.hpp +116 -0
  272. data/libzmq/zeromq-2.1.7/src/xreq.cpp +74 -0
  273. data/libzmq/zeromq-2.1.7/src/xreq.hpp +65 -0
  274. data/libzmq/zeromq-2.1.7/src/xsub.cpp +172 -0
  275. data/libzmq/zeromq-2.1.7/src/xsub.hpp +80 -0
  276. data/libzmq/zeromq-2.1.7/src/ypipe.hpp +209 -0
  277. data/libzmq/zeromq-2.1.7/src/yqueue.hpp +198 -0
  278. data/libzmq/zeromq-2.1.7/src/zmq.cpp +798 -0
  279. data/libzmq/zeromq-2.1.7/src/zmq_connecter.cpp +166 -0
  280. data/libzmq/zeromq-2.1.7/src/zmq_connecter.hpp +92 -0
  281. data/libzmq/zeromq-2.1.7/src/zmq_engine.cpp +220 -0
  282. data/libzmq/zeromq-2.1.7/src/zmq_engine.hpp +87 -0
  283. data/libzmq/zeromq-2.1.7/src/zmq_init.cpp +216 -0
  284. data/libzmq/zeromq-2.1.7/src/zmq_init.hpp +93 -0
  285. data/libzmq/zeromq-2.1.7/src/zmq_listener.cpp +78 -0
  286. data/libzmq/zeromq-2.1.7/src/zmq_listener.hpp +67 -0
  287. data/libzmq/zeromq-2.1.7/tests/Makefile.am +30 -0
  288. data/libzmq/zeromq-2.1.7/tests/Makefile.in +713 -0
  289. data/libzmq/zeromq-2.1.7/tests/test_hwm.cpp +68 -0
  290. data/libzmq/zeromq-2.1.7/tests/test_pair_inproc.cpp +31 -0
  291. data/libzmq/zeromq-2.1.7/tests/test_pair_ipc.cpp +31 -0
  292. data/libzmq/zeromq-2.1.7/tests/test_pair_tcp.cpp +31 -0
  293. data/libzmq/zeromq-2.1.7/tests/test_reqrep_inproc.cpp +31 -0
  294. data/libzmq/zeromq-2.1.7/tests/test_reqrep_ipc.cpp +31 -0
  295. data/libzmq/zeromq-2.1.7/tests/test_reqrep_tcp.cpp +31 -0
  296. data/libzmq/zeromq-2.1.7/tests/test_shutdown_stress.cpp +87 -0
  297. data/libzmq/zeromq-2.1.7/tests/testutil.hpp +130 -0
  298. data/libzmq/zeromq-2.1.7/version.sh +21 -0
  299. data/libzmq/zeromq-2.1.7/zeromq.spec +139 -0
  300. metadata +348 -0
@@ -0,0 +1,55 @@
1
+ zmq_strerror(3)
2
+ ===============
3
+
4
+
5
+ NAME
6
+ ----
7
+ zmq_strerror - get 0MQ error message string
8
+
9
+
10
+ SYNOPSIS
11
+ --------
12
+ *const char *zmq_strerror (int 'errnum');*
13
+
14
+
15
+ DESCRIPTION
16
+ -----------
17
+ The _zmq_strerror()_ function shall return a pointer to an error message string
18
+ corresponding to the error number specified by the 'errnum' argument. As 0MQ
19
+ defines additional error numbers over and above those defined by the operating
20
+ system, applications should use _zmq_strerror()_ in preference to the standard
21
+ _strerror()_ function.
22
+
23
+
24
+ RETURN VALUE
25
+ ------------
26
+ The _zmq_strerror()_ function shall return a pointer to an error message
27
+ string.
28
+
29
+
30
+ ERRORS
31
+ ------
32
+ No errors are defined.
33
+
34
+
35
+ EXAMPLE
36
+ -------
37
+ .Displaying an error message when a 0MQ context cannot be initialised
38
+ ----
39
+ void *ctx = zmq_init (1, 1, 0);
40
+ if (!ctx) {
41
+ printf ("Error occurred during zmq_init(): %s\n", zmq_strerror (errno));
42
+ abort ();
43
+ }
44
+ ----
45
+
46
+
47
+ SEE ALSO
48
+ --------
49
+ linkzmq:zmq[7]
50
+
51
+
52
+ AUTHORS
53
+ -------
54
+ This 0MQ manual page was written by Martin Sustrik <sustrik@250bpm.com> and
55
+ Martin Lucina <mato@kotelna.sk>.
@@ -0,0 +1,244 @@
1
+ '\" t
2
+ .\" Title: zmq_tcp
3
+ .\" Author: [see the "AUTHORS" section]
4
+ .\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
5
+ .\" Date: 05/06/2011
6
+ .\" Manual: 0MQ Manual
7
+ .\" Source: 0MQ 2.1.6
8
+ .\" Language: English
9
+ .\"
10
+ .TH "ZMQ_TCP" "7" "05/06/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_tcp \- 0MQ unicast transport using TCP
32
+ .SH "SYNOPSIS"
33
+ .sp
34
+ TCP is an ubiquitous, reliable, unicast transport\&. When connecting distributed applications over a network with 0MQ, using the TCP transport will likely be your first choice\&.
35
+ .SH "ADDRESSING"
36
+ .sp
37
+ A 0MQ address string consists of two parts as follows: \fItransport\fR://\fIendpoint\fR\&. The \fItransport\fR part specifies the underlying transport protocol to use, and for the TCP transport shall be set to tcp\&. The meaning of the \fIendpoint\fR part for the TCP transport is defined below\&.
38
+ .SS "Assigning a local address to a socket"
39
+ .sp
40
+ When assigning a local address to a socket using \fIzmq_bind()\fR with the \fItcp\fR transport, the \fIendpoint\fR shall be interpreted as an \fIinterface\fR followed by a colon and the TCP port number to use\&.
41
+ .sp
42
+ An \fIinterface\fR may be specified by either of the following:
43
+ .sp
44
+ .RS 4
45
+ .ie n \{\
46
+ \h'-04'\(bu\h'+03'\c
47
+ .\}
48
+ .el \{\
49
+ .sp -1
50
+ .IP \(bu 2.3
51
+ .\}
52
+ The wild\-card
53
+ *, meaning all available interfaces\&.
54
+ .RE
55
+ .sp
56
+ .RS 4
57
+ .ie n \{\
58
+ \h'-04'\(bu\h'+03'\c
59
+ .\}
60
+ .el \{\
61
+ .sp -1
62
+ .IP \(bu 2.3
63
+ .\}
64
+ The primary IPv4 address assigned to the interface, in its numeric representation\&.
65
+ .RE
66
+ .sp
67
+ .RS 4
68
+ .ie n \{\
69
+ \h'-04'\(bu\h'+03'\c
70
+ .\}
71
+ .el \{\
72
+ .sp -1
73
+ .IP \(bu 2.3
74
+ .\}
75
+ The interface name as defined by the operating system\&.
76
+ .RE
77
+ .if n \{\
78
+ .sp
79
+ .\}
80
+ .RS 4
81
+ .it 1 an-trap
82
+ .nr an-no-space-flag 1
83
+ .nr an-break-flag 1
84
+ .br
85
+ .ps +1
86
+ \fBNote\fR
87
+ .ps -1
88
+ .br
89
+ .sp
90
+ Interface names are not standardised in any way and should be assumed to be arbitrary and platform dependent\&. On Win32 platforms no short interface names exist, thus only the primary IPv4 address may be used to specify an \fIinterface\fR\&.
91
+ .sp .5v
92
+ .RE
93
+ .SS "Connecting a socket"
94
+ .sp
95
+ When connecting a socket to a peer address using \fIzmq_connect()\fR with the \fItcp\fR transport, the \fIendpoint\fR shall be interpreted as a \fIpeer address\fR followed by a colon and the TCP port number to use\&.
96
+ .sp
97
+ A \fIpeer address\fR may be specified by either of the following:
98
+ .sp
99
+ .RS 4
100
+ .ie n \{\
101
+ \h'-04'\(bu\h'+03'\c
102
+ .\}
103
+ .el \{\
104
+ .sp -1
105
+ .IP \(bu 2.3
106
+ .\}
107
+ The DNS name of the peer\&.
108
+ .RE
109
+ .sp
110
+ .RS 4
111
+ .ie n \{\
112
+ \h'-04'\(bu\h'+03'\c
113
+ .\}
114
+ .el \{\
115
+ .sp -1
116
+ .IP \(bu 2.3
117
+ .\}
118
+ The IPv4 address of the peer, in it\(cqs numeric representation\&.
119
+ .RE
120
+ .SH "WIRE FORMAT"
121
+ .sp
122
+ 0MQ messages are transmitted over TCP in frames consisting of an encoded \fIpayload length\fR, followed by a \fIflags\fR field and the message body\&. The \fIpayload length\fR is defined as the combined length in octets of the message body and the \fIflags\fR field\&.
123
+ .sp
124
+ For frames with a \fIpayload length\fR not exceeding 254 octets, the \fIpayload length\fR shall be encoded as a single octet\&. The minimum valid \fIpayload length\fR of a frame is 1 octet, thus a \fIpayload length\fR of 0 octets is invalid and such frames SHOULD be ignored\&.
125
+ .sp
126
+ For frames with a \fIpayload length\fR exceeding 254 octets, the \fIpayload length\fR shall be encoded as a single octet with the value 255 followed by the \fIpayload length\fR represented as a 64\-bit unsigned integer in network byte order\&.
127
+ .sp
128
+ The \fIflags\fR field consists of a single octet containing various control flags:
129
+ .sp
130
+ Bit 0 (MORE): \fIMore message parts to follow\fR\&. A value of 0 indicates that there are no more message parts to follow; or that the message being sent is not a multi\-part message\&. A value of 1 indicates that the message being sent is a multi\-part message and more message parts are to follow\&.
131
+ .sp
132
+ Bits 1\-7: \fIReserved\fR\&. Bits 1\-7 are reserved for future expansion and MUST be set to zero\&.
133
+ .sp
134
+ The following ABNF grammar represents a single \fIframe\fR:
135
+ .sp
136
+ .if n \{\
137
+ .RS 4
138
+ .\}
139
+ .nf
140
+ frame = (length flags data)
141
+ length = OCTET / (escape 8OCTET)
142
+ flags = OCTET
143
+ escape = %xFF
144
+ data = *OCTET
145
+ .fi
146
+ .if n \{\
147
+ .RE
148
+ .\}
149
+ .sp
150
+ The following diagram illustrates the layout of a frame with a \fIpayload length\fR not exceeding 254 octets:
151
+ .sp
152
+ .if n \{\
153
+ .RS 4
154
+ .\}
155
+ .nf
156
+ 0 1 2 3
157
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
158
+ +\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+
159
+ | Payload length| Flags | Message body \&.\&.\&. |
160
+ +\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+
161
+ | Message body \&.\&.\&.
162
+ +\-+\-+\-+\-+\-+\-+\- \&.\&.\&.
163
+ .fi
164
+ .if n \{\
165
+ .RE
166
+ .\}
167
+ .sp
168
+ The following diagram illustrates the layout of a frame with a \fIpayload length\fR exceeding 254 octets:
169
+ .sp
170
+ .if n \{\
171
+ .RS 4
172
+ .\}
173
+ .nf
174
+ 0 1 2 3
175
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
176
+ +\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+
177
+ | 0xff | Payload length \&.\&.\&. |
178
+ +\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+
179
+ | Payload length \&.\&.\&. |
180
+ +\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+
181
+ | Payload length| Flags | Message body \&.\&.\&. |
182
+ +\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+\-+
183
+ | Message body \&.\&.\&.
184
+ +\-+\-+\-+\-+\-+\-+\-+ \&.\&.\&.
185
+ .fi
186
+ .if n \{\
187
+ .RE
188
+ .\}
189
+ .SH "EXAMPLES"
190
+ .PP
191
+ \fBAssigning a local address to a socket\fR.
192
+ .sp
193
+ .if n \{\
194
+ .RS 4
195
+ .\}
196
+ .nf
197
+ /* TCP port 5555 on all available interfaces */
198
+ rc = zmq_bind(socket, "tcp://*:5555");
199
+ assert (rc == 0);
200
+ /* TCP port 5555 on the local loop\-back interface on all platforms */
201
+ rc = zmq_bind(socket, "tcp://127\&.0\&.0\&.1:5555");
202
+ assert (rc == 0);
203
+ /* TCP port 5555 on the first Ethernet network interface on Linux */
204
+ rc = zmq_bind(socket, "tcp://eth0:5555");
205
+ assert (rc == 0);
206
+ .fi
207
+ .if n \{\
208
+ .RE
209
+ .\}
210
+ .PP
211
+ \fBConnecting a socket\fR.
212
+ .sp
213
+ .if n \{\
214
+ .RS 4
215
+ .\}
216
+ .nf
217
+ /* Connecting using an IP address */
218
+ rc = zmq_connect(socket, "tcp://192\&.168\&.1\&.1:5555");
219
+ assert (rc == 0);
220
+ /* Connecting using a DNS name */
221
+ rc = zmq_connect(socket, "tcp://server1:5555");
222
+ assert (rc == 0);
223
+ .fi
224
+ .if n \{\
225
+ .RE
226
+ .\}
227
+ .sp
228
+ .SH "SEE ALSO"
229
+ .sp
230
+ \fBzmq_bind\fR(3) \fBzmq_connect\fR(3) \fBzmq_pgm\fR(7) \fBzmq_ipc\fR(7) \fBzmq_inproc\fR(7) \fBzmq\fR(7)
231
+ .SH "AUTHORS"
232
+ .sp
233
+ 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>\&.
234
+ .SH "NOTES"
235
+ .IP " 1." 4
236
+ sustrik@250bpm.com
237
+ .RS 4
238
+ \%mailto:sustrik@250bpm.com
239
+ .RE
240
+ .IP " 2." 4
241
+ mato@kotelna.sk
242
+ .RS 4
243
+ \%mailto:mato@kotelna.sk
244
+ .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_tcp(7)</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
+ /*<![CDATA[*/
438
+ window.onload = function(){asciidoc.footnotes();}
439
+ var asciidoc = { // Namespace.
440
+
441
+ /////////////////////////////////////////////////////////////////////
442
+ // Table Of Contents generator
443
+ /////////////////////////////////////////////////////////////////////
444
+
445
+ /* Author: Mihai Bazon, September 2002
446
+ * http://students.infoiasi.ro/~mishoo
447
+ *
448
+ * Table Of Content generator
449
+ * Version: 0.4
450
+ *
451
+ * Feel free to use this script under the terms of the GNU General Public
452
+ * License, as long as you do not remove or alter this notice.
453
+ */
454
+
455
+ /* modified by Troy D. Hanson, September 2006. License: GPL */
456
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */
457
+
458
+ // toclevels = 1..4.
459
+ toc: function (toclevels) {
460
+
461
+ function getText(el) {
462
+ var text = "";
463
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
464
+ if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
465
+ text += i.data;
466
+ else if (i.firstChild != null)
467
+ text += getText(i);
468
+ }
469
+ return text;
470
+ }
471
+
472
+ function TocEntry(el, text, toclevel) {
473
+ this.element = el;
474
+ this.text = text;
475
+ this.toclevel = toclevel;
476
+ }
477
+
478
+ function tocEntries(el, toclevels) {
479
+ var result = new Array;
480
+ var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
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_tcp(7) Manual Page
574
+ </h1>
575
+ <h2>NAME</h2>
576
+ <div class="sectionbody">
577
+ <p>zmq_tcp -
578
+ 0MQ unicast transport using TCP
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>TCP is an ubiquitous, reliable, unicast transport. When connecting distributed
586
+ applications over a network with ØMQ, using the TCP transport will likely be
587
+ your first choice.</p></div>
588
+ </div>
589
+ <h2 id="_addressing">ADDRESSING</h2>
590
+ <div class="sectionbody">
591
+ <div class="paragraph"><p>A ØMQ address string consists of two parts as follows:
592
+ <em>transport</em><tt>://</tt><em>endpoint</em>. The <em>transport</em> part specifies the underlying
593
+ transport protocol to use, and for the TCP transport shall be set to <tt>tcp</tt>.
594
+ The meaning of the <em>endpoint</em> part for the TCP transport is defined below.</p></div>
595
+ <h3 id="_assigning_a_local_address_to_a_socket">Assigning a local address to a socket</h3><div style="clear:left"></div>
596
+ <div class="paragraph"><p>When assigning a local address to a socket using <em>zmq_bind()</em> with the <em>tcp</em>
597
+ transport, the <em>endpoint</em> shall be interpreted as an <em>interface</em> followed by a
598
+ colon and the TCP port number to use.</p></div>
599
+ <div class="paragraph"><p>An <em>interface</em> may be specified by either of the following:</p></div>
600
+ <div class="ulist"><ul>
601
+ <li>
602
+ <p>
603
+ The wild-card <tt>*</tt>, meaning all available interfaces.
604
+ </p>
605
+ </li>
606
+ <li>
607
+ <p>
608
+ The primary IPv4 address assigned to the interface, in its numeric
609
+ representation.
610
+ </p>
611
+ </li>
612
+ <li>
613
+ <p>
614
+ The interface name as defined by the operating system.
615
+ </p>
616
+ </li>
617
+ </ul></div>
618
+ <div class="admonitionblock">
619
+ <table><tr>
620
+ <td class="icon">
621
+ <div class="title">Note</div>
622
+ </td>
623
+ <td class="content">Interface names are not standardised in any way and should be assumed to
624
+ be arbitrary and platform dependent. On Win32 platforms no short interface
625
+ names exist, thus only the primary IPv4 address may be used to specify an
626
+ <em>interface</em>.</td>
627
+ </tr></table>
628
+ </div>
629
+ <h3 id="_connecting_a_socket">Connecting a socket</h3><div style="clear:left"></div>
630
+ <div class="paragraph"><p>When connecting a socket to a peer address using <em>zmq_connect()</em> with the <em>tcp</em>
631
+ transport, the <em>endpoint</em> shall be interpreted as a <em>peer address</em> followed by
632
+ a colon and the TCP port number to use.</p></div>
633
+ <div class="paragraph"><p>A <em>peer address</em> may be specified by either of the following:</p></div>
634
+ <div class="ulist"><ul>
635
+ <li>
636
+ <p>
637
+ The DNS name of the peer.
638
+ </p>
639
+ </li>
640
+ <li>
641
+ <p>
642
+ The IPv4 address of the peer, in it&#8217;s numeric representation.
643
+ </p>
644
+ </li>
645
+ </ul></div>
646
+ </div>
647
+ <h2 id="_wire_format">WIRE FORMAT</h2>
648
+ <div class="sectionbody">
649
+ <div class="paragraph"><p>ØMQ messages are transmitted over TCP in frames consisting of an encoded
650
+ <em>payload length</em>, followed by a <em>flags</em> field and the message body. The <em>payload
651
+ length</em> is defined as the combined length in octets of the message body and the
652
+ <em>flags</em> field.</p></div>
653
+ <div class="paragraph"><p>For frames with a <em>payload length</em> not exceeding 254 octets, the <em>payload
654
+ length</em> shall be encoded as a single octet. The minimum valid <em>payload length</em>
655
+ of a frame is 1 octet, thus a <em>payload length</em> of 0 octets is invalid and such
656
+ frames SHOULD be ignored.</p></div>
657
+ <div class="paragraph"><p>For frames with a <em>payload length</em> exceeding 254 octets, the <em>payload length</em>
658
+ shall be encoded as a single octet with the value <tt>255</tt> followed by the
659
+ <em>payload length</em> represented as a 64-bit unsigned integer in network byte
660
+ order.</p></div>
661
+ <div class="paragraph"><p>The <em>flags</em> field consists of a single octet containing various control flags:</p></div>
662
+ <div class="paragraph"><p>Bit 0 (MORE): <em>More message parts to follow</em>. A value of 0 indicates that there
663
+ are no more message parts to follow; or that the message being sent is not a
664
+ multi-part message. A value of 1 indicates that the message being sent is a
665
+ multi-part message and more message parts are to follow.</p></div>
666
+ <div class="paragraph"><p>Bits 1-7: <em>Reserved</em>. Bits 1-7 are reserved for future expansion and MUST be
667
+ set to zero.</p></div>
668
+ <div class="paragraph"><p>The following ABNF grammar represents a single <em>frame</em>:</p></div>
669
+ <div class="literalblock">
670
+ <div class="content">
671
+ <pre><tt> frame = (length flags data)
672
+ length = OCTET / (escape 8OCTET)
673
+ flags = OCTET
674
+ escape = %xFF
675
+ data = *OCTET</tt></pre>
676
+ </div></div>
677
+ <div class="paragraph"><p>The following diagram illustrates the layout of a frame with a <em>payload length</em>
678
+ not exceeding 254 octets:</p></div>
679
+ <div class="literalblock">
680
+ <div class="content">
681
+ <pre><tt>0 1 2 3
682
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
683
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
684
+ | Payload length| Flags | Message body ... |
685
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
686
+ | Message body ...
687
+ +-+-+-+-+-+-+- ...</tt></pre>
688
+ </div></div>
689
+ <div class="paragraph"><p>The following diagram illustrates the layout of a frame with a <em>payload length</em>
690
+ exceeding 254 octets:</p></div>
691
+ <div class="literalblock">
692
+ <div class="content">
693
+ <pre><tt>0 1 2 3
694
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
695
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
696
+ | 0xff | Payload length ... |
697
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
698
+ | Payload length ... |
699
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
700
+ | Payload length| Flags | Message body ... |
701
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
702
+ | Message body ...
703
+ +-+-+-+-+-+-+-+ ...</tt></pre>
704
+ </div></div>
705
+ </div>
706
+ <h2 id="_examples">EXAMPLES</h2>
707
+ <div class="sectionbody">
708
+ <div class="listingblock">
709
+ <div class="title">Assigning a local address to a socket</div>
710
+ <div class="content">
711
+ <pre><tt>/* TCP port 5555 on all available interfaces */
712
+ rc = zmq_bind(socket, "tcp://*:5555");
713
+ assert (rc == 0);
714
+ /* TCP port 5555 on the local loop-back interface on all platforms */
715
+ rc = zmq_bind(socket, "tcp://127.0.0.1:5555");
716
+ assert (rc == 0);
717
+ /* TCP port 5555 on the first Ethernet network interface on Linux */
718
+ rc = zmq_bind(socket, "tcp://eth0:5555");
719
+ assert (rc == 0);</tt></pre>
720
+ </div></div>
721
+ <div class="listingblock">
722
+ <div class="title">Connecting a socket</div>
723
+ <div class="content">
724
+ <pre><tt>/* Connecting using an IP address */
725
+ rc = zmq_connect(socket, "tcp://192.168.1.1:5555");
726
+ assert (rc == 0);
727
+ /* Connecting using a DNS name */
728
+ rc = zmq_connect(socket, "tcp://server1:5555");
729
+ assert (rc == 0);</tt></pre>
730
+ </div></div>
731
+ </div>
732
+ <h2 id="_see_also">SEE ALSO</h2>
733
+ <div class="sectionbody">
734
+ <div class="paragraph"><p><a href="zmq_bind.html">zmq_bind(3)</a>
735
+ <a href="zmq_connect.html">zmq_connect(3)</a>
736
+ <a href="zmq_pgm.html">zmq_pgm(7)</a>
737
+ <a href="zmq_ipc.html">zmq_ipc(7)</a>
738
+ <a href="zmq_inproc.html">zmq_inproc(7)</a>
739
+ <a href="zmq.html">zmq(7)</a></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 &lt;<a href="mailto:sustrik@250bpm.com">sustrik@250bpm.com</a>&gt; and
744
+ Martin Lucina &lt;<a href="mailto:mato@kotelna.sk">mato@kotelna.sk</a>&gt;.</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.4<br />
751
+ Last updated 2011-03-13 17:59:17 CEST
752
+ </div>
753
+ </div>
754
+ </body>
755
+ </html>