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