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,90 @@
1
+ /*
2
+ Copyright (c) 2007-2011 iMatix Corporation
3
+ Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
4
+
5
+ This file is part of 0MQ.
6
+
7
+ 0MQ is free software; you can redistribute it and/or modify it under
8
+ the terms of the GNU Lesser General Public License as published by
9
+ the Free Software Foundation; either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ 0MQ is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU Lesser General Public License for more details.
16
+
17
+ You should have received a copy of the GNU Lesser General Public License
18
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+ */
20
+
21
+ #ifndef __ZMQ_DIST_HPP_INCLUDED__
22
+ #define __ZMQ_DIST_HPP_INCLUDED__
23
+
24
+ #include <vector>
25
+
26
+ #include "array.hpp"
27
+ #include "pipe.hpp"
28
+
29
+ namespace zmq
30
+ {
31
+
32
+ // Class manages a set of outbound pipes. It sends each messages to
33
+ // each of them.
34
+ class dist_t : public i_writer_events
35
+ {
36
+ public:
37
+
38
+ dist_t (class own_t *sink_);
39
+ ~dist_t ();
40
+
41
+ void attach (writer_t *pipe_);
42
+ void terminate ();
43
+ int send (zmq_msg_t *msg_, int flags_);
44
+ bool has_out ();
45
+
46
+ // i_writer_events interface implementation.
47
+ void activated (writer_t *pipe_);
48
+ void terminated (writer_t *pipe_);
49
+
50
+ private:
51
+
52
+ // Write the message to the pipe. Make the pipe inactive if writing
53
+ // fails. In such a case false is returned.
54
+ bool write (class writer_t *pipe_, zmq_msg_t *msg_);
55
+
56
+ // Put the message to all active pipes.
57
+ void distribute (zmq_msg_t *msg_, int flags_);
58
+
59
+ // List of outbound pipes.
60
+ typedef array_t <class writer_t> pipes_t;
61
+ pipes_t pipes;
62
+
63
+ // Number of active pipes. All the active pipes are located at the
64
+ // beginning of the pipes array. These are the pipes the messages
65
+ // can be sent to at the moment.
66
+ pipes_t::size_type active;
67
+
68
+ // Number of pipes eligible for sending messages to. This includes all
69
+ // the active pipes plus all the pipes that we can in theory send
70
+ // messages to (the HWM is not yet reached), but sending a message
71
+ // to them would result in partial message being delivered, ie. message
72
+ // with initial parts missing.
73
+ pipes_t::size_type eligible;
74
+
75
+ // True if last we are in the middle of a multipart message.
76
+ bool more;
77
+
78
+ // Object to send events to.
79
+ class own_t *sink;
80
+
81
+ // If true, termination process is already underway.
82
+ bool terminating;
83
+
84
+ dist_t (const dist_t&);
85
+ const dist_t &operator = (const dist_t&);
86
+ };
87
+
88
+ }
89
+
90
+ #endif
@@ -0,0 +1,90 @@
1
+ /*
2
+ Copyright (c) 2007-2011 iMatix Corporation
3
+ Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
4
+
5
+ This file is part of 0MQ.
6
+
7
+ 0MQ is free software; you can redistribute it and/or modify it under
8
+ the terms of the GNU Lesser General Public License as published by
9
+ the Free Software Foundation; either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ 0MQ is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU Lesser General Public License for more details.
16
+
17
+ You should have received a copy of the GNU Lesser General Public License
18
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+ */
20
+
21
+ #include "encoder.hpp"
22
+ #include "i_inout.hpp"
23
+ #include "wire.hpp"
24
+
25
+ zmq::encoder_t::encoder_t (size_t bufsize_) :
26
+ encoder_base_t <encoder_t> (bufsize_),
27
+ source (NULL)
28
+ {
29
+ zmq_msg_init (&in_progress);
30
+
31
+ // Write 0 bytes to the batch and go to message_ready state.
32
+ next_step (NULL, 0, &encoder_t::message_ready, true);
33
+ }
34
+
35
+ zmq::encoder_t::~encoder_t ()
36
+ {
37
+ zmq_msg_close (&in_progress);
38
+ }
39
+
40
+ void zmq::encoder_t::set_inout (i_inout *source_)
41
+ {
42
+ source = source_;
43
+ }
44
+
45
+ bool zmq::encoder_t::size_ready ()
46
+ {
47
+ // Write message body into the buffer.
48
+ next_step (zmq_msg_data (&in_progress), zmq_msg_size (&in_progress),
49
+ &encoder_t::message_ready, false);
50
+ return true;
51
+ }
52
+
53
+ bool zmq::encoder_t::message_ready ()
54
+ {
55
+ // Destroy content of the old message.
56
+ zmq_msg_close (&in_progress);
57
+
58
+ // Read new message. If there is none, return false.
59
+ // Note that new state is set only if write is successful. That way
60
+ // unsuccessful write will cause retry on the next state machine
61
+ // invocation.
62
+ if (!source || !source->read (&in_progress)) {
63
+ zmq_msg_init (&in_progress);
64
+ return false;
65
+ }
66
+
67
+ // Get the message size.
68
+ size_t size = zmq_msg_size (&in_progress);
69
+
70
+ // Account for the 'flags' byte.
71
+ size++;
72
+
73
+ // For messages less than 255 bytes long, write one byte of message size.
74
+ // For longer messages write 0xff escape character followed by 8-byte
75
+ // message size. In both cases 'flags' field follows.
76
+ if (size < 255) {
77
+ tmpbuf [0] = (unsigned char) size;
78
+ tmpbuf [1] = (in_progress.flags & ~ZMQ_MSG_SHARED);
79
+ next_step (tmpbuf, 2, &encoder_t::size_ready,
80
+ !(in_progress.flags & ZMQ_MSG_MORE));
81
+ }
82
+ else {
83
+ tmpbuf [0] = 0xff;
84
+ put_uint64 (tmpbuf + 1, size);
85
+ tmpbuf [9] = (in_progress.flags & ~ZMQ_MSG_SHARED);
86
+ next_step (tmpbuf, 10, &encoder_t::size_ready,
87
+ !(in_progress.flags & ZMQ_MSG_MORE));
88
+ }
89
+ return true;
90
+ }
@@ -0,0 +1,184 @@
1
+ /*
2
+ Copyright (c) 2007-2011 iMatix Corporation
3
+ Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
4
+
5
+ This file is part of 0MQ.
6
+
7
+ 0MQ is free software; you can redistribute it and/or modify it under
8
+ the terms of the GNU Lesser General Public License as published by
9
+ the Free Software Foundation; either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ 0MQ is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU Lesser General Public License for more details.
16
+
17
+ You should have received a copy of the GNU Lesser General Public License
18
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+ */
20
+
21
+ #ifndef __ZMQ_ENCODER_HPP_INCLUDED__
22
+ #define __ZMQ_ENCODER_HPP_INCLUDED__
23
+
24
+ #include <stddef.h>
25
+ #include <string.h>
26
+ #include <stdlib.h>
27
+ #include <algorithm>
28
+
29
+ #include "err.hpp"
30
+
31
+ #include "../include/zmq.h"
32
+
33
+ namespace zmq
34
+ {
35
+
36
+ // Helper base class for encoders. It implements the state machine that
37
+ // fills the outgoing buffer. Derived classes should implement individual
38
+ // state machine actions.
39
+
40
+ template <typename T> class encoder_base_t
41
+ {
42
+ public:
43
+
44
+ inline encoder_base_t (size_t bufsize_) :
45
+ bufsize (bufsize_)
46
+ {
47
+ buf = (unsigned char*) malloc (bufsize_);
48
+ alloc_assert (buf);
49
+ }
50
+
51
+ // The destructor doesn't have to be virtual. It is made virtual
52
+ // just to keep ICC and code checking tools from complaining.
53
+ inline virtual ~encoder_base_t ()
54
+ {
55
+ free (buf);
56
+ }
57
+
58
+ // The function returns a batch of binary data. The data
59
+ // are filled to a supplied buffer. If no buffer is supplied (data_
60
+ // points to NULL) decoder object will provide buffer of its own.
61
+ // If offset is not NULL, it is filled by offset of the first message
62
+ // in the batch.If there's no beginning of a message in the batch,
63
+ // offset is set to -1.
64
+ inline void get_data (unsigned char **data_, size_t *size_,
65
+ int *offset_ = NULL)
66
+ {
67
+ unsigned char *buffer = !*data_ ? buf : *data_;
68
+ size_t buffersize = !*data_ ? bufsize : *size_;
69
+
70
+ size_t pos = 0;
71
+ if (offset_)
72
+ *offset_ = -1;
73
+
74
+ while (true) {
75
+
76
+ // If there are no more data to return, run the state machine.
77
+ // If there are still no data, return what we already have
78
+ // in the buffer.
79
+ if (!to_write) {
80
+ if (!(static_cast <T*> (this)->*next) ()) {
81
+ *data_ = buffer;
82
+ *size_ = pos;
83
+ return;
84
+ }
85
+
86
+ // If beginning of the message was processed, adjust the
87
+ // first-message-offset.
88
+ if (beginning) {
89
+ if (offset_ && *offset_ == -1)
90
+ *offset_ = pos;
91
+ beginning = false;
92
+ }
93
+ }
94
+
95
+ // If there are no data in the buffer yet and we are able to
96
+ // fill whole buffer in a single go, let's use zero-copy.
97
+ // There's no disadvantage to it as we cannot stuck multiple
98
+ // messages into the buffer anyway. Note that subsequent
99
+ // write(s) are non-blocking, thus each single write writes
100
+ // at most SO_SNDBUF bytes at once not depending on how large
101
+ // is the chunk returned from here.
102
+ // As a consequence, large messages being sent won't block
103
+ // other engines running in the same I/O thread for excessive
104
+ // amounts of time.
105
+ if (!pos && !*data_ && to_write >= buffersize) {
106
+ *data_ = write_pos;
107
+ *size_ = to_write;
108
+ write_pos = NULL;
109
+ to_write = 0;
110
+ return;
111
+ }
112
+
113
+ // Copy data to the buffer. If the buffer is full, return.
114
+ size_t to_copy = std::min (to_write, buffersize - pos);
115
+ memcpy (buffer + pos, write_pos, to_copy);
116
+ pos += to_copy;
117
+ write_pos += to_copy;
118
+ to_write -= to_copy;
119
+ if (pos == buffersize) {
120
+ *data_ = buffer;
121
+ *size_ = pos;
122
+ return;
123
+ }
124
+ }
125
+ }
126
+
127
+ protected:
128
+
129
+ // Prototype of state machine action.
130
+ typedef bool (T::*step_t) ();
131
+
132
+ // This function should be called from derived class to write the data
133
+ // to the buffer and schedule next state machine action. Set beginning
134
+ // to true when you are writing first byte of a message.
135
+ inline void next_step (void *write_pos_, size_t to_write_,
136
+ step_t next_, bool beginning_)
137
+ {
138
+ write_pos = (unsigned char*) write_pos_;
139
+ to_write = to_write_;
140
+ next = next_;
141
+ beginning = beginning_;
142
+ }
143
+
144
+ private:
145
+
146
+ unsigned char *write_pos;
147
+ size_t to_write;
148
+ step_t next;
149
+ bool beginning;
150
+
151
+ size_t bufsize;
152
+ unsigned char *buf;
153
+
154
+ encoder_base_t (const encoder_base_t&);
155
+ void operator = (const encoder_base_t&);
156
+ };
157
+
158
+ // Encoder for 0MQ framing protocol. Converts messages into data batches.
159
+
160
+ class encoder_t : public encoder_base_t <encoder_t>
161
+ {
162
+ public:
163
+
164
+ encoder_t (size_t bufsize_);
165
+ ~encoder_t ();
166
+
167
+ void set_inout (struct i_inout *source_);
168
+
169
+ private:
170
+
171
+ bool size_ready ();
172
+ bool message_ready ();
173
+
174
+ struct i_inout *source;
175
+ ::zmq_msg_t in_progress;
176
+ unsigned char tmpbuf [10];
177
+
178
+ encoder_t (const encoder_t&);
179
+ const encoder_t &operator = (const encoder_t&);
180
+ };
181
+ }
182
+
183
+ #endif
184
+
@@ -0,0 +1,177 @@
1
+ /*
2
+ Copyright (c) 2007-2011 iMatix Corporation
3
+ Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
4
+
5
+ This file is part of 0MQ.
6
+
7
+ 0MQ is free software; you can redistribute it and/or modify it under
8
+ the terms of the GNU Lesser General Public License as published by
9
+ the Free Software Foundation; either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ 0MQ is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU Lesser General Public License for more details.
16
+
17
+ You should have received a copy of the GNU Lesser General Public License
18
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+ */
20
+
21
+ #include "platform.hpp"
22
+
23
+ #ifdef ZMQ_HAVE_LINUX
24
+
25
+ #include <sys/epoll.h>
26
+ #include <stdlib.h>
27
+ #include <string.h>
28
+ #include <unistd.h>
29
+ #include <algorithm>
30
+ #include <new>
31
+
32
+ #include "epoll.hpp"
33
+ #include "err.hpp"
34
+ #include "config.hpp"
35
+ #include "i_poll_events.hpp"
36
+
37
+ zmq::epoll_t::epoll_t () :
38
+ stopping (false)
39
+ {
40
+ epoll_fd = epoll_create (1);
41
+ errno_assert (epoll_fd != -1);
42
+ }
43
+
44
+ zmq::epoll_t::~epoll_t ()
45
+ {
46
+ // Wait till the worker thread exits.
47
+ worker.stop ();
48
+
49
+ close (epoll_fd);
50
+ for (retired_t::iterator it = retired.begin (); it != retired.end (); ++it)
51
+ delete *it;
52
+ }
53
+
54
+ zmq::epoll_t::handle_t zmq::epoll_t::add_fd (fd_t fd_, i_poll_events *events_)
55
+ {
56
+ poll_entry_t *pe = new (std::nothrow) poll_entry_t;
57
+ alloc_assert (pe);
58
+
59
+ // The memset is not actually needed. It's here to prevent debugging
60
+ // tools to complain about using uninitialised memory.
61
+ memset (pe, 0, sizeof (poll_entry_t));
62
+
63
+ pe->fd = fd_;
64
+ pe->ev.events = 0;
65
+ pe->ev.data.ptr = pe;
66
+ pe->events = events_;
67
+
68
+ int rc = epoll_ctl (epoll_fd, EPOLL_CTL_ADD, fd_, &pe->ev);
69
+ errno_assert (rc != -1);
70
+
71
+ // Increase the load metric of the thread.
72
+ adjust_load (1);
73
+
74
+ return pe;
75
+ }
76
+
77
+ void zmq::epoll_t::rm_fd (handle_t handle_)
78
+ {
79
+ poll_entry_t *pe = (poll_entry_t*) handle_;
80
+ int rc = epoll_ctl (epoll_fd, EPOLL_CTL_DEL, pe->fd, &pe->ev);
81
+ errno_assert (rc != -1);
82
+ pe->fd = retired_fd;
83
+ retired.push_back (pe);
84
+
85
+ // Decrease the load metric of the thread.
86
+ adjust_load (-1);
87
+ }
88
+
89
+ void zmq::epoll_t::set_pollin (handle_t handle_)
90
+ {
91
+ poll_entry_t *pe = (poll_entry_t*) handle_;
92
+ pe->ev.events |= EPOLLIN;
93
+ int rc = epoll_ctl (epoll_fd, EPOLL_CTL_MOD, pe->fd, &pe->ev);
94
+ errno_assert (rc != -1);
95
+ }
96
+
97
+ void zmq::epoll_t::reset_pollin (handle_t handle_)
98
+ {
99
+ poll_entry_t *pe = (poll_entry_t*) handle_;
100
+ pe->ev.events &= ~((short) EPOLLIN);
101
+ int rc = epoll_ctl (epoll_fd, EPOLL_CTL_MOD, pe->fd, &pe->ev);
102
+ errno_assert (rc != -1);
103
+ }
104
+
105
+ void zmq::epoll_t::set_pollout (handle_t handle_)
106
+ {
107
+ poll_entry_t *pe = (poll_entry_t*) handle_;
108
+ pe->ev.events |= EPOLLOUT;
109
+ int rc = epoll_ctl (epoll_fd, EPOLL_CTL_MOD, pe->fd, &pe->ev);
110
+ errno_assert (rc != -1);
111
+ }
112
+
113
+ void zmq::epoll_t::reset_pollout (handle_t handle_)
114
+ {
115
+ poll_entry_t *pe = (poll_entry_t*) handle_;
116
+ pe->ev.events &= ~((short) EPOLLOUT);
117
+ int rc = epoll_ctl (epoll_fd, EPOLL_CTL_MOD, pe->fd, &pe->ev);
118
+ errno_assert (rc != -1);
119
+ }
120
+
121
+ void zmq::epoll_t::start ()
122
+ {
123
+ worker.start (worker_routine, this);
124
+ }
125
+
126
+ void zmq::epoll_t::stop ()
127
+ {
128
+ stopping = true;
129
+ }
130
+
131
+ void zmq::epoll_t::loop ()
132
+ {
133
+ epoll_event ev_buf [max_io_events];
134
+
135
+ while (!stopping) {
136
+
137
+ // Execute any due timers.
138
+ int timeout = (int) execute_timers ();
139
+
140
+ // Wait for events.
141
+ int n = epoll_wait (epoll_fd, &ev_buf [0], max_io_events,
142
+ timeout ? timeout : -1);
143
+ if (n == -1 && errno == EINTR)
144
+ continue;
145
+ errno_assert (n != -1);
146
+
147
+ for (int i = 0; i < n; i ++) {
148
+ poll_entry_t *pe = ((poll_entry_t*) ev_buf [i].data.ptr);
149
+
150
+ if (pe->fd == retired_fd)
151
+ continue;
152
+ if (ev_buf [i].events & (EPOLLERR | EPOLLHUP))
153
+ pe->events->in_event ();
154
+ if (pe->fd == retired_fd)
155
+ continue;
156
+ if (ev_buf [i].events & EPOLLOUT)
157
+ pe->events->out_event ();
158
+ if (pe->fd == retired_fd)
159
+ continue;
160
+ if (ev_buf [i].events & EPOLLIN)
161
+ pe->events->in_event ();
162
+ }
163
+
164
+ // Destroy retired event sources.
165
+ for (retired_t::iterator it = retired.begin (); it != retired.end ();
166
+ ++it)
167
+ delete *it;
168
+ retired.clear ();
169
+ }
170
+ }
171
+
172
+ void zmq::epoll_t::worker_routine (void *arg_)
173
+ {
174
+ ((epoll_t*) arg_)->loop ();
175
+ }
176
+
177
+ #endif