libzmq 0.0.1 → 0.2.0

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/libzmq/Makefile +2 -2
  2. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/AUTHORS +3 -0
  3. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/COPYING +0 -0
  4. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/COPYING.LESSER +0 -0
  5. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/ChangeLog +663 -0
  6. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/INSTALL +0 -0
  7. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/MAINTAINERS +7 -7
  8. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/Makefile.am +0 -0
  9. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/Makefile.in +0 -0
  10. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/NEWS +68 -21
  11. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/README +0 -0
  12. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/acinclude.m4 +0 -0
  13. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/aclocal.m4 +2 -2
  14. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/autogen.sh +4 -4
  15. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/Makefile.am +3 -1
  16. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/Makefile.in +3 -1
  17. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/c_local_lat/c_local_lat.vcproj +0 -0
  18. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/c_local_thr/c_local_thr.vcproj +0 -0
  19. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/c_remote_lat/c_remote_lat.vcproj +0 -0
  20. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/c_remote_thr/c_remote_thr.vcproj +0 -0
  21. data/libzmq/zeromq-2.1.9/builds/msvc/inproc_lat/inproc_lat.vcproj +174 -0
  22. data/libzmq/zeromq-2.1.9/builds/msvc/inproc_thr/inproc_thr.vcproj +174 -0
  23. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/libzmq/libzmq.vcproj +4 -0
  24. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/msvc.sln +0 -0
  25. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/msvc/platform.hpp +0 -0
  26. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/builds/redhat/zeromq.spec.in +0 -0
  27. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/compile +0 -0
  28. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/config.guess +0 -0
  29. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/config.sub +0 -0
  30. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/depcomp +0 -0
  31. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/install-sh +0 -0
  32. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/libtool.m4 +0 -0
  33. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/ltmain.sh +2 -2
  34. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/ltoptions.m4 +0 -0
  35. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/ltsugar.m4 +0 -0
  36. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/ltversion.m4 +0 -0
  37. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/lt~obsolete.m4 +0 -0
  38. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/config/missing +0 -0
  39. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/configure +18 -10
  40. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/configure.in +6 -0
  41. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/Makefile.am +0 -0
  42. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/Makefile.in +0 -0
  43. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/asciidoc.conf +0 -0
  44. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq.7 +3 -3
  45. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq.html +86 -72
  46. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq.txt +0 -0
  47. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_bind.3 +8 -3
  48. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_bind.html +67 -65
  49. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_bind.txt +2 -0
  50. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_close.3 +3 -3
  51. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_close.html +57 -65
  52. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_close.txt +0 -0
  53. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_connect.3 +8 -3
  54. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_connect.html +67 -65
  55. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_connect.txt +2 -0
  56. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_cpp.7 +3 -3
  57. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_cpp.html +127 -109
  58. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_cpp.txt +0 -0
  59. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_device.3 +3 -3
  60. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_device.html +67 -65
  61. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_device.txt +0 -0
  62. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_epgm.7 +5 -5
  63. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_epgm.html +67 -69
  64. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_epgm.txt +2 -2
  65. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_errno.3 +3 -3
  66. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_errno.html +57 -65
  67. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_errno.txt +0 -0
  68. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_getsockopt.3 +4 -4
  69. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_getsockopt.html +114 -84
  70. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_getsockopt.txt +1 -1
  71. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_init.3 +3 -3
  72. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_init.html +57 -65
  73. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_init.txt +0 -0
  74. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_inproc.7 +3 -3
  75. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_inproc.html +63 -67
  76. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_inproc.txt +0 -0
  77. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_ipc.7 +3 -3
  78. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_ipc.html +63 -67
  79. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_ipc.txt +0 -0
  80. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_close.3 +3 -3
  81. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_close.html +56 -64
  82. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_close.txt +0 -0
  83. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_copy.3 +3 -3
  84. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_copy.html +56 -64
  85. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_copy.txt +0 -0
  86. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_data.3 +3 -3
  87. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_data.html +57 -65
  88. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_data.txt +0 -0
  89. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init.3 +3 -3
  90. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init.html +59 -65
  91. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init.txt +0 -0
  92. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init_data.3 +3 -3
  93. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init_data.html +59 -65
  94. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init_data.txt +0 -0
  95. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init_size.3 +3 -3
  96. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init_size.html +57 -65
  97. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_init_size.txt +0 -0
  98. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_move.3 +3 -3
  99. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_move.html +56 -64
  100. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_move.txt +0 -0
  101. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_size.3 +4 -4
  102. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_size.html +58 -66
  103. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_msg_size.txt +1 -1
  104. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_pgm.7 +5 -5
  105. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_pgm.html +67 -69
  106. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_pgm.txt +2 -2
  107. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_poll.3 +3 -3
  108. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_poll.html +59 -65
  109. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_poll.txt +0 -0
  110. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_recv.3 +3 -3
  111. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_recv.html +62 -66
  112. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_recv.txt +0 -0
  113. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_send.3 +3 -3
  114. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_send.html +62 -66
  115. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_send.txt +0 -0
  116. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_setsockopt.3 +4 -4
  117. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_setsockopt.html +108 -82
  118. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_setsockopt.txt +1 -1
  119. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_socket.3 +5 -5
  120. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_socket.html +89 -71
  121. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_socket.txt +2 -2
  122. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_strerror.3 +3 -3
  123. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_strerror.html +59 -65
  124. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_strerror.txt +0 -0
  125. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_tcp.7 +4 -4
  126. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_tcp.html +64 -68
  127. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_tcp.txt +1 -1
  128. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_term.3 +3 -3
  129. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_term.html +57 -65
  130. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_term.txt +0 -0
  131. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_version.3 +3 -3
  132. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_version.html +59 -65
  133. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/doc/zmq_version.txt +0 -0
  134. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/foreign/openpgm/Makefile.am +0 -0
  135. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/foreign/openpgm/Makefile.in +0 -0
  136. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/foreign/openpgm/libpgm-5.1.115~dfsg.tar.gz +0 -0
  137. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/foreign/xmlParser/xmlParser.cpp +0 -0
  138. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/foreign/xmlParser/xmlParser.hpp +0 -0
  139. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/include/zmq.h +2 -2
  140. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/include/zmq.hpp +0 -0
  141. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/include/zmq_utils.h +0 -0
  142. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/Makefile.am +0 -0
  143. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/Makefile.in +0 -0
  144. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/inproc_lat.cpp +0 -0
  145. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/inproc_thr.cpp +0 -0
  146. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/local_lat.cpp +0 -0
  147. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/local_thr.cpp +1 -1
  148. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/remote_lat.cpp +0 -0
  149. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/perf/remote_thr.cpp +0 -0
  150. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/Makefile.am +2 -0
  151. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/Makefile.in +20 -8
  152. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/array.hpp +0 -0
  153. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/atomic_counter.hpp +0 -0
  154. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/atomic_ptr.hpp +0 -0
  155. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/blob.hpp +0 -0
  156. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/clock.cpp +0 -0
  157. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/clock.hpp +0 -0
  158. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/command.cpp +0 -0
  159. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/command.hpp +0 -0
  160. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/config.hpp +7 -0
  161. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/connect_session.cpp +0 -0
  162. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/connect_session.hpp +0 -0
  163. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/ctx.cpp +8 -6
  164. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/ctx.hpp +0 -0
  165. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/decoder.cpp +0 -0
  166. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/decoder.hpp +0 -0
  167. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/device.cpp +0 -0
  168. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/device.hpp +0 -0
  169. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/devpoll.cpp +0 -0
  170. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/devpoll.hpp +0 -0
  171. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/dist.cpp +0 -0
  172. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/dist.hpp +0 -0
  173. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/encoder.cpp +0 -0
  174. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/encoder.hpp +0 -0
  175. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/epoll.cpp +0 -0
  176. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/epoll.hpp +0 -0
  177. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/err.cpp +0 -0
  178. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/err.hpp +0 -0
  179. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/fd.hpp +0 -0
  180. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/fq.cpp +0 -0
  181. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/fq.hpp +0 -0
  182. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/i_engine.hpp +0 -0
  183. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/i_inout.hpp +0 -0
  184. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/i_poll_events.hpp +0 -0
  185. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/io_object.cpp +0 -0
  186. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/io_object.hpp +0 -0
  187. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/io_thread.cpp +1 -1
  188. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/io_thread.hpp +0 -0
  189. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/ip.cpp +10 -10
  190. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/ip.hpp +0 -0
  191. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/kqueue.cpp +0 -0
  192. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/kqueue.hpp +0 -0
  193. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/lb.cpp +0 -0
  194. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/lb.hpp +0 -0
  195. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/libzmq.pc.in +0 -0
  196. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/likely.hpp +0 -0
  197. data/libzmq/zeromq-2.1.9/src/mailbox.cpp +82 -0
  198. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/mailbox.hpp +19 -7
  199. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/msg_content.hpp +0 -0
  200. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/mutex.hpp +0 -0
  201. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/named_session.cpp +0 -0
  202. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/named_session.hpp +0 -0
  203. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/object.cpp +0 -0
  204. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/object.hpp +0 -0
  205. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/options.cpp +0 -0
  206. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/options.hpp +0 -0
  207. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/own.cpp +0 -0
  208. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/own.hpp +0 -0
  209. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pair.cpp +0 -0
  210. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pair.hpp +0 -0
  211. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pgm_receiver.cpp +2 -2
  212. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pgm_receiver.hpp +0 -0
  213. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pgm_sender.cpp +4 -4
  214. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pgm_sender.hpp +0 -0
  215. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pgm_socket.cpp +4 -4
  216. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pgm_socket.hpp +4 -3
  217. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pipe.cpp +0 -0
  218. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pipe.hpp +0 -0
  219. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/platform.hpp.in +3 -0
  220. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/poll.cpp +0 -0
  221. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/poll.hpp +0 -0
  222. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/poller.hpp +0 -0
  223. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/poller_base.cpp +0 -0
  224. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/poller_base.hpp +0 -0
  225. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pub.cpp +0 -0
  226. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pub.hpp +0 -0
  227. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pull.cpp +0 -0
  228. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/pull.hpp +0 -0
  229. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/push.cpp +0 -0
  230. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/push.hpp +0 -0
  231. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/reaper.cpp +1 -1
  232. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/reaper.hpp +0 -0
  233. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/rep.cpp +1 -1
  234. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/rep.hpp +0 -0
  235. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/req.cpp +0 -0
  236. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/req.hpp +0 -0
  237. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/select.cpp +5 -4
  238. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/select.hpp +0 -0
  239. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/semaphore.hpp +0 -0
  240. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/session.cpp +0 -0
  241. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/session.hpp +0 -0
  242. data/libzmq/{zeromq-2.1.7/src/mailbox.cpp → zeromq-2.1.9/src/signaler.cpp} +135 -173
  243. data/libzmq/zeromq-2.1.9/src/signaler.hpp +63 -0
  244. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/socket_base.cpp +58 -21
  245. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/socket_base.hpp +3 -3
  246. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/stdint.hpp +0 -0
  247. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/sub.cpp +0 -0
  248. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/sub.hpp +0 -0
  249. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/swap.cpp +3 -5
  250. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/swap.hpp +0 -0
  251. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/tcp_connecter.cpp +2 -1
  252. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/tcp_connecter.hpp +0 -0
  253. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/tcp_listener.cpp +0 -0
  254. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/tcp_listener.hpp +0 -0
  255. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/tcp_socket.cpp +5 -0
  256. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/tcp_socket.hpp +0 -0
  257. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/thread.cpp +9 -7
  258. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/thread.hpp +0 -0
  259. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/transient_session.cpp +0 -0
  260. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/transient_session.hpp +0 -0
  261. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/trie.cpp +0 -0
  262. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/trie.hpp +0 -0
  263. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/uuid.cpp +0 -0
  264. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/uuid.hpp +0 -0
  265. data/libzmq/zeromq-2.1.9/src/windows.hpp +177 -0
  266. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/wire.hpp +0 -0
  267. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xpub.cpp +0 -0
  268. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xpub.hpp +0 -0
  269. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xrep.cpp +0 -4
  270. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xrep.hpp +0 -0
  271. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xreq.cpp +0 -0
  272. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xreq.hpp +0 -0
  273. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xsub.cpp +0 -0
  274. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/xsub.hpp +0 -0
  275. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/ypipe.hpp +0 -0
  276. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/yqueue.hpp +0 -0
  277. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq.cpp +17 -7
  278. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_connecter.cpp +0 -0
  279. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_connecter.hpp +0 -0
  280. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_engine.cpp +0 -0
  281. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_engine.hpp +0 -0
  282. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_init.cpp +0 -0
  283. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_init.hpp +0 -0
  284. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_listener.cpp +0 -0
  285. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/src/zmq_listener.hpp +0 -0
  286. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/Makefile.am +0 -0
  287. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/Makefile.in +0 -0
  288. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_hwm.cpp +0 -0
  289. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_pair_inproc.cpp +0 -0
  290. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_pair_ipc.cpp +0 -0
  291. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_pair_tcp.cpp +0 -0
  292. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_reqrep_inproc.cpp +0 -0
  293. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_reqrep_ipc.cpp +0 -0
  294. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_reqrep_tcp.cpp +0 -0
  295. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/test_shutdown_stress.cpp +1 -1
  296. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/tests/testutil.hpp +0 -0
  297. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/version.sh +0 -0
  298. data/libzmq/{zeromq-2.1.7 → zeromq-2.1.9}/zeromq.spec +1 -1
  299. metadata +299 -295
  300. data/libzmq/zeromq-2.1.7/src/windows.hpp +0 -79
@@ -60,8 +60,8 @@ int zmq::pgm_receiver_t::init (bool udp_encapsulation_, const char *network_)
60
60
  void zmq::pgm_receiver_t::plug (io_thread_t *io_thread_, i_inout *inout_)
61
61
  {
62
62
  // Retrieve PGM fds and start polling.
63
- int socket_fd;
64
- int waiting_pipe_fd;
63
+ fd_t socket_fd = retired_fd;
64
+ fd_t waiting_pipe_fd = retired_fd;
65
65
  pgm_socket.get_receiver_fds (&socket_fd, &waiting_pipe_fd);
66
66
  socket_handle = add_fd (socket_fd);
67
67
  pipe_handle = add_fd (waiting_pipe_fd);
@@ -64,10 +64,10 @@ int zmq::pgm_sender_t::init (bool udp_encapsulation_, const char *network_)
64
64
  void zmq::pgm_sender_t::plug (io_thread_t *io_thread_, i_inout *inout_)
65
65
  {
66
66
  // Alocate 2 fds for PGM socket.
67
- int downlink_socket_fd = 0;
68
- int uplink_socket_fd = 0;
69
- int rdata_notify_fd = 0;
70
- int pending_notify_fd = 0;
67
+ fd_t downlink_socket_fd = retired_fd;
68
+ fd_t uplink_socket_fd = retired_fd;
69
+ fd_t rdata_notify_fd = retired_fd;
70
+ fd_t pending_notify_fd = retired_fd;
71
71
 
72
72
  encoder.set_inout (inout_);
73
73
 
@@ -394,8 +394,8 @@ zmq::pgm_socket_t::~pgm_socket_t ()
394
394
 
395
395
  // Get receiver fds. receive_fd_ is signaled for incoming packets,
396
396
  // waiting_pipe_fd_ is signaled for state driven events and data.
397
- void zmq::pgm_socket_t::get_receiver_fds (int *receive_fd_,
398
- int *waiting_pipe_fd_)
397
+ void zmq::pgm_socket_t::get_receiver_fds (fd_t *receive_fd_,
398
+ fd_t *waiting_pipe_fd_)
399
399
  {
400
400
  socklen_t socklen;
401
401
  bool rc;
@@ -421,8 +421,8 @@ void zmq::pgm_socket_t::get_receiver_fds (int *receive_fd_,
421
421
  // receive_fd_ is for incoming back-channel protocol packets.
422
422
  // rdata_notify_fd_ is raised for waiting repair transmissions.
423
423
  // pending_notify_fd_ is for state driven events.
424
- void zmq::pgm_socket_t::get_sender_fds (int *send_fd_, int *receive_fd_,
425
- int *rdata_notify_fd_, int *pending_notify_fd_)
424
+ void zmq::pgm_socket_t::get_sender_fds (fd_t *send_fd_, fd_t *receive_fd_,
425
+ fd_t *rdata_notify_fd_, fd_t *pending_notify_fd_)
426
426
  {
427
427
  socklen_t socklen;
428
428
  bool rc;
@@ -36,6 +36,7 @@
36
36
  #include <pgm/in.h>
37
37
  #endif
38
38
 
39
+ #include "fd.hpp"
39
40
  #include "options.hpp"
40
41
 
41
42
  namespace zmq
@@ -56,12 +57,12 @@ namespace zmq
56
57
  int init (bool udp_encapsulation_, const char *network_);
57
58
 
58
59
  // Get receiver fds and store them into user allocated memory.
59
- void get_receiver_fds (int *receive_fd_, int *waiting_pipe_fd_);
60
+ void get_receiver_fds (fd_t *receive_fd_, fd_t *waiting_pipe_fd_);
60
61
 
61
62
  // Get sender and receiver fds and store it to user allocated
62
63
  // memory. Receive fd is used to process NAKs from peers.
63
- void get_sender_fds (int *send_fd_, int *receive_fd_,
64
- int *rdata_notify_fd_, int *pending_notify_fd_);
64
+ void get_sender_fds (fd_t *send_fd_, fd_t *receive_fd_,
65
+ fd_t *rdata_notify_fd_, fd_t *pending_notify_fd_);
65
66
 
66
67
  // Send data as one APDU, transmit window owned memory.
67
68
  size_t send (unsigned char *data_, size_t data_len_);
@@ -160,6 +160,9 @@
160
160
  /* Have AIX OS */
161
161
  #undef ZMQ_HAVE_AIX
162
162
 
163
+ /* Have Android OS */
164
+ #undef ZMQ_HAVE_ANDROID
165
+
163
166
  /* Have Cygwin */
164
167
  #undef ZMQ_HAVE_CYGWIN
165
168
 
@@ -61,7 +61,7 @@ void zmq::reaper_t::in_event ()
61
61
 
62
62
  // Get the next command. If there is none, exit.
63
63
  command_t cmd;
64
- int rc = mailbox.recv (&cmd, false);
64
+ int rc = mailbox.recv (&cmd, 0);
65
65
  if (rc != 0 && errno == EINTR)
66
66
  continue;
67
67
  if (rc != 0 && errno == EAGAIN)
@@ -85,7 +85,7 @@ int zmq::rep_t::xrecv (zmq_msg_t *msg_, int flags_)
85
85
 
86
86
  // Push it to the reply pipe.
87
87
  rc = xrep_t::xsend (msg_, flags_);
88
- zmq_assert (rc == 0);
88
+ errno_assert (rc == 0);
89
89
  }
90
90
  else {
91
91
  // If the traceback stack is malformed, discard anything
@@ -19,20 +19,21 @@
19
19
  */
20
20
 
21
21
  #include "platform.hpp"
22
+ #if defined ZMQ_HAVE_WINDOWS
23
+ #include "windows.hpp"
24
+ #endif
22
25
 
23
26
  #include <string.h>
24
27
  #include <algorithm>
25
28
 
26
- #ifdef ZMQ_HAVE_WINDOWS
27
- #include "winsock2.h"
28
- #elif defined ZMQ_HAVE_HPUX
29
+ #if defined ZMQ_HAVE_HPUX
29
30
  #include <sys/param.h>
30
31
  #include <sys/types.h>
31
32
  #include <sys/time.h>
32
33
  #elif defined ZMQ_HAVE_OPENVMS
33
34
  #include <sys/types.h>
34
35
  #include <sys/time.h>
35
- #else
36
+ #elif !defined ZMQ_HAVE_WINDOWS
36
37
  #include <sys/select.h>
37
38
  #endif
38
39
 
@@ -18,8 +18,45 @@
18
18
  along with this program. If not, see <http://www.gnu.org/licenses/>.
19
19
  */
20
20
 
21
- #include "mailbox.hpp"
22
21
  #include "platform.hpp"
22
+
23
+ #if defined ZMQ_FORCE_SELECT
24
+ #define ZMQ_SIGNALER_WAIT_BASED_ON_SELECT
25
+ #elif defined ZMQ_FORCE_POLL
26
+ #define ZMQ_SIGNALER_WAIT_BASED_ON_POLL
27
+ #elif defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD ||\
28
+ defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_SOLARIS ||\
29
+ defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_QNXNTO ||\
30
+ defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX ||\
31
+ defined ZMQ_HAVE_NETBSD
32
+ #define ZMQ_SIGNALER_WAIT_BASED_ON_POLL
33
+ #elif defined ZMQ_HAVE_WINDOWS || defined ZMQ_HAVE_OPENVMS
34
+ #define ZMQ_SIGNALER_WAIT_BASED_ON_SELECT
35
+ #endif
36
+
37
+ // On AIX, poll.h has to be included before zmq.h to get consistent
38
+ // definition of pollfd structure (AIX uses 'reqevents' and 'retnevents'
39
+ // instead of 'events' and 'revents' and defines macros to map from POSIX-y
40
+ // names to AIX-specific names).
41
+ #if defined ZMQ_SIGNALER_WAIT_BASED_ON_POLL
42
+ #include <poll.h>
43
+ #elif defined ZMQ_SIGNALER_WAIT_BASED_ON_SELECT
44
+ #if defined ZMQ_HAVE_WINDOWS
45
+ #include "windows.hpp"
46
+ #elif defined ZMQ_HAVE_HPUX
47
+ #include <sys/param.h>
48
+ #include <sys/types.h>
49
+ #include <sys/time.h>
50
+ #elif defined ZMQ_HAVE_OPENVMS
51
+ #include <sys/types.h>
52
+ #include <sys/time.h>
53
+ #else
54
+ #include <sys/select.h>
55
+ #endif
56
+ #endif
57
+
58
+ #include "signaler.hpp"
59
+ #include "likely.hpp"
23
60
  #include "err.hpp"
24
61
  #include "fd.hpp"
25
62
  #include "ip.hpp"
@@ -36,111 +73,24 @@
36
73
  #include <sys/socket.h>
37
74
  #endif
38
75
 
39
- zmq::fd_t zmq::mailbox_t::get_fd ()
76
+ zmq::signaler_t::signaler_t ()
40
77
  {
41
- return r;
42
- }
43
-
44
- #if defined ZMQ_HAVE_WINDOWS
45
-
46
- zmq::mailbox_t::mailbox_t ()
47
- {
48
- // Create the socketpair for signalling.
49
- int rc = make_socketpair (&r, &w);
78
+ // Create the socketpair for signaling.
79
+ int rc = make_fdpair (&r, &w);
50
80
  errno_assert (rc == 0);
51
81
 
52
- // Set the writer to non-blocking mode.
82
+ // Set both fds to non-blocking mode.
83
+ #if defined ZMQ_HAVE_WINDOWS
53
84
  unsigned long argp = 1;
54
85
  rc = ioctlsocket (w, FIONBIO, &argp);
55
86
  wsa_assert (rc != SOCKET_ERROR);
56
-
57
- // Set the reader to non-blocking mode.
58
- argp = 1;
59
87
  rc = ioctlsocket (r, FIONBIO, &argp);
60
88
  wsa_assert (rc != SOCKET_ERROR);
61
- }
62
-
63
- zmq::mailbox_t::~mailbox_t ()
64
- {
65
- int rc = closesocket (w);
66
- wsa_assert (rc != SOCKET_ERROR);
67
-
68
- rc = closesocket (r);
69
- wsa_assert (rc != SOCKET_ERROR);
70
- }
71
-
72
- void zmq::mailbox_t::send (const command_t &cmd_)
73
- {
74
- // TODO: Implement SNDBUF auto-resizing as for POSIX platforms.
75
- // In the mean time, the following code with assert if the send()
76
- // call would block.
77
- int nbytes = ::send (w, (char *)&cmd_, sizeof (command_t), 0);
78
- wsa_assert (nbytes != SOCKET_ERROR);
79
- zmq_assert (nbytes == sizeof (command_t));
80
- }
81
-
82
- int zmq::mailbox_t::recv (command_t *cmd_, bool block_)
83
- {
84
- // If required, set the reader to blocking mode.
85
- if (block_) {
86
- unsigned long argp = 0;
87
- int rc = ioctlsocket (r, FIONBIO, &argp);
88
- wsa_assert (rc != SOCKET_ERROR);
89
- }
90
-
91
- // Attempt to read an entire command. Returns EAGAIN if non-blocking
92
- // and a command is not available. Save value of errno if we wish to pass
93
- // it to caller.
94
- int err = 0;
95
- int nbytes = ::recv (r, (char *)cmd_, sizeof (command_t), 0);
96
- if (nbytes == -1 && WSAGetLastError () == WSAEWOULDBLOCK)
97
- err = EAGAIN;
98
-
99
- // Re-set the reader to non-blocking mode.
100
- if (block_) {
101
- unsigned long argp = 1;
102
- int rc = ioctlsocket (r, FIONBIO, &argp);
103
- wsa_assert (rc != SOCKET_ERROR);
104
- }
105
-
106
- // If the recv failed, return with the saved errno.
107
- if (err != 0) {
108
- errno = err;
109
- return -1;
110
- }
111
-
112
- // Sanity check for success.
113
- wsa_assert (nbytes != SOCKET_ERROR);
114
-
115
- // Check whether we haven't got half of command.
116
- zmq_assert (nbytes == sizeof (command_t));
117
-
118
- return 0;
119
- }
120
-
121
89
  #else
122
-
123
- zmq::mailbox_t::mailbox_t ()
124
- {
125
- #ifdef PIPE_BUF
126
- // Make sure that command can be written to the socket in atomic fashion.
127
- // If this wasn't guaranteed, commands from different threads would be
128
- // interleaved.
129
- zmq_assert (sizeof (command_t) <= PIPE_BUF);
130
- #endif
131
-
132
- // Create the socketpair for signaling.
133
- int rc = make_socketpair (&r, &w);
134
- errno_assert (rc == 0);
135
-
136
- // Set the writer to non-blocking mode.
137
90
  int flags = fcntl (w, F_GETFL, 0);
138
91
  errno_assert (flags >= 0);
139
92
  rc = fcntl (w, F_SETFL, flags | O_NONBLOCK);
140
93
  errno_assert (rc == 0);
141
-
142
- #ifndef MSG_DONTWAIT
143
- // Set the reader to non-blocking mode.
144
94
  flags = fcntl (r, F_GETFL, 0);
145
95
  errno_assert (flags >= 0);
146
96
  rc = fcntl (r, F_SETFL, flags | O_NONBLOCK);
@@ -148,108 +98,113 @@ zmq::mailbox_t::mailbox_t ()
148
98
  #endif
149
99
  }
150
100
 
151
- zmq::mailbox_t::~mailbox_t ()
101
+ zmq::signaler_t::~signaler_t ()
152
102
  {
103
+ #if defined ZMQ_HAVE_WINDOWS
104
+ int rc = closesocket (w);
105
+ wsa_assert (rc != SOCKET_ERROR);
106
+ rc = closesocket (r);
107
+ wsa_assert (rc != SOCKET_ERROR);
108
+ #else
153
109
  close (w);
154
110
  close (r);
111
+ #endif
155
112
  }
156
113
 
157
- void zmq::mailbox_t::send (const command_t &cmd_)
114
+ zmq::fd_t zmq::signaler_t::get_fd ()
158
115
  {
159
- // Attempt to write an entire command without blocking.
160
- ssize_t nbytes;
161
- do {
162
- nbytes = ::send (w, &cmd_, sizeof (command_t), 0);
163
- } while (nbytes == -1 && errno == EINTR);
164
-
165
- // Attempt to increase mailbox SNDBUF if the send failed.
166
- if (nbytes == -1 && errno == EAGAIN) {
167
- int old_sndbuf, new_sndbuf;
168
- socklen_t sndbuf_size = sizeof old_sndbuf;
169
-
170
- // Retrieve current send buffer size.
171
- int rc = getsockopt (w, SOL_SOCKET, SO_SNDBUF, &old_sndbuf,
172
- &sndbuf_size);
173
- errno_assert (rc == 0);
174
- new_sndbuf = old_sndbuf * 2;
175
-
176
- // Double the new send buffer size.
177
- rc = setsockopt (w, SOL_SOCKET, SO_SNDBUF, &new_sndbuf, sndbuf_size);
178
- errno_assert (rc == 0);
179
-
180
- // Verify that the OS actually honored the request.
181
- rc = getsockopt (w, SOL_SOCKET, SO_SNDBUF, &new_sndbuf, &sndbuf_size);
182
- errno_assert (rc == 0);
183
- zmq_assert (new_sndbuf > old_sndbuf);
184
-
185
- // Retry the sending operation; at this point it must succeed.
186
- do {
187
- nbytes = ::send (w, &cmd_, sizeof (command_t), 0);
188
- } while (nbytes == -1 && errno == EINTR);
189
- }
190
- errno_assert (nbytes != -1);
191
-
192
- // This should never happen as we've already checked that command size is
193
- // less than PIPE_BUF.
194
- zmq_assert (nbytes == sizeof (command_t));
116
+ return r;
195
117
  }
196
118
 
197
- int zmq::mailbox_t::recv (command_t *cmd_, bool block_)
119
+ void zmq::signaler_t::send ()
198
120
  {
199
- #ifdef MSG_DONTWAIT
200
-
201
- // Attempt to read an entire command. Returns EAGAIN if non-blocking
202
- // mode is requested and a command is not available.
203
- ssize_t nbytes = ::recv (r, cmd_, sizeof (command_t),
204
- block_ ? 0 : MSG_DONTWAIT);
205
- if (nbytes == -1 && (errno == EAGAIN || errno == EINTR))
206
- return -1;
121
+ #if defined ZMQ_HAVE_WINDOWS
122
+ unsigned char dummy = 0;
123
+ int nbytes = ::send (w, (char*) &dummy, sizeof (dummy), 0);
124
+ wsa_assert (nbytes != SOCKET_ERROR);
125
+ zmq_assert (nbytes == sizeof (dummy));
207
126
  #else
208
-
209
- // If required, set the reader to blocking mode.
210
- if (block_) {
211
- int flags = fcntl (r, F_GETFL, 0);
212
- errno_assert (flags >= 0);
213
- int rc = fcntl (r, F_SETFL, flags & ~O_NONBLOCK);
214
- errno_assert (rc == 0);
127
+ unsigned char dummy = 0;
128
+ while (true) {
129
+ ssize_t nbytes = ::send (w, &dummy, sizeof (dummy), 0);
130
+ if (unlikely (nbytes == -1 && errno == EINTR))
131
+ continue;
132
+ zmq_assert (nbytes == sizeof (dummy));
133
+ break;
215
134
  }
135
+ #endif
136
+ }
216
137
 
217
- // Attempt to read an entire command. Returns EAGAIN if non-blocking
218
- // and a command is not available. Save value of errno if we wish to pass
219
- // it to caller.
220
- int err = 0;
221
- ssize_t nbytes = ::recv (r, cmd_, sizeof (command_t), 0);
222
- if (nbytes == -1 && (errno == EAGAIN || errno == EINTR))
223
- err = errno;
224
-
225
- // Re-set the reader to non-blocking mode.
226
- if (block_) {
227
- int flags = fcntl (r, F_GETFL, 0);
228
- errno_assert (flags >= 0);
229
- int rc = fcntl (r, F_SETFL, flags | O_NONBLOCK);
230
- errno_assert (rc == 0);
138
+ int zmq::signaler_t::wait (int timeout_)
139
+ {
140
+ #ifdef ZMQ_SIGNALER_WAIT_BASED_ON_POLL
141
+
142
+ struct pollfd pfd;
143
+ pfd.fd = r;
144
+ pfd.events = POLLIN;
145
+ int rc = poll (&pfd, 1, timeout_);
146
+ if (unlikely (rc < 0)) {
147
+ zmq_assert (errno == EINTR);
148
+ return -1;
231
149
  }
232
-
233
- // If the recv failed, return with the saved errno if set.
234
- if (err != 0) {
235
- errno = err;
150
+ else if (unlikely (rc == 0)) {
151
+ errno = EAGAIN;
236
152
  return -1;
237
153
  }
154
+ zmq_assert (rc == 1);
155
+ zmq_assert (pfd.revents & POLLIN);
156
+ return 0;
238
157
 
239
- #endif
240
-
241
- // Sanity check for success.
242
- errno_assert (nbytes != -1);
243
-
244
- // Check whether we haven't got half of command.
245
- zmq_assert (nbytes == sizeof (command_t));
158
+ #elif defined ZMQ_SIGNALER_WAIT_BASED_ON_SELECT
246
159
 
160
+ fd_set fds;
161
+ FD_ZERO (&fds);
162
+ FD_SET (r, &fds);
163
+ struct timeval timeout;
164
+ if (timeout_ >= 0) {
165
+ timeout.tv_sec = timeout_ / 1000;
166
+ timeout.tv_usec = timeout_ % 1000 * 1000;
167
+ }
168
+ #ifdef ZMQ_HAVE_WINDOWS
169
+ int rc = select (0, &fds, NULL, NULL,
170
+ timeout_ >= 0 ? &timeout : NULL);
171
+ wsa_assert (rc != SOCKET_ERROR);
172
+ #else
173
+ int rc = select (r + 1, &fds, NULL, NULL,
174
+ timeout_ >= 0 ? &timeout : NULL);
175
+ if (unlikely (rc < 0)) {
176
+ zmq_assert (errno == EINTR);
177
+ return -1;
178
+ }
179
+ #endif
180
+ if (unlikely (rc == 0)) {
181
+ errno = EAGAIN;
182
+ return -1;
183
+ }
184
+ zmq_assert (rc == 1);
247
185
  return 0;
186
+
187
+ #else
188
+ #error
189
+ #endif
248
190
  }
249
191
 
192
+ void zmq::signaler_t::recv ()
193
+ {
194
+ // Attempt to read a signal.
195
+ unsigned char dummy;
196
+ #ifdef ZMQ_HAVE_WINDOWS
197
+ int nbytes = ::recv (r, (char*) &dummy, sizeof (dummy), 0);
198
+ wsa_assert (nbytes != SOCKET_ERROR);
199
+ #else
200
+ ssize_t nbytes = ::recv (r, &dummy, sizeof (dummy), 0);
201
+ errno_assert (nbytes >= 0);
250
202
  #endif
203
+ zmq_assert (nbytes == sizeof (dummy));
204
+ zmq_assert (dummy == 0);
205
+ }
251
206
 
252
- int zmq::mailbox_t::make_socketpair (fd_t *r_, fd_t *w_)
207
+ int zmq::signaler_t::make_fdpair (fd_t *r_, fd_t *w_)
253
208
  {
254
209
  #if defined ZMQ_HAVE_WINDOWS
255
210
 
@@ -380,3 +335,10 @@ int zmq::mailbox_t::make_socketpair (fd_t *r_, fd_t *w_)
380
335
  #endif
381
336
  }
382
337
 
338
+ #if defined ZMQ_SIGNALER_WAIT_BASED_ON_SELECT
339
+ #undef ZMQ_SIGNALER_WAIT_BASED_ON_SELECT
340
+ #endif
341
+ #if defined ZMQ_SIGNALER_WAIT_BASED_ON_POLL
342
+ #undef ZMQ_SIGNALER_WAIT_BASED_ON_POLL
343
+ #endif
344
+