laag-libczmq 4.1.0.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 (697) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +57 -0
  3. data/LICENSE.txt +373 -0
  4. data/README.org +34 -0
  5. data/ext/laag/libczmq/extconf.rb +24 -0
  6. data/laag-libczmq.gemspec +21 -0
  7. data/lib/laag/libczmq.rb +30 -0
  8. data/vendor/github.com/zeromq/czmq/.editorconfig +19 -0
  9. data/vendor/github.com/zeromq/czmq/.gitattributes +5 -0
  10. data/vendor/github.com/zeromq/czmq/.github/PULL_REQUEST_TEMPLATE.md +28 -0
  11. data/vendor/github.com/zeromq/czmq/.gitignore +137 -0
  12. data/vendor/github.com/zeromq/czmq/.travis.yml +126 -0
  13. data/vendor/github.com/zeromq/czmq/AUTHORS +69 -0
  14. data/vendor/github.com/zeromq/czmq/CMakeLists.txt +653 -0
  15. data/vendor/github.com/zeromq/czmq/CONTRIBUTING.md +19 -0
  16. data/vendor/github.com/zeromq/czmq/Dockerfile +29 -0
  17. data/vendor/github.com/zeromq/czmq/Findlibsodium.cmake +47 -0
  18. data/vendor/github.com/zeromq/czmq/Findlibzmq.cmake +49 -0
  19. data/vendor/github.com/zeromq/czmq/Findlz4.cmake +49 -0
  20. data/vendor/github.com/zeromq/czmq/Findsystemd.cmake +49 -0
  21. data/vendor/github.com/zeromq/czmq/Finduuid.cmake +49 -0
  22. data/vendor/github.com/zeromq/czmq/INSTALL.cygwin +13 -0
  23. data/vendor/github.com/zeromq/czmq/ISSUES.cygwin +6 -0
  24. data/vendor/github.com/zeromq/czmq/Jenkinsfile +439 -0
  25. data/vendor/github.com/zeromq/czmq/LICENSE +373 -0
  26. data/vendor/github.com/zeromq/czmq/Makefile.am +70 -0
  27. data/vendor/github.com/zeromq/czmq/NEWS +823 -0
  28. data/vendor/github.com/zeromq/czmq/README.cygwin +23 -0
  29. data/vendor/github.com/zeromq/czmq/README.md +9345 -0
  30. data/vendor/github.com/zeromq/czmq/README.txt +512 -0
  31. data/vendor/github.com/zeromq/czmq/Vagrantfile +49 -0
  32. data/vendor/github.com/zeromq/czmq/acinclude.m4 +7 -0
  33. data/vendor/github.com/zeromq/czmq/api/zactor.api +77 -0
  34. data/vendor/github.com/zeromq/czmq/api/zargs.api +110 -0
  35. data/vendor/github.com/zeromq/czmq/api/zarmour.api +103 -0
  36. data/vendor/github.com/zeromq/czmq/api/zcert.api +128 -0
  37. data/vendor/github.com/zeromq/czmq/api/zcertstore.api +80 -0
  38. data/vendor/github.com/zeromq/czmq/api/zchunk.api +171 -0
  39. data/vendor/github.com/zeromq/czmq/api/zclock.api +43 -0
  40. data/vendor/github.com/zeromq/czmq/api/zconfig.api +205 -0
  41. data/vendor/github.com/zeromq/czmq/api/zdigest.api +45 -0
  42. data/vendor/github.com/zeromq/czmq/api/zdir.api +124 -0
  43. data/vendor/github.com/zeromq/czmq/api/zdir_patch.api +62 -0
  44. data/vendor/github.com/zeromq/czmq/api/zfile.api +157 -0
  45. data/vendor/github.com/zeromq/czmq/api/zframe.api +157 -0
  46. data/vendor/github.com/zeromq/czmq/api/zgossip_msg.api +104 -0
  47. data/vendor/github.com/zeromq/czmq/api/zhash.api +184 -0
  48. data/vendor/github.com/zeromq/czmq/api/zhashx.api +295 -0
  49. data/vendor/github.com/zeromq/czmq/api/ziflist.api +73 -0
  50. data/vendor/github.com/zeromq/czmq/api/zlist.api +158 -0
  51. data/vendor/github.com/zeromq/czmq/api/zlistx.api +220 -0
  52. data/vendor/github.com/zeromq/czmq/api/zloop.api +176 -0
  53. data/vendor/github.com/zeromq/czmq/api/zmsg.api +250 -0
  54. data/vendor/github.com/zeromq/czmq/api/zpoller.api +71 -0
  55. data/vendor/github.com/zeromq/czmq/api/zproc.api +247 -0
  56. data/vendor/github.com/zeromq/czmq/api/zsock.api +412 -0
  57. data/vendor/github.com/zeromq/czmq/api/zsock_option.api +847 -0
  58. data/vendor/github.com/zeromq/czmq/api/zstr.api +119 -0
  59. data/vendor/github.com/zeromq/czmq/api/zsys.api +490 -0
  60. data/vendor/github.com/zeromq/czmq/api/ztimerset.api +69 -0
  61. data/vendor/github.com/zeromq/czmq/api/ztrie.api +80 -0
  62. data/vendor/github.com/zeromq/czmq/api/zuuid.api +82 -0
  63. data/vendor/github.com/zeromq/czmq/appveyor.yml +73 -0
  64. data/vendor/github.com/zeromq/czmq/autogen.sh +52 -0
  65. data/vendor/github.com/zeromq/czmq/bindings/jni/.gitignore +8 -0
  66. data/vendor/github.com/zeromq/czmq/bindings/jni/CMakeLists.txt +79 -0
  67. data/vendor/github.com/zeromq/czmq/bindings/jni/Findczmq.cmake +47 -0
  68. data/vendor/github.com/zeromq/czmq/bindings/jni/README.md +130 -0
  69. data/vendor/github.com/zeromq/czmq/bindings/jni/android/CMakeLists.txt +79 -0
  70. data/vendor/github.com/zeromq/czmq/bindings/jni/android/android_toolchain.cmake +52 -0
  71. data/vendor/github.com/zeromq/czmq/bindings/jni/android/build.sh +68 -0
  72. data/vendor/github.com/zeromq/czmq/bindings/jni/build.gradle +151 -0
  73. data/vendor/github.com/zeromq/czmq/bindings/jni/ci_build.sh +96 -0
  74. data/vendor/github.com/zeromq/czmq/bindings/jni/gradle/wrapper/gradle-wrapper.jar +0 -0
  75. data/vendor/github.com/zeromq/czmq/bindings/jni/gradle/wrapper/gradle-wrapper.properties +6 -0
  76. data/vendor/github.com/zeromq/czmq/bindings/jni/gradlew +164 -0
  77. data/vendor/github.com/zeromq/czmq/bindings/jni/gradlew.bat +90 -0
  78. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/.gitignore +8 -0
  79. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/configure.bat +93 -0
  80. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/platform.h +1 -0
  81. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Common.props +21 -0
  82. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DLL.props +16 -0
  83. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Debug.props +29 -0
  84. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugDEXE.props +21 -0
  85. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugDLL.props +20 -0
  86. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugLEXE.props +20 -0
  87. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugLIB.props +21 -0
  88. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugLTCG.props +20 -0
  89. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugSEXE.props +21 -0
  90. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/EXE.props +17 -0
  91. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/LIB.props +16 -0
  92. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/LTCG.props +13 -0
  93. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Link.props +21 -0
  94. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Messages.props +15 -0
  95. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Output.props +30 -0
  96. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Release.props +41 -0
  97. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseDEXE.props +20 -0
  98. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseDLL.props +19 -0
  99. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseLEXE.props +20 -0
  100. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseLIB.props +19 -0
  101. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseLTCG.props +19 -0
  102. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseSEXE.props +20 -0
  103. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Win32.props +20 -0
  104. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/x64.props +23 -0
  105. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/resource.h +14 -0
  106. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/resource.rc +94 -0
  107. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/build.bat +48 -0
  108. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/call_javah.bat +84 -0
  109. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/czmq.sln +25 -0
  110. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/libczmqjni/libczmqjni.props +69 -0
  111. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/libczmqjni/libczmqjni.vcxproj +165 -0
  112. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  113. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/build.bat +48 -0
  114. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/call_javah.bat +84 -0
  115. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/czmq.sln +25 -0
  116. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/libczmqjni/libczmqjni.props +69 -0
  117. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/libczmqjni/libczmqjni.vcxproj +165 -0
  118. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  119. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/build.bat +48 -0
  120. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/call_javah.bat +84 -0
  121. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/czmq.sln +25 -0
  122. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/libczmqjni/libczmqjni.props +69 -0
  123. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/libczmqjni/libczmqjni.vcxproj +165 -0
  124. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  125. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/build.bat +48 -0
  126. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/call_javah.bat +84 -0
  127. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/czmq.sln +25 -0
  128. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/libczmqjni/libczmqjni.props +69 -0
  129. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/libczmqjni/libczmqjni.vcxproj +165 -0
  130. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  131. data/vendor/github.com/zeromq/czmq/bindings/jni/settings.gradle +1 -0
  132. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zarmour.c +132 -0
  133. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zcert.c +188 -0
  134. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zcertstore.c +69 -0
  135. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zchunk.c +191 -0
  136. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zclock.c +54 -0
  137. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zconfig.c +252 -0
  138. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zdigest.c +66 -0
  139. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zdir.c +116 -0
  140. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_ZdirPatch.c +88 -0
  141. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zfile.c +186 -0
  142. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zframe.c +199 -0
  143. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zhash.c +174 -0
  144. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zhashx.c +175 -0
  145. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Ziflist.c +112 -0
  146. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zlist.c +135 -0
  147. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zlistx.c +189 -0
  148. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zloop.c +95 -0
  149. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zmsg.c +261 -0
  150. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zpoller.c +74 -0
  151. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zproc.c +278 -0
  152. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zsock.c +1310 -0
  153. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zstr.c +108 -0
  154. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zsys.c +445 -0
  155. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Ztimerset.c +68 -0
  156. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Ztrie.c +86 -0
  157. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zuuid.c +125 -0
  158. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zarmour.java +148 -0
  159. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zcert.java +178 -0
  160. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zcertstore.java +94 -0
  161. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zchunk.java +204 -0
  162. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zclock.java +67 -0
  163. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zconfig.java +253 -0
  164. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zdigest.java +78 -0
  165. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zdir.java +159 -0
  166. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/ZdirPatch.java +96 -0
  167. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zfile.java +217 -0
  168. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zframe.java +212 -0
  169. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zhash.java +223 -0
  170. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zhashx.java +248 -0
  171. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Ziflist.java +124 -0
  172. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zlist.java +171 -0
  173. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zlistx.java +247 -0
  174. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zloop.java +134 -0
  175. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zmsg.java +308 -0
  176. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zpoller.java +105 -0
  177. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zproc.java +331 -0
  178. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zsock.java +1556 -0
  179. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zstr.java +117 -0
  180. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zsys.java +534 -0
  181. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Ztimerset.java +87 -0
  182. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Ztrie.java +102 -0
  183. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zuuid.java +127 -0
  184. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZarmourTest.java +25 -0
  185. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZcertTest.java +25 -0
  186. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZcertstoreTest.java +25 -0
  187. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZchunkTest.java +25 -0
  188. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZclockTest.java +25 -0
  189. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZconfigTest.java +25 -0
  190. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZdigestTest.java +25 -0
  191. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZdirPatchTest.java +25 -0
  192. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZdirTest.java +25 -0
  193. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZfileTest.java +25 -0
  194. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZframeTest.java +25 -0
  195. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZhashTest.java +25 -0
  196. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZhashxTest.java +25 -0
  197. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZiflistTest.java +25 -0
  198. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZlistTest.java +25 -0
  199. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZlistxTest.java +25 -0
  200. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZloopTest.java +25 -0
  201. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZmsgTest.java +25 -0
  202. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZpollerTest.java +25 -0
  203. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZprocTest.java +25 -0
  204. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZsockTest.java +25 -0
  205. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZstrTest.java +25 -0
  206. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZsysTest.java +25 -0
  207. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZtimersetTest.java +25 -0
  208. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZtrieTest.java +25 -0
  209. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZuuidTest.java +25 -0
  210. data/vendor/github.com/zeromq/czmq/bindings/lua_ffi/czmq_ffi.lua +4079 -0
  211. data/vendor/github.com/zeromq/czmq/bindings/nodejs/.gitignore +10 -0
  212. data/vendor/github.com/zeromq/czmq/bindings/nodejs/.prebuildrc +2 -0
  213. data/vendor/github.com/zeromq/czmq/bindings/nodejs/README.md +4373 -0
  214. data/vendor/github.com/zeromq/czmq/bindings/nodejs/binding.cc +8324 -0
  215. data/vendor/github.com/zeromq/czmq/bindings/nodejs/binding.gyp +49 -0
  216. data/vendor/github.com/zeromq/czmq/bindings/nodejs/binding.h +952 -0
  217. data/vendor/github.com/zeromq/czmq/bindings/nodejs/build.sh +79 -0
  218. data/vendor/github.com/zeromq/czmq/bindings/nodejs/index.js +39 -0
  219. data/vendor/github.com/zeromq/czmq/bindings/nodejs/package.json +26 -0
  220. data/vendor/github.com/zeromq/czmq/bindings/nodejs/test_binding.js +32 -0
  221. data/vendor/github.com/zeromq/czmq/bindings/python/ci_build.sh +59 -0
  222. data/vendor/github.com/zeromq/czmq/bindings/python/czmq/__init__.py +3 -0
  223. data/vendor/github.com/zeromq/czmq/bindings/python/czmq/_czmq_ctypes.py +8344 -0
  224. data/vendor/github.com/zeromq/czmq/bindings/python/test.py +1078 -0
  225. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/README.md +28 -0
  226. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zactor.py +78 -0
  227. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zargs.py +133 -0
  228. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zarmour.py +124 -0
  229. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zcert.py +132 -0
  230. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zcertstore.py +84 -0
  231. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zchunk.py +192 -0
  232. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zclock.py +59 -0
  233. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zconfig.py +211 -0
  234. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zdigest.py +64 -0
  235. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zdir.py +144 -0
  236. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/ZdirPatch.py +79 -0
  237. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zfile.py +185 -0
  238. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zframe.py +160 -0
  239. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zhash.py +197 -0
  240. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zhashx.py +271 -0
  241. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Ziflist.py +103 -0
  242. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zlist.py +176 -0
  243. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zlistx.py +235 -0
  244. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zloop.py +171 -0
  245. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zmsg.py +250 -0
  246. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zpoller.py +89 -0
  247. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zproc.py +287 -0
  248. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zsock.py +1283 -0
  249. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zstr.py +123 -0
  250. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zsys.py +532 -0
  251. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Ztimerset.py +78 -0
  252. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Ztrie.py +93 -0
  253. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zuuid.py +100 -0
  254. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/__init__.py +33 -0
  255. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/_cdefs.inc +4081 -0
  256. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/build.py +345 -0
  257. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/cdefs.py +4086 -0
  258. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/dlopen.py +33 -0
  259. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/utils.py +50 -0
  260. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/setup.py +23 -0
  261. data/vendor/github.com/zeromq/czmq/bindings/qml/.gitignore +1 -0
  262. data/vendor/github.com/zeromq/czmq/bindings/qml/README.md +157 -0
  263. data/vendor/github.com/zeromq/czmq/bindings/qml/Rakefile +34 -0
  264. data/vendor/github.com/zeromq/czmq/bindings/qml/qml_czmq_bindings.pro +136 -0
  265. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZactor.cpp +88 -0
  266. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZactor.h +86 -0
  267. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZargs.cpp +121 -0
  268. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZargs.h +105 -0
  269. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZarmour.cpp +135 -0
  270. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZarmour.h +108 -0
  271. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcert.cpp +166 -0
  272. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcert.h +122 -0
  273. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcertstore.cpp +95 -0
  274. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcertstore.h +93 -0
  275. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZchunk.cpp +214 -0
  276. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZchunk.h +149 -0
  277. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZclock.cpp +67 -0
  278. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZclock.h +77 -0
  279. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZconfig.cpp +255 -0
  280. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZconfig.h +165 -0
  281. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdigest.cpp +70 -0
  282. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdigest.h +78 -0
  283. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdir.cpp +158 -0
  284. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdir.h +134 -0
  285. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdirPatch.cpp +89 -0
  286. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdirPatch.h +84 -0
  287. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZfile.cpp +204 -0
  288. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZfile.h +152 -0
  289. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZframe.cpp +200 -0
  290. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZframe.h +143 -0
  291. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhash.cpp +219 -0
  292. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhash.h +174 -0
  293. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhashx.cpp +308 -0
  294. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhashx.h +225 -0
  295. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZiflist.cpp +111 -0
  296. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZiflist.h +96 -0
  297. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlist.cpp +184 -0
  298. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlist.h +148 -0
  299. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlistx.cpp +244 -0
  300. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlistx.h +184 -0
  301. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZloop.cpp +177 -0
  302. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZloop.h +149 -0
  303. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZmsg.cpp +313 -0
  304. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZmsg.h +209 -0
  305. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZpoller.cpp +95 -0
  306. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZpoller.h +97 -0
  307. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZproc.cpp +296 -0
  308. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZproc.h +211 -0
  309. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsock.cpp +1471 -0
  310. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsock.h +882 -0
  311. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZstr.cpp +137 -0
  312. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZstr.h +120 -0
  313. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsys.cpp +541 -0
  314. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsys.h +373 -0
  315. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtimerset.cpp +84 -0
  316. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtimerset.h +86 -0
  317. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtrie.cpp +101 -0
  318. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtrie.h +95 -0
  319. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZuuid.cpp +116 -0
  320. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZuuid.h +99 -0
  321. data/vendor/github.com/zeromq/czmq/bindings/qml/src/qml_czmq_plugin.h +174 -0
  322. data/vendor/github.com/zeromq/czmq/bindings/qml/src/qmldir +2 -0
  323. data/vendor/github.com/zeromq/czmq/bindings/qml/test/tst_QmlCZMQ.qml +16 -0
  324. data/vendor/github.com/zeromq/czmq/bindings/qt/README.md +87 -0
  325. data/vendor/github.com/zeromq/czmq/bindings/qt/buildlib/buildlib.pro +36 -0
  326. data/vendor/github.com/zeromq/czmq/bindings/qt/common.pri +20 -0
  327. data/vendor/github.com/zeromq/czmq/bindings/qt/config.pri +1 -0
  328. data/vendor/github.com/zeromq/czmq/bindings/qt/qczmq.pro +13 -0
  329. data/vendor/github.com/zeromq/czmq/bindings/qt/selftest/main.cpp +57 -0
  330. data/vendor/github.com/zeromq/czmq/bindings/qt/selftest/selftest.pro +19 -0
  331. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qczmq.h +96 -0
  332. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qczmq.pri +81 -0
  333. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzactor.cpp +98 -0
  334. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzactor.h +61 -0
  335. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzargs.cpp +130 -0
  336. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzargs.h +72 -0
  337. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzarmour.cpp +162 -0
  338. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzarmour.h +83 -0
  339. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcert.cpp +191 -0
  340. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcert.h +97 -0
  341. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcertstore.cpp +105 -0
  342. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcertstore.h +68 -0
  343. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzchunk.cpp +250 -0
  344. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzchunk.h +124 -0
  345. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzclock.cpp +78 -0
  346. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzclock.h +52 -0
  347. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzconfig.cpp +292 -0
  348. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzconfig.h +140 -0
  349. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdigest.cpp +80 -0
  350. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdigest.h +53 -0
  351. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdir.cpp +176 -0
  352. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdir.h +109 -0
  353. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdirpatch.cpp +101 -0
  354. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdirpatch.h +59 -0
  355. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzfile.cpp +243 -0
  356. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzfile.h +127 -0
  357. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzframe.cpp +231 -0
  358. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzframe.h +118 -0
  359. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhash.cpp +250 -0
  360. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhash.h +149 -0
  361. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhashx.cpp +350 -0
  362. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhashx.h +200 -0
  363. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qziflist.cpp +133 -0
  364. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qziflist.h +71 -0
  365. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlist.cpp +220 -0
  366. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlist.h +123 -0
  367. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlistx.cpp +296 -0
  368. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlistx.h +159 -0
  369. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzloop.cpp +211 -0
  370. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzloop.h +124 -0
  371. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzmsg.cpp +354 -0
  372. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzmsg.h +184 -0
  373. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzpoller.cpp +100 -0
  374. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzpoller.h +67 -0
  375. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzproc.cpp +365 -0
  376. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzproc.h +186 -0
  377. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsock.cpp +1719 -0
  378. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsock.h +815 -0
  379. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzstr.cpp +128 -0
  380. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzstr.h +78 -0
  381. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsys.cpp +600 -0
  382. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsys.h +321 -0
  383. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztimerset.cpp +98 -0
  384. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztimerset.h +61 -0
  385. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztrie.cpp +117 -0
  386. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztrie.h +70 -0
  387. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzuuid.cpp +135 -0
  388. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzuuid.h +74 -0
  389. data/vendor/github.com/zeromq/czmq/bindings/ruby/Rakefile +8 -0
  390. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi.rb +875 -0
  391. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/version.rb +15 -0
  392. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zactor.rb +219 -0
  393. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zargs.rb +259 -0
  394. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zarmour.rb +286 -0
  395. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zcert.rb +304 -0
  396. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zcertstore.rb +224 -0
  397. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zchunk.rb +388 -0
  398. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zclock.rb +140 -0
  399. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zconfig.rb +462 -0
  400. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zdigest.rb +156 -0
  401. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zdir.rb +283 -0
  402. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zdir_patch.rb +194 -0
  403. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zfile.rb +361 -0
  404. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zframe.rb +360 -0
  405. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zhash.rb +386 -0
  406. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zhashx.rb +617 -0
  407. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/ziflist.rb +219 -0
  408. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zlist.rb +365 -0
  409. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zlistx.rb +478 -0
  410. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zloop.rb +396 -0
  411. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zmsg.rb +515 -0
  412. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zpoller.rb +194 -0
  413. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zproc.rb +497 -0
  414. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zsock.rb +4673 -0
  415. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zstr.rb +242 -0
  416. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zsys.rb +836 -0
  417. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/ztimerset.rb +203 -0
  418. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/ztrie.rb +221 -0
  419. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zuuid.rb +227 -0
  420. data/vendor/github.com/zeromq/czmq/bindings/ruby/spec/ffi_spec.rb +15 -0
  421. data/vendor/github.com/zeromq/czmq/bindings/ruby/spec/spec_helper.rb +8 -0
  422. data/vendor/github.com/zeromq/czmq/builds/android/android_build_helper.sh +298 -0
  423. data/vendor/github.com/zeromq/czmq/builds/android/build.sh +94 -0
  424. data/vendor/github.com/zeromq/czmq/builds/android/ci_build.sh +41 -0
  425. data/vendor/github.com/zeromq/czmq/builds/check_zproject/ci_build.sh +52 -0
  426. data/vendor/github.com/zeromq/czmq/builds/check_zproto/ci_build.sh +23 -0
  427. data/vendor/github.com/zeromq/czmq/builds/cmake/ci_build.sh +93 -0
  428. data/vendor/github.com/zeromq/czmq/builds/cygwin/Makefile.cygwin +32 -0
  429. data/vendor/github.com/zeromq/czmq/builds/docs/ci_build.sh +24 -0
  430. data/vendor/github.com/zeromq/czmq/builds/gyp/.gitignore +5 -0
  431. data/vendor/github.com/zeromq/czmq/builds/gyp/README.md +33 -0
  432. data/vendor/github.com/zeromq/czmq/builds/gyp/platform.h +46 -0
  433. data/vendor/github.com/zeromq/czmq/builds/gyp/project.gyp +195 -0
  434. data/vendor/github.com/zeromq/czmq/builds/mingw32/Makefile.mingw32 +33 -0
  435. data/vendor/github.com/zeromq/czmq/builds/mingw32/platform.h +0 -0
  436. data/vendor/github.com/zeromq/czmq/builds/msvc/.gitignore +8 -0
  437. data/vendor/github.com/zeromq/czmq/builds/msvc/configure.bat +93 -0
  438. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.bat +14 -0
  439. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.nuspec +92 -0
  440. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.targets +128 -0
  441. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.xml +29 -0
  442. data/vendor/github.com/zeromq/czmq/builds/msvc/platform.h +1 -0
  443. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Common.props +21 -0
  444. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DLL.props +16 -0
  445. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Debug.props +29 -0
  446. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugDEXE.props +21 -0
  447. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugDLL.props +20 -0
  448. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugLEXE.props +20 -0
  449. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugLIB.props +21 -0
  450. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugLTCG.props +20 -0
  451. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugSEXE.props +21 -0
  452. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/EXE.props +17 -0
  453. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/LIB.props +16 -0
  454. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/LTCG.props +13 -0
  455. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Link.props +21 -0
  456. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Messages.props +15 -0
  457. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Output.props +30 -0
  458. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Release.props +41 -0
  459. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseDEXE.props +20 -0
  460. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseDLL.props +19 -0
  461. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseLEXE.props +20 -0
  462. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseLIB.props +19 -0
  463. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseLTCG.props +19 -0
  464. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseSEXE.props +20 -0
  465. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Win32.props +20 -0
  466. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/x64.props +23 -0
  467. data/vendor/github.com/zeromq/czmq/builds/msvc/resource.h +14 -0
  468. data/vendor/github.com/zeromq/czmq/builds/msvc/resource.rc +94 -0
  469. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2008/czmq/czmq.sln +65 -0
  470. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2008/czmq/czmq.vcproj +1411 -0
  471. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/.gitignore +1 -0
  472. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/build.bat +129 -0
  473. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq.import.props +59 -0
  474. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq.sln +81 -0
  475. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq_selftest/czmq_selftest.props +75 -0
  476. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq_selftest/czmq_selftest.vcxproj +146 -0
  477. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.import.xml +29 -0
  478. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.props +81 -0
  479. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.vcxproj +215 -0
  480. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.vcxproj.filters +203 -0
  481. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/test_randof/test_randof.props +75 -0
  482. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/test_randof/test_randof.vcxproj +146 -0
  483. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zmakecert/zmakecert.props +75 -0
  484. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zmakecert/zmakecert.vcxproj +146 -0
  485. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zsp/zsp.props +75 -0
  486. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zsp/zsp.vcxproj +146 -0
  487. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/.gitignore +1 -0
  488. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/build.bat +129 -0
  489. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq.import.props +59 -0
  490. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq.sln +81 -0
  491. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq_selftest/czmq_selftest.props +75 -0
  492. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq_selftest/czmq_selftest.vcxproj +146 -0
  493. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.import.xml +29 -0
  494. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.props +81 -0
  495. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.vcxproj +215 -0
  496. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.vcxproj.filters +203 -0
  497. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/test_randof/test_randof.props +75 -0
  498. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/test_randof/test_randof.vcxproj +146 -0
  499. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zmakecert/zmakecert.props +75 -0
  500. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zmakecert/zmakecert.vcxproj +146 -0
  501. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zsp/zsp.props +75 -0
  502. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zsp/zsp.vcxproj +146 -0
  503. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/build.bat +129 -0
  504. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq.import.props +59 -0
  505. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq.sln +81 -0
  506. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq_selftest/czmq_selftest.props +75 -0
  507. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq_selftest/czmq_selftest.vcxproj +146 -0
  508. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.import.xml +29 -0
  509. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.props +81 -0
  510. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.vcxproj +215 -0
  511. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.vcxproj.filters +203 -0
  512. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/test_randof/test_randof.props +75 -0
  513. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/test_randof/test_randof.vcxproj +146 -0
  514. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zmakecert/zmakecert.props +75 -0
  515. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zmakecert/zmakecert.vcxproj +146 -0
  516. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zsp/zsp.props +75 -0
  517. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zsp/zsp.vcxproj +146 -0
  518. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/build.bat +129 -0
  519. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq.import.props +59 -0
  520. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq.sln +81 -0
  521. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq_selftest/czmq_selftest.props +75 -0
  522. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq_selftest/czmq_selftest.vcxproj +146 -0
  523. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.import.xml +29 -0
  524. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.props +81 -0
  525. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.vcxproj +215 -0
  526. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.vcxproj.filters +203 -0
  527. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/test_randof/test_randof.props +75 -0
  528. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/test_randof/test_randof.vcxproj +146 -0
  529. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zmakecert/zmakecert.props +75 -0
  530. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zmakecert/zmakecert.vcxproj +146 -0
  531. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zsp/zsp.props +75 -0
  532. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zsp/zsp.vcxproj +146 -0
  533. data/vendor/github.com/zeromq/czmq/builds/nuget/czmq.autobuild +49 -0
  534. data/vendor/github.com/zeromq/czmq/builds/nuget/readme.nuget +18 -0
  535. data/vendor/github.com/zeromq/czmq/builds/rpi/.gitignore +8 -0
  536. data/vendor/github.com/zeromq/czmq/builds/rpi/README.md +62 -0
  537. data/vendor/github.com/zeromq/czmq/builds/rpi/build.sh +142 -0
  538. data/vendor/github.com/zeromq/czmq/builds/rpi/build_image.sh +32 -0
  539. data/vendor/github.com/zeromq/czmq/builds/rpi/prepare_img.sh +111 -0
  540. data/vendor/github.com/zeromq/czmq/builds/stable_zmq/ci_build.sh +62 -0
  541. data/vendor/github.com/zeromq/czmq/builds/valgrind/ci_build.sh +43 -0
  542. data/vendor/github.com/zeromq/czmq/ci_build.sh +317 -0
  543. data/vendor/github.com/zeromq/czmq/ci_deploy.sh +29 -0
  544. data/vendor/github.com/zeromq/czmq/ci_deploy_obs.sh +23 -0
  545. data/vendor/github.com/zeromq/czmq/configure.ac +856 -0
  546. data/vendor/github.com/zeromq/czmq/doc/.gitignore +91 -0
  547. data/vendor/github.com/zeromq/czmq/doc/Makefile.am +222 -0
  548. data/vendor/github.com/zeromq/czmq/doc/asciidoc.conf +64 -0
  549. data/vendor/github.com/zeromq/czmq/doc/czmq.adoc +51 -0
  550. data/vendor/github.com/zeromq/czmq/doc/czmq.txt +380 -0
  551. data/vendor/github.com/zeromq/czmq/doc/mkman +217 -0
  552. data/vendor/github.com/zeromq/czmq/doc/mkmans +15 -0
  553. data/vendor/github.com/zeromq/czmq/doc/wdput +43 -0
  554. data/vendor/github.com/zeromq/czmq/examples/security/LICENSE +18 -0
  555. data/vendor/github.com/zeromq/czmq/examples/security/README.txt +9 -0
  556. data/vendor/github.com/zeromq/czmq/examples/security/grasslands.c +32 -0
  557. data/vendor/github.com/zeromq/czmq/examples/security/hello.c +13 -0
  558. data/vendor/github.com/zeromq/czmq/examples/security/ironhouse.c +64 -0
  559. data/vendor/github.com/zeromq/czmq/examples/security/ironhouse2.c +123 -0
  560. data/vendor/github.com/zeromq/czmq/examples/security/ironhouse2_v2.c +107 -0
  561. data/vendor/github.com/zeromq/czmq/examples/security/passwords +2 -0
  562. data/vendor/github.com/zeromq/czmq/examples/security/stonehouse.c +59 -0
  563. data/vendor/github.com/zeromq/czmq/examples/security/strawhouse.c +49 -0
  564. data/vendor/github.com/zeromq/czmq/examples/security/woodhouse.c +47 -0
  565. data/vendor/github.com/zeromq/czmq/images/README_1.png +0 -0
  566. data/vendor/github.com/zeromq/czmq/include/.gitignore +1 -0
  567. data/vendor/github.com/zeromq/czmq/include/czmq.h +39 -0
  568. data/vendor/github.com/zeromq/czmq/include/czmq_library.h +190 -0
  569. data/vendor/github.com/zeromq/czmq/include/czmq_prelude.h +735 -0
  570. data/vendor/github.com/zeromq/czmq/include/test_zgossip.h +44 -0
  571. data/vendor/github.com/zeromq/czmq/include/zactor.h +94 -0
  572. data/vendor/github.com/zeromq/czmq/include/zargs.h +134 -0
  573. data/vendor/github.com/zeromq/czmq/include/zarmour.h +114 -0
  574. data/vendor/github.com/zeromq/czmq/include/zauth.h +100 -0
  575. data/vendor/github.com/zeromq/czmq/include/zbeacon.h +86 -0
  576. data/vendor/github.com/zeromq/czmq/include/zcert.h +133 -0
  577. data/vendor/github.com/zeromq/czmq/include/zcertstore.h +101 -0
  578. data/vendor/github.com/zeromq/czmq/include/zchunk.h +163 -0
  579. data/vendor/github.com/zeromq/czmq/include/zclock.h +73 -0
  580. data/vendor/github.com/zeromq/czmq/include/zconfig.h +199 -0
  581. data/vendor/github.com/zeromq/czmq/include/zdigest.h +65 -0
  582. data/vendor/github.com/zeromq/czmq/include/zdir.h +149 -0
  583. data/vendor/github.com/zeromq/czmq/include/zdir_patch.h +82 -0
  584. data/vendor/github.com/zeromq/czmq/include/zfile.h +185 -0
  585. data/vendor/github.com/zeromq/czmq/include/zframe.h +177 -0
  586. data/vendor/github.com/zeromq/czmq/include/zgossip.h +95 -0
  587. data/vendor/github.com/zeromq/czmq/include/zhash.h +183 -0
  588. data/vendor/github.com/zeromq/czmq/include/zhashx.h +279 -0
  589. data/vendor/github.com/zeromq/czmq/include/ziflist.h +98 -0
  590. data/vendor/github.com/zeromq/czmq/include/zlist.h +158 -0
  591. data/vendor/github.com/zeromq/czmq/include/zlistx.h +205 -0
  592. data/vendor/github.com/zeromq/czmq/include/zloop.h +163 -0
  593. data/vendor/github.com/zeromq/czmq/include/zmonitor.h +73 -0
  594. data/vendor/github.com/zeromq/czmq/include/zmsg.h +280 -0
  595. data/vendor/github.com/zeromq/czmq/include/zpoller.h +87 -0
  596. data/vendor/github.com/zeromq/czmq/include/zproc.h +270 -0
  597. data/vendor/github.com/zeromq/czmq/include/zproxy.h +111 -0
  598. data/vendor/github.com/zeromq/czmq/include/zrex.h +82 -0
  599. data/vendor/github.com/zeromq/czmq/include/zsock.h +1209 -0
  600. data/vendor/github.com/zeromq/czmq/include/zstr.h +135 -0
  601. data/vendor/github.com/zeromq/czmq/include/zsys.h +439 -0
  602. data/vendor/github.com/zeromq/czmq/include/ztimerset.h +90 -0
  603. data/vendor/github.com/zeromq/czmq/include/ztrie.h +106 -0
  604. data/vendor/github.com/zeromq/czmq/include/zuuid.h +96 -0
  605. data/vendor/github.com/zeromq/czmq/issues/README.md +6 -0
  606. data/vendor/github.com/zeromq/czmq/issues/c +520 -0
  607. data/vendor/github.com/zeromq/czmq/issues/issue-407.c +146 -0
  608. data/vendor/github.com/zeromq/czmq/license.xml +9 -0
  609. data/vendor/github.com/zeromq/czmq/mkdoc +7 -0
  610. data/vendor/github.com/zeromq/czmq/model/chkopts.pl +47 -0
  611. data/vendor/github.com/zeromq/czmq/model/rename_class +42 -0
  612. data/vendor/github.com/zeromq/czmq/packaging/debian/changelog +5 -0
  613. data/vendor/github.com/zeromq/czmq/packaging/debian/compat +1 -0
  614. data/vendor/github.com/zeromq/czmq/packaging/debian/control +86 -0
  615. data/vendor/github.com/zeromq/czmq/packaging/debian/copyright +13 -0
  616. data/vendor/github.com/zeromq/czmq/packaging/debian/czmq.dsc.obs +20 -0
  617. data/vendor/github.com/zeromq/czmq/packaging/debian/czmq.install +2 -0
  618. data/vendor/github.com/zeromq/czmq/packaging/debian/czmq.manpages +1 -0
  619. data/vendor/github.com/zeromq/czmq/packaging/debian/format +1 -0
  620. data/vendor/github.com/zeromq/czmq/packaging/debian/libczmq-dev.install +4 -0
  621. data/vendor/github.com/zeromq/czmq/packaging/debian/libczmq-dev.manpages +2 -0
  622. data/vendor/github.com/zeromq/czmq/packaging/debian/libczmq4.install +1 -0
  623. data/vendor/github.com/zeromq/czmq/packaging/debian/rules +96 -0
  624. data/vendor/github.com/zeromq/czmq/packaging/dist/gitlog2changelog.py +125 -0
  625. data/vendor/github.com/zeromq/czmq/packaging/obs/_service +91 -0
  626. data/vendor/github.com/zeromq/czmq/packaging/redhat/czmq.spec +202 -0
  627. data/vendor/github.com/zeromq/czmq/project.gyp +121 -0
  628. data/vendor/github.com/zeromq/czmq/project.xml +99 -0
  629. data/vendor/github.com/zeromq/czmq/setup.py +9 -0
  630. data/vendor/github.com/zeromq/czmq/src/.gitignore +20 -0
  631. data/vendor/github.com/zeromq/czmq/src/.valgrind.supp +33 -0
  632. data/vendor/github.com/zeromq/czmq/src/CMakeLists-local.txt +22 -0
  633. data/vendor/github.com/zeromq/czmq/src/Makemodule-local.am +15 -0
  634. data/vendor/github.com/zeromq/czmq/src/Makemodule.am +353 -0
  635. data/vendor/github.com/zeromq/czmq/src/czmq_classes.h +388 -0
  636. data/vendor/github.com/zeromq/czmq/src/czmq_private_selftest.c +40 -0
  637. data/vendor/github.com/zeromq/czmq/src/czmq_selftest.c +220 -0
  638. data/vendor/github.com/zeromq/czmq/src/foreign/sha1/sha1.h +76 -0
  639. data/vendor/github.com/zeromq/czmq/src/foreign/sha1/sha1.inc_c +335 -0
  640. data/vendor/github.com/zeromq/czmq/src/foreign/slre/readme.txt +83 -0
  641. data/vendor/github.com/zeromq/czmq/src/foreign/slre/slre.h +92 -0
  642. data/vendor/github.com/zeromq/czmq/src/foreign/slre/slre.inc_c +660 -0
  643. data/vendor/github.com/zeromq/czmq/src/libczmq.pc.in +24 -0
  644. data/vendor/github.com/zeromq/czmq/src/python_cffi.inc +17 -0
  645. data/vendor/github.com/zeromq/czmq/src/selftest-ro/.gitkeep +0 -0
  646. data/vendor/github.com/zeromq/czmq/src/selftest.cfg +5 -0
  647. data/vendor/github.com/zeromq/czmq/src/sockopts.gsl +36 -0
  648. data/vendor/github.com/zeromq/czmq/src/sockopts.xml +193 -0
  649. data/vendor/github.com/zeromq/czmq/src/test_randof.c +182 -0
  650. data/vendor/github.com/zeromq/czmq/src/test_zgossip.c +188 -0
  651. data/vendor/github.com/zeromq/czmq/src/valgrind.supp +14 -0
  652. data/vendor/github.com/zeromq/czmq/src/zactor.c +338 -0
  653. data/vendor/github.com/zeromq/czmq/src/zargs.c +289 -0
  654. data/vendor/github.com/zeromq/czmq/src/zarmour.c +941 -0
  655. data/vendor/github.com/zeromq/czmq/src/zauth.c +821 -0
  656. data/vendor/github.com/zeromq/czmq/src/zbeacon.c +651 -0
  657. data/vendor/github.com/zeromq/czmq/src/zcert.c +557 -0
  658. data/vendor/github.com/zeromq/czmq/src/zcertstore.c +407 -0
  659. data/vendor/github.com/zeromq/czmq/src/zchunk.c +609 -0
  660. data/vendor/github.com/zeromq/czmq/src/zclock.c +237 -0
  661. data/vendor/github.com/zeromq/czmq/src/zconfig.c +1369 -0
  662. data/vendor/github.com/zeromq/czmq/src/zdigest.c +163 -0
  663. data/vendor/github.com/zeromq/czmq/src/zdir.c +1138 -0
  664. data/vendor/github.com/zeromq/czmq/src/zdir_patch.c +227 -0
  665. data/vendor/github.com/zeromq/czmq/src/zfile.c +920 -0
  666. data/vendor/github.com/zeromq/czmq/src/zframe.c +756 -0
  667. data/vendor/github.com/zeromq/czmq/src/zgossip.c +689 -0
  668. data/vendor/github.com/zeromq/czmq/src/zgossip.xml +57 -0
  669. data/vendor/github.com/zeromq/czmq/src/zgossip_engine.inc +1008 -0
  670. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.bnf +43 -0
  671. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.c +688 -0
  672. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.h +127 -0
  673. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.xml +46 -0
  674. data/vendor/github.com/zeromq/czmq/src/zhash.c +956 -0
  675. data/vendor/github.com/zeromq/czmq/src/zhash_primes.inc +329 -0
  676. data/vendor/github.com/zeromq/czmq/src/zhashx.c +1369 -0
  677. data/vendor/github.com/zeromq/czmq/src/ziflist.c +517 -0
  678. data/vendor/github.com/zeromq/czmq/src/zlist.c +634 -0
  679. data/vendor/github.com/zeromq/czmq/src/zlistx.c +753 -0
  680. data/vendor/github.com/zeromq/czmq/src/zloop.c +1000 -0
  681. data/vendor/github.com/zeromq/czmq/src/zmakecert.c +64 -0
  682. data/vendor/github.com/zeromq/czmq/src/zmonitor.c +447 -0
  683. data/vendor/github.com/zeromq/czmq/src/zmsg.c +1258 -0
  684. data/vendor/github.com/zeromq/czmq/src/zpoller.c +397 -0
  685. data/vendor/github.com/zeromq/czmq/src/zproc.c +1160 -0
  686. data/vendor/github.com/zeromq/czmq/src/zproxy.c +791 -0
  687. data/vendor/github.com/zeromq/czmq/src/zrex.c +310 -0
  688. data/vendor/github.com/zeromq/czmq/src/zsock.c +2207 -0
  689. data/vendor/github.com/zeromq/czmq/src/zsock_option.gsl +404 -0
  690. data/vendor/github.com/zeromq/czmq/src/zsock_option.inc +3946 -0
  691. data/vendor/github.com/zeromq/czmq/src/zsp.c +118 -0
  692. data/vendor/github.com/zeromq/czmq/src/zstr.c +548 -0
  693. data/vendor/github.com/zeromq/czmq/src/zsys.c +2225 -0
  694. data/vendor/github.com/zeromq/czmq/src/ztimerset.c +227 -0
  695. data/vendor/github.com/zeromq/czmq/src/ztrie.c +809 -0
  696. data/vendor/github.com/zeromq/czmq/src/zuuid.c +344 -0
  697. metadata +780 -0
@@ -0,0 +1,1000 @@
1
+ /* =========================================================================
2
+ zloop - event-driven reactor
3
+
4
+ Copyright (c) the Contributors as noted in the AUTHORS file.
5
+ This file is part of CZMQ, the high-level C binding for 0MQ:
6
+ http://czmq.zeromq.org.
7
+
8
+ This Source Code Form is subject to the terms of the Mozilla Public
9
+ License, v. 2.0. If a copy of the MPL was not distributed with this
10
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
11
+ =========================================================================
12
+ */
13
+
14
+ /*
15
+ @header
16
+ The zloop class provides an event-driven reactor pattern. The reactor
17
+ handles zmq_pollitem_t items (pollers or writers, sockets or fds), and
18
+ once-off or repeated timers. Its resolution is 1 msec. It uses a tickless
19
+ timer to reduce CPU interrupts in inactive processes.
20
+ @discuss
21
+ @end
22
+ */
23
+
24
+ #include "czmq_classes.h"
25
+
26
+ typedef struct _s_reader_t s_reader_t;
27
+ typedef struct _s_poller_t s_poller_t;
28
+ typedef struct _s_timer_t s_timer_t;
29
+ typedef struct _s_ticket_t s_ticket_t;
30
+
31
+ // Structure of our class
32
+
33
+ struct _zloop_t {
34
+ zlistx_t *readers; // List of socket readers
35
+ zlistx_t *pollers; // List of poll items
36
+ zlistx_t *timers; // List of timers
37
+ zlistx_t *tickets; // List of tickets
38
+ int last_timer_id; // Most recent timer id
39
+ size_t max_timers; // Limit on number of timers
40
+ size_t ticket_delay; // Ticket delay value
41
+ size_t poll_size; // Size of poll set
42
+ zmq_pollitem_t *pollset; // zmq_poll set
43
+ s_reader_t *readact; // Readers for this poll set
44
+ s_poller_t *pollact; // Pollers for this poll set
45
+ bool need_rebuild; // True if pollset needs rebuilding
46
+ bool verbose; // True if verbose tracing wanted
47
+ bool terminated; // True when stopped running
48
+ bool nonstop; // Don't stop running on Ctrl-C
49
+ zlistx_t *zombies; // List of timers to kill
50
+ };
51
+
52
+ // Reactor elements are held as structures of their own
53
+
54
+ struct _s_reader_t {
55
+ void *list_handle; // Handle into list
56
+ zsock_t *sock; // Socket to read from
57
+ zloop_reader_fn *handler; // Function to execute
58
+ void *arg; // Application argument to poll item
59
+ int errors; // If too many errors, kill reader
60
+ bool tolerant; // Unless configured as tolerant
61
+ };
62
+
63
+ struct _s_poller_t {
64
+ void *list_handle; // Handle into list
65
+ zmq_pollitem_t item; // ZeroMQ socket or file descriptor
66
+ zloop_fn *handler; // Function to execute
67
+ void *arg; // Application argument to poll item
68
+ int errors; // If too many errors, kill poller
69
+ bool tolerant; // Unless configured as tolerant
70
+ };
71
+
72
+ struct _s_timer_t {
73
+ void *list_handle; // Handle into list
74
+ int timer_id; // Unique timer id, used to cancel timer
75
+ zloop_timer_fn *handler; // Function to execute
76
+ size_t delay; // Delay (ms) between executing
77
+ size_t times; // Number of times to repeat, 0 for forever
78
+ void *arg; // Application argument to timer
79
+ int64_t when; // Clock time when alarm goes off
80
+ };
81
+
82
+ // As we pass void * to/from the caller for working with tickets, we
83
+ // check validity using an object tag. This value is unique in CZMQ.
84
+ #define TICKET_TAG 0x0007cafe
85
+
86
+ struct _s_ticket_t {
87
+ uint32_t tag; // Object tag for runtime detection
88
+ void *list_handle; // Handle into list
89
+ size_t delay; // Delay (ms) before executing
90
+ int64_t when; // Clock time to invoke the ticket
91
+ zloop_timer_fn *handler; // Function to execute (use timer fn)
92
+ void *arg; // Application argument to function
93
+ bool deleted; // Flag as deleted (to clean up later)
94
+ };
95
+
96
+ static int
97
+ s_next_timer_id (zloop_t *self)
98
+ {
99
+ return ++self->last_timer_id;
100
+ }
101
+
102
+ static s_reader_t *
103
+ s_reader_new (zsock_t *sock, zloop_reader_fn handler, void *arg)
104
+ {
105
+ s_reader_t *self = (s_reader_t *) zmalloc (sizeof (s_reader_t));
106
+ assert (self);
107
+ self->sock = sock;
108
+ self->handler = handler;
109
+ self->arg = arg;
110
+ self->tolerant = false; // By default, errors are bad
111
+ return self;
112
+ }
113
+
114
+ static void
115
+ s_reader_destroy (s_reader_t **self_p)
116
+ {
117
+ assert (self_p);
118
+ s_reader_t *self = *self_p;
119
+ if (self) {
120
+ freen (self);
121
+ *self_p = NULL;
122
+ }
123
+ }
124
+
125
+ static s_poller_t *
126
+ s_poller_new (zmq_pollitem_t *item, zloop_fn handler, void *arg)
127
+ {
128
+ s_poller_t *self = (s_poller_t *) zmalloc (sizeof (s_poller_t));
129
+ assert (self);
130
+ self->item = *item;
131
+ self->handler = handler;
132
+ self->arg = arg;
133
+ self->tolerant = false; // By default, errors are bad
134
+ return self;
135
+ }
136
+
137
+ static void
138
+ s_poller_destroy (s_poller_t **self_p)
139
+ {
140
+ assert (self_p);
141
+ s_poller_t *self = *self_p;
142
+ if (self) {
143
+ freen (self);
144
+ *self_p = NULL;
145
+ }
146
+ }
147
+
148
+
149
+ static s_timer_t *
150
+ s_timer_new (int timer_id, size_t delay, size_t times, zloop_timer_fn handler, void *arg)
151
+ {
152
+ s_timer_t *self = (s_timer_t *) zmalloc (sizeof (s_timer_t));
153
+ assert (self);
154
+ self->timer_id = timer_id;
155
+ self->delay = delay;
156
+ self->times = times;
157
+ self->when = zclock_mono () + delay;
158
+ self->handler = handler;
159
+ self->arg = arg;
160
+ return self;
161
+ }
162
+
163
+ static void
164
+ s_timer_destroy (s_timer_t **self_p)
165
+ {
166
+ assert (self_p);
167
+ s_timer_t *self = *self_p;
168
+ if (self) {
169
+ freen (self);
170
+ *self_p = NULL;
171
+ }
172
+ }
173
+
174
+ static int
175
+ s_timer_comparator (s_timer_t *first, s_timer_t *second)
176
+ {
177
+ if (first->when > second->when)
178
+ return 1;
179
+ else
180
+ if (first->when < second->when)
181
+ return -1;
182
+ else
183
+ return 0;
184
+ }
185
+
186
+ static s_ticket_t *
187
+ s_ticket_new (size_t delay, zloop_timer_fn handler, void *arg)
188
+ {
189
+ s_ticket_t *self = (s_ticket_t *) zmalloc (sizeof (s_ticket_t));
190
+ assert (self);
191
+ self->tag = TICKET_TAG;
192
+ self->delay = delay;
193
+ self->when = zclock_mono () + delay;
194
+ self->handler = handler;
195
+ self->arg = arg;
196
+ return self;
197
+ }
198
+
199
+ static void
200
+ s_ticket_destroy (s_ticket_t **self_p)
201
+ {
202
+ assert (self_p);
203
+ s_ticket_t *self = *self_p;
204
+ if (self) {
205
+ self->tag = 0xDeadBeef;
206
+ freen (self);
207
+ *self_p = NULL;
208
+ }
209
+ }
210
+
211
+ static int
212
+ s_ticket_comparator (s_ticket_t *first, s_ticket_t *second)
213
+ {
214
+ if (first->when > second->when)
215
+ return 1;
216
+ else
217
+ if (first->when < second->when)
218
+ return -1;
219
+ else
220
+ return 0;
221
+ }
222
+
223
+ // Remove timer with specified id, if it exists
224
+
225
+ static void
226
+ s_timer_remove (zloop_t *self, int timer_id)
227
+ {
228
+ s_timer_t *timer = (s_timer_t *) zlistx_first (self->timers);
229
+ while (timer) {
230
+ if (timer->timer_id == timer_id) {
231
+ zlistx_delete (self->timers, timer->list_handle);
232
+ break;
233
+ }
234
+ timer = (s_timer_t *) zlistx_next (self->timers);
235
+ }
236
+ }
237
+
238
+
239
+ // We hold an array of pollers that matches the pollset, so we can
240
+ // register/cancel pollers orthogonally to executing the pollset
241
+ // activity on pollers. Returns 0 on success, -1 on failure.
242
+
243
+ static int
244
+ s_rebuild_pollset (zloop_t *self)
245
+ {
246
+ self->poll_size = zlistx_size (self->readers) + zlistx_size (self->pollers);
247
+
248
+ freen (self->pollset);
249
+ self->pollset = (zmq_pollitem_t *) zmalloc (self->poll_size * sizeof (zmq_pollitem_t));
250
+ assert (self->pollset);
251
+
252
+ freen (self->readact);
253
+ self->readact = (s_reader_t *) zmalloc (self->poll_size * sizeof (s_reader_t));
254
+ assert (self->readact);
255
+
256
+ freen (self->pollact);
257
+ self->pollact = (s_poller_t *) zmalloc (self->poll_size * sizeof (s_poller_t));
258
+ assert (self->pollact);
259
+
260
+ s_reader_t *reader = (s_reader_t *) zlistx_first (self->readers);
261
+ uint item_nbr = 0;
262
+ while (reader) {
263
+ zmq_pollitem_t poll_item = { zsock_resolve (reader->sock), 0, ZMQ_POLLIN, 0 };
264
+ self->pollset [item_nbr] = poll_item;
265
+ self->readact [item_nbr] = *reader;
266
+ item_nbr++;
267
+ reader = (s_reader_t *) zlistx_next (self->readers);
268
+ }
269
+ s_poller_t *poller = (s_poller_t *) zlistx_first (self->pollers);
270
+ while (poller) {
271
+ self->pollset [item_nbr] = poller->item;
272
+ self->pollact [item_nbr] = *poller;
273
+ item_nbr++;
274
+ poller = (s_poller_t *) zlistx_next (self->pollers);
275
+ }
276
+ self->need_rebuild = false;
277
+ return 0;
278
+ }
279
+
280
+ static long
281
+ s_tickless (zloop_t *self)
282
+ {
283
+ // Calculate tickless timer, up to 1 hour
284
+ int64_t tickless = zclock_mono () + 1000 * 3600;
285
+
286
+ // Scan timers, which are not sorted
287
+ // TODO: sort timers properly on insertion
288
+ s_timer_t *timer = (s_timer_t *) zlistx_first (self->timers);
289
+ while (timer) {
290
+ // Find earliest timer
291
+ if (tickless > timer->when)
292
+ tickless = timer->when;
293
+ timer = (s_timer_t *) zlistx_next (self->timers);
294
+ }
295
+ // Tickets are sorted, so check first ticket
296
+ s_ticket_t *ticket = (s_ticket_t *) zlistx_first (self->tickets);
297
+ if (ticket && tickless > ticket->when)
298
+ tickless = ticket->when;
299
+
300
+ long timeout = (long) (tickless - zclock_mono ());
301
+ if (timeout < 0)
302
+ timeout = 0;
303
+ if (self->verbose)
304
+ zsys_debug ("zloop polling for %d msec", (int) timeout);
305
+
306
+ return timeout * ZMQ_POLL_MSEC;
307
+ }
308
+
309
+
310
+ // --------------------------------------------------------------------------
311
+ // Constructor
312
+
313
+ zloop_t *
314
+ zloop_new (void)
315
+ {
316
+ zloop_t *self = (zloop_t *) zmalloc (sizeof (zloop_t));
317
+ assert (self);
318
+
319
+ self->readers = zlistx_new ();
320
+ assert (self->readers);
321
+
322
+ self->pollers = zlistx_new ();
323
+ assert (self->pollers);
324
+
325
+ self->timers = zlistx_new ();
326
+ assert (self->timers);
327
+
328
+ self->zombies = zlistx_new ();
329
+ assert (self->zombies);
330
+
331
+ self->tickets = zlistx_new ();
332
+ assert (self->tickets);
333
+ self->last_timer_id = 0;
334
+
335
+ zlistx_set_destructor (self->readers, (czmq_destructor *) s_reader_destroy);
336
+ zlistx_set_destructor (self->pollers, (czmq_destructor *) s_poller_destroy);
337
+ zlistx_set_destructor (self->timers, (czmq_destructor *) s_timer_destroy);
338
+ zlistx_set_comparator (self->timers, (czmq_comparator *) s_timer_comparator);
339
+ zlistx_set_destructor (self->tickets, (czmq_destructor *) s_ticket_destroy);
340
+ zlistx_set_comparator (self->tickets, (czmq_comparator *) s_ticket_comparator);
341
+
342
+ return self;
343
+ }
344
+
345
+
346
+ // --------------------------------------------------------------------------
347
+ // Destructor
348
+
349
+ void
350
+ zloop_destroy (zloop_t **self_p)
351
+ {
352
+ assert (self_p);
353
+ if (*self_p) {
354
+ zloop_t *self = *self_p;
355
+
356
+ // If we never started the loop, yet manipulated timers, we'll have
357
+ // a zombie list
358
+ while (zlistx_first (self->zombies)) {
359
+ // Get timer_id back from pointer
360
+ ptrdiff_t timer_id = (byte *) zlistx_detach (self->zombies, NULL) - (byte *) NULL;
361
+ s_timer_remove (self, (int) timer_id);
362
+ }
363
+ zlistx_destroy (&self->zombies);
364
+ zlistx_destroy (&self->readers);
365
+ zlistx_destroy (&self->pollers);
366
+ zlistx_destroy (&self->timers);
367
+ zlistx_destroy (&self->tickets);
368
+ freen (self->pollset);
369
+ freen (self->readact);
370
+ freen (self->pollact);
371
+ freen (self);
372
+ *self_p = NULL;
373
+ }
374
+ }
375
+
376
+
377
+ // --------------------------------------------------------------------------
378
+ // Register socket reader with the reactor. When the reader has messages,
379
+ // the reactor will call the handler, passing the arg. Returns 0 if OK, -1
380
+ // if there was an error. If you register the same socket more than once,
381
+ // each instance will invoke its corresponding handler.
382
+
383
+ int
384
+ zloop_reader (zloop_t *self, zsock_t *sock, zloop_reader_fn handler, void *arg)
385
+ {
386
+ assert (self);
387
+ assert (sock);
388
+
389
+ s_reader_t *reader = s_reader_new (sock, handler, arg);
390
+ if (reader) {
391
+ reader->list_handle = zlistx_add_end (self->readers, reader);
392
+ assert (reader->list_handle);
393
+ self->need_rebuild = true;
394
+ if (self->verbose)
395
+ zsys_debug ("zloop: register %s reader", zsock_type_str (sock));
396
+ return 0;
397
+ }
398
+ else
399
+ return -1;
400
+ }
401
+
402
+
403
+ // --------------------------------------------------------------------------
404
+ // Cancel a socket reader from the reactor. If multiple readers exist for
405
+ // same socket, cancels ALL of them.
406
+
407
+ void
408
+ zloop_reader_end (zloop_t *self, zsock_t *sock)
409
+ {
410
+ assert (self);
411
+ assert (sock);
412
+
413
+ s_reader_t *reader = (s_reader_t *) zlistx_first (self->readers);
414
+ while (reader) {
415
+ if (reader->sock == sock) {
416
+ zlistx_delete (self->readers, reader->list_handle);
417
+ self->need_rebuild = true;
418
+ }
419
+ reader = (s_reader_t *) zlistx_next (self->readers);
420
+ }
421
+ if (self->verbose)
422
+ zsys_debug ("zloop: cancel %s reader", zsock_type_str (sock));
423
+ }
424
+
425
+
426
+ // --------------------------------------------------------------------------
427
+ // Configure a registered reader to ignore errors. If you do not set this,
428
+ // then reader that have errors are removed from the reactor silently.
429
+
430
+ void
431
+ zloop_reader_set_tolerant (zloop_t *self, zsock_t *sock)
432
+ {
433
+ assert (self);
434
+ assert (sock);
435
+
436
+ s_reader_t *reader = (s_reader_t *) zlistx_first (self->readers);
437
+ while (reader) {
438
+ if (reader->sock == sock)
439
+ reader->tolerant = true;
440
+ reader = (s_reader_t *) zlistx_next (self->readers);
441
+ }
442
+ }
443
+
444
+
445
+ // --------------------------------------------------------------------------
446
+ // Register low-level libzmq pollitem with the reactor. When the pollitem
447
+ // is ready, will call the handler, passing the arg. Returns 0 if OK, -1
448
+ // if there was an error. If you register the pollitem more than once, each
449
+ // instance will invoke its corresponding handler. A pollitem with
450
+ // socket=NULL and fd=0 means 'poll on FD zero'.
451
+
452
+ int
453
+ zloop_poller (zloop_t *self, zmq_pollitem_t *item, zloop_fn handler, void *arg)
454
+ {
455
+ assert (self);
456
+
457
+ if (item->socket
458
+ && streq (zsys_sockname (zsock_type (item->socket)), "UNKNOWN"))
459
+ return -1;
460
+
461
+ s_poller_t *poller = s_poller_new (item, handler, arg);
462
+ assert (poller);
463
+
464
+ poller->list_handle = zlistx_add_end (self->pollers, poller);
465
+ assert (poller->list_handle);
466
+ self->need_rebuild = true;
467
+ if (self->verbose)
468
+ zsys_debug ("zloop: register %s poller (%p, %d)",
469
+ item->socket? zsys_sockname (zsock_type (item->socket)): "FD",
470
+ item->socket, item->fd);
471
+ return 0;
472
+ }
473
+
474
+
475
+ // --------------------------------------------------------------------------
476
+ // Cancel a pollitem from the reactor, specified by socket or FD. If both
477
+ // are specified, uses only socket. If multiple poll items exist for same
478
+ // socket/FD, cancels ALL of them.
479
+
480
+ void
481
+ zloop_poller_end (zloop_t *self, zmq_pollitem_t *item)
482
+ {
483
+ assert (self);
484
+
485
+ s_poller_t *poller = (s_poller_t *) zlistx_first (self->pollers);
486
+ while (poller) {
487
+ bool match = false;
488
+ if (item->socket) {
489
+ if (item->socket == poller->item.socket)
490
+ match = true;
491
+ }
492
+ else {
493
+ if (item->fd == poller->item.fd)
494
+ match = true;
495
+ }
496
+ if (match) {
497
+ zlistx_delete (self->pollers, poller->list_handle);
498
+ // Force rebuild to avoid reading from freed poller
499
+ self->need_rebuild = true;
500
+ }
501
+ poller = (s_poller_t *) zlistx_next (self->pollers);
502
+ }
503
+ if (self->verbose)
504
+ zsys_debug ("zloop: cancel %s poller (%p, %d)",
505
+ item->socket? zsys_sockname (zsock_type (item->socket)): "FD",
506
+ item->socket, item->fd);
507
+ }
508
+
509
+
510
+ // --------------------------------------------------------------------------
511
+ // Configure a registered poller to ignore errors. If you do not set this,
512
+ // then poller that have errors are removed from the reactor silently.
513
+
514
+ void
515
+ zloop_poller_set_tolerant (zloop_t *self, zmq_pollitem_t *item)
516
+ {
517
+ assert (self);
518
+
519
+ // Find matching poller(s) and mark as tolerant
520
+ s_poller_t *poller = (s_poller_t *) zlistx_first (self->pollers);
521
+ while (poller) {
522
+ bool match = false;
523
+ if (item->socket) {
524
+ if (item->socket == poller->item.socket)
525
+ match = true;
526
+ }
527
+ else {
528
+ if (item->fd == poller->item.fd)
529
+ match = true;
530
+ }
531
+ if (match)
532
+ poller->tolerant = true;
533
+
534
+ poller = (s_poller_t *) zlistx_next (self->pollers);
535
+ }
536
+ }
537
+
538
+
539
+ // --------------------------------------------------------------------------
540
+ // Register a timer that expires after some delay and repeats some number of
541
+ // times. At each expiry, will call the handler, passing the arg. To run a
542
+ // timer forever, use 0 times. Returns a timer_id that is used to cancel the
543
+ // timer in the future. Returns -1 if there was an error.
544
+
545
+ int
546
+ zloop_timer (zloop_t *self, size_t delay, size_t times, zloop_timer_fn handler, void *arg)
547
+ {
548
+ assert (self);
549
+ // Catch excessive use of timers
550
+ if (self->max_timers && zlistx_size (self->timers) == self->max_timers) {
551
+ zsys_error ("zloop: timer limit reached (max=%d)", self->max_timers);
552
+ return -1;
553
+ }
554
+ int timer_id = s_next_timer_id (self);
555
+ s_timer_t *timer = s_timer_new (timer_id, delay, times, handler, arg);
556
+ if (timer) {
557
+ timer->list_handle = zlistx_add_end (self->timers, timer);
558
+ assert (timer->list_handle);
559
+ if (self->verbose)
560
+ zsys_debug ("zloop: register timer id=%d delay=%d times=%d",
561
+ timer_id, (int) delay, (int) times);
562
+ return timer_id;
563
+ }
564
+ else
565
+ return -1;
566
+ }
567
+
568
+
569
+ // --------------------------------------------------------------------------
570
+ // Cancel a timer by timer id (as returned by zloop_timer()).
571
+ // Returns 0 on success.
572
+
573
+ int
574
+ zloop_timer_end (zloop_t *self, int timer_id)
575
+ {
576
+ assert (self);
577
+
578
+ if (self->terminated)
579
+ s_timer_remove (self, timer_id);
580
+ else
581
+ // We cannot touch self->timers because we may be executing that
582
+ // from inside the poll loop. So, we hold the arg on the zombie
583
+ // list, and process that list when we're done executing timers.
584
+ // This hack lets us store an integer timer ID as a pointer
585
+ zlistx_add_end (self->zombies, (byte *) NULL + timer_id);
586
+
587
+ if (self->verbose)
588
+ zsys_debug ("zloop: cancel timer id=%d", timer_id);
589
+
590
+ return 0;
591
+ }
592
+
593
+
594
+ // --------------------------------------------------------------------------
595
+ // Register a ticket timer. Ticket timers are very fast in the case where
596
+ // you use a lot of timers (thousands), and frequently remove and add them.
597
+ // The main use case is expiry timers for servers that handle many clients,
598
+ // and which reset the expiry timer for each message received from a client.
599
+ // Whereas normal timers perform poorly as the number of clients grows, the
600
+ // cost of ticket timers is constant, no matter the number of clients. You
601
+ // must set the ticket delay using zloop_set_ticket_delay before creating a
602
+ // ticket. Returns a handle to the timer that you should use in
603
+ // zloop_ticket_reset and zloop_ticket_delete.
604
+
605
+ void *
606
+ zloop_ticket (zloop_t *self, zloop_timer_fn handler, void *arg)
607
+ {
608
+ assert (self);
609
+ assert (self->ticket_delay > 0);
610
+ s_ticket_t *ticket = s_ticket_new (self->ticket_delay, handler, arg);
611
+ if (ticket) {
612
+ ticket->list_handle = zlistx_add_end (self->tickets, ticket);
613
+ assert (ticket->list_handle);
614
+ }
615
+ return ticket;
616
+ }
617
+
618
+
619
+ // --------------------------------------------------------------------------
620
+ // Reset a ticket timer, which moves it to the end of the ticket list and
621
+ // resets its execution time. This is a very fast operation.
622
+
623
+ void
624
+ zloop_ticket_reset (zloop_t *self, void *handle)
625
+ {
626
+ s_ticket_t *ticket = (s_ticket_t *) handle;
627
+ assert (ticket->tag == TICKET_TAG);
628
+ ticket->when = zclock_mono () + ticket->delay;
629
+ zlistx_move_end (self->tickets, ticket->list_handle);
630
+ }
631
+
632
+
633
+ // --------------------------------------------------------------------------
634
+ // Delete a ticket timer. We do not actually delete the ticket here, as
635
+ // other code may still refer to the ticket. We mark as deleted, and remove
636
+ // later and safely.
637
+
638
+ void
639
+ zloop_ticket_delete (zloop_t *self, void *handle)
640
+ {
641
+ s_ticket_t *ticket = (s_ticket_t *) handle;
642
+ assert (ticket->tag == TICKET_TAG);
643
+ ticket->deleted = true;
644
+ // Move deleted tickets to end of list for fast cleanup
645
+ zlistx_move_end (self->tickets, ticket->list_handle);
646
+ }
647
+
648
+
649
+ // --------------------------------------------------------------------------
650
+ // Set the ticket delay, which applies to all tickets. If you lower the
651
+ // delay and there are already tickets created, the results are undefined.
652
+
653
+ void
654
+ zloop_set_ticket_delay (zloop_t *self, size_t ticket_delay)
655
+ {
656
+ assert (self);
657
+ self->ticket_delay = ticket_delay;
658
+ }
659
+
660
+
661
+ // --------------------------------------------------------------------------
662
+ // Set verbose tracing of reactor on/off
663
+
664
+ void
665
+ zloop_set_verbose (zloop_t *self, bool verbose)
666
+ {
667
+ assert (self);
668
+ self->verbose = verbose;
669
+ }
670
+
671
+ // --------------------------------------------------------------------------
672
+ // By default the reactor stops if the process receives a SIGINT or SIGTERM
673
+ // signal. This makes it impossible to shut-down message based architectures
674
+ // like zactors. This method lets you switch off break handling. The default
675
+ // nonstop setting is off (false).
676
+
677
+ void
678
+ zloop_set_nonstop (zloop_t *self, bool nonstop)
679
+ {
680
+ assert (self);
681
+ self->nonstop = nonstop;
682
+ }
683
+
684
+
685
+ // --------------------------------------------------------------------------
686
+ // Set hard limit on number of timers allowed. Setting more than a small
687
+ // number of timers (10-100) can have a dramatic impact on the performance
688
+ // of the reactor. For high-volume cases, use ticket timers. If the hard
689
+ // limit is reached, the reactor stops creating new timers and logs an
690
+ // error.
691
+
692
+ void
693
+ zloop_set_max_timers (zloop_t *self, size_t max_timers)
694
+ {
695
+ assert (self);
696
+ self->max_timers = max_timers;
697
+ }
698
+
699
+
700
+ // --------------------------------------------------------------------------
701
+ // Start the reactor. Takes control of the thread and returns when the 0MQ
702
+ // context is terminated or the process is interrupted, or any event handler
703
+ // returns -1. Event handlers may register new sockets and timers, and
704
+ // cancel sockets. Returns 0 if interrupted, -1 if canceled by a handler,
705
+ // positive on internal error
706
+
707
+ int
708
+ zloop_start (zloop_t *self)
709
+ {
710
+ assert (self);
711
+ int rc = 0;
712
+
713
+ // Main reactor loop
714
+ while (!zsys_interrupted || self->nonstop) {
715
+ if (self->need_rebuild) {
716
+ // If s_rebuild_pollset() fails, break out of the loop and
717
+ // return its error
718
+ rc = s_rebuild_pollset (self);
719
+ if (rc)
720
+ break;
721
+ }
722
+ rc = zmq_poll (self->pollset, (int) self->poll_size, s_tickless (self));
723
+ if (rc == -1 || (zsys_interrupted && !self->nonstop)) {
724
+ if (self->verbose)
725
+ zsys_debug ("zloop: interrupted");
726
+ rc = 0;
727
+ break; // Context has been shut down
728
+ }
729
+
730
+ // Handle any timers that have now expired
731
+ int64_t time_now = zclock_mono ();
732
+ s_timer_t *timer = (s_timer_t *) zlistx_first (self->timers);
733
+ while (timer) {
734
+ if (time_now >= timer->when) {
735
+ if (self->verbose)
736
+ zsys_debug ("zloop: call timer handler id=%d", timer->timer_id);
737
+ rc = timer->handler (self, timer->timer_id, timer->arg);
738
+ if (rc == -1)
739
+ break; // Timer handler signaled break
740
+ if (timer->times && --timer->times == 0)
741
+ zlistx_delete (self->timers, timer->list_handle);
742
+ else
743
+ timer->when += timer->delay;
744
+ }
745
+ timer = (s_timer_t *) zlistx_next (self->timers);
746
+ }
747
+
748
+ // Handle any tickets that have now expired
749
+ s_ticket_t *ticket = (s_ticket_t *) zlistx_first (self->tickets);
750
+ while (ticket && time_now >= ticket->when) {
751
+ if (self->verbose)
752
+ zsys_debug ("zloop: call ticket handler");
753
+ if (!ticket->deleted
754
+ && ticket->handler (self, 0, ticket->arg) == -1) {
755
+ rc = -1; // Trigger exit from zloop_start
756
+ break; // Ticket handler signaled break
757
+ }
758
+ zlistx_delete (self->tickets, ticket->list_handle);
759
+ ticket = (s_ticket_t *) zlistx_next (self->tickets);
760
+ }
761
+
762
+ // Handle any tickets that were flagged for deletion
763
+ ticket = (s_ticket_t *) zlistx_last (self->tickets);
764
+ while (ticket && ticket->deleted) {
765
+ zlistx_delete (self->tickets, ticket->list_handle);
766
+ ticket = (s_ticket_t *) zlistx_last (self->tickets);
767
+ }
768
+
769
+ // Check if timers changed pollset
770
+ if (self->need_rebuild)
771
+ continue;
772
+
773
+ // Handle any readers and pollers that are ready
774
+ size_t item_nbr;
775
+ for (item_nbr = 0; item_nbr < self->poll_size && rc >= 0; item_nbr++) {
776
+ s_reader_t *reader = &self->readact [item_nbr];
777
+ if (reader->handler) {
778
+ if ((self->pollset [item_nbr].revents & ZMQ_POLLERR)
779
+ && !reader->tolerant) {
780
+ if (self->verbose)
781
+ zsys_warning ("zloop: can't read %s socket: %s",
782
+ zsock_type_str (reader->sock),
783
+ zmq_strerror (zmq_errno ()));
784
+ // Give handler one chance to handle error, then kill
785
+ // reader because it'll disrupt the reactor otherwise.
786
+ if (reader->errors++) {
787
+ zloop_reader_end (self, reader->sock);
788
+ self->pollset [item_nbr].revents = 0;
789
+ }
790
+ }
791
+ else
792
+ reader->errors = 0; // A non-error happened
793
+
794
+ if (self->pollset [item_nbr].revents) {
795
+ if (self->verbose)
796
+ zsys_debug ("zloop: call %s socket handler",
797
+ zsock_type_str (reader->sock));
798
+ rc = reader->handler (self, reader->sock, reader->arg);
799
+ if (rc == -1 || self->need_rebuild)
800
+ break;
801
+ }
802
+ }
803
+ else {
804
+ s_poller_t *poller = &self->pollact [item_nbr];
805
+ assert (self->pollset [item_nbr].socket == poller->item.socket);
806
+
807
+ if ((self->pollset [item_nbr].revents & ZMQ_POLLERR)
808
+ && !poller->tolerant) {
809
+ if (self->verbose)
810
+ zsys_warning ("zloop: can't poll %s socket (%p, %d): %s",
811
+ poller->item.socket?
812
+ zsys_sockname (zsock_type (poller->item.socket)): "FD",
813
+ poller->item.socket, poller->item.fd,
814
+ zmq_strerror (zmq_errno ()));
815
+ // Give handler one chance to handle error, then kill
816
+ // poller because it'll disrupt the reactor otherwise.
817
+ if (poller->errors++) {
818
+ zloop_poller_end (self, &poller->item);
819
+ self->pollset [item_nbr].revents = 0;
820
+ }
821
+ }
822
+ else
823
+ poller->errors = 0; // A non-error happened
824
+
825
+ if (self->pollset [item_nbr].revents) {
826
+ if (self->verbose)
827
+ zsys_debug ("zloop: call %s socket handler (%p, %d)",
828
+ poller->item.socket?
829
+ zsys_sockname (zsock_type (poller->item.socket)): "FD",
830
+ poller->item.socket, poller->item.fd);
831
+ rc = poller->handler (self, &self->pollset [item_nbr], poller->arg);
832
+ if (rc == -1 || self->need_rebuild)
833
+ break;
834
+ }
835
+ }
836
+ }
837
+ // Now handle any timer zombies
838
+ // This is going to be slow if we have many timers; we might use
839
+ // a faster lookup on the timer list.
840
+ while (zlistx_first (self->zombies)) {
841
+ // Get timer_id back from pointer
842
+ ptrdiff_t timer_id = (byte *) zlistx_detach (self->zombies, NULL) - (byte *) NULL;
843
+ s_timer_remove (self, (int) timer_id);
844
+ }
845
+ if (rc == -1)
846
+ break;
847
+ }
848
+ self->terminated = true;
849
+ return rc;
850
+ }
851
+
852
+
853
+ // --------------------------------------------------------------------------
854
+ // Selftest
855
+
856
+ static int
857
+ s_cancel_timer_event (zloop_t *loop, int timer_id, void *arg)
858
+ {
859
+ // We are handling timer 2, and will cancel timer 1
860
+ int cancel_timer_id = *((int *) arg);
861
+ return zloop_timer_end (loop, cancel_timer_id);
862
+ }
863
+
864
+
865
+ static int
866
+ s_timer_event (zloop_t *loop, int timer_id, void *output)
867
+ {
868
+ zstr_send (output, "PING");
869
+ return 0;
870
+ }
871
+
872
+ static int
873
+ s_socket_event (zloop_t *loop, zsock_t *handle, void *arg)
874
+ {
875
+ // Just end the reactor
876
+ return -1;
877
+ }
878
+
879
+ static int
880
+ s_timer_event3 (zloop_t *loop, int timer_id, void *called)
881
+ {
882
+ *((bool*) called) = true;
883
+ // end the reactor
884
+ return -1;
885
+ }
886
+
887
+ static int
888
+ s_socket_event1 (zloop_t *loop, zsock_t *reader, void *called)
889
+ {
890
+ *((bool*) called) = true;
891
+ // end the reactor
892
+ return -1;
893
+ }
894
+
895
+ static int
896
+ s_timer_event4 (zloop_t *loop, int timer_id, void *arg)
897
+ {
898
+ // Just end the looper
899
+ return -1;
900
+ }
901
+
902
+ static int
903
+ s_timer_event5 (zloop_t *loop, int timer_id, void *arg)
904
+ {
905
+ // remove reader from loop
906
+ zloop_reader_end(loop, (zsock_t *) arg);
907
+
908
+ // end reactor on next run
909
+ zloop_timer(loop, 1, 1, s_timer_event4, NULL);
910
+
911
+ return 0;
912
+ }
913
+
914
+ void
915
+ zloop_test (bool verbose)
916
+ {
917
+ printf (" * zloop: ");
918
+ int rc = 0;
919
+ // @selftest
920
+ // Create two PAIR sockets and connect over inproc
921
+ zsock_t *output = zsock_new (ZMQ_PAIR);
922
+ assert (output);
923
+ zsock_bind (output, "inproc://zloop.test");
924
+
925
+ zsock_t *input = zsock_new (ZMQ_PAIR);
926
+ assert (input);
927
+ zsock_connect (input, "inproc://zloop.test");
928
+
929
+ zloop_t *loop = zloop_new ();
930
+ assert (loop);
931
+ zloop_set_verbose (loop, verbose);
932
+
933
+ // Create a timer that will be cancelled
934
+ int timer_id = zloop_timer (loop, 1000, 1, s_timer_event, NULL);
935
+ zloop_timer (loop, 5, 1, s_cancel_timer_event, &timer_id);
936
+
937
+ // After 20 msecs, send a ping message to output3
938
+ zloop_timer (loop, 20, 1, s_timer_event, output);
939
+
940
+ // Set up some tickets that will never expire
941
+ zloop_set_ticket_delay (loop, 10000);
942
+ void *ticket1 = zloop_ticket (loop, s_timer_event, NULL);
943
+ void *ticket2 = zloop_ticket (loop, s_timer_event, NULL);
944
+ void *ticket3 = zloop_ticket (loop, s_timer_event, NULL);
945
+
946
+ // When we get the ping message, end the reactor
947
+ rc = zloop_reader (loop, input, s_socket_event, NULL);
948
+ assert (rc == 0);
949
+ zloop_reader_set_tolerant (loop, input);
950
+ zloop_start (loop);
951
+
952
+ zloop_ticket_delete (loop, ticket1);
953
+ zloop_ticket_delete (loop, ticket2);
954
+ zloop_ticket_delete (loop, ticket3);
955
+
956
+ // Check whether loop properly ignores zsys_interrupted flag
957
+ // when asked to
958
+ zloop_destroy (&loop);
959
+ loop = zloop_new ();
960
+
961
+ bool timer_event_called = false;
962
+ zloop_timer (loop, 1, 1, s_timer_event3, &timer_event_called);
963
+
964
+ zsys_interrupted = 1;
965
+ zloop_start (loop);
966
+ // zloop returns immediately without giving any handler a chance to run
967
+ assert (!timer_event_called);
968
+
969
+ zloop_set_nonstop (loop, true);
970
+ zloop_start (loop);
971
+ // zloop runs the handler which will terminate the loop
972
+ assert (timer_event_called);
973
+ zsys_interrupted = 0;
974
+
975
+ // Check if reader removed in timer is not called
976
+ zloop_destroy (&loop);
977
+ loop = zloop_new ();
978
+
979
+ bool socket_event_called = false;
980
+ zloop_reader (loop, output, s_socket_event1, &socket_event_called);
981
+ zloop_timer (loop, 0, 1, s_timer_event5, output);
982
+
983
+ zstr_send (input, "PING");
984
+
985
+ zloop_start (loop);
986
+ assert (!socket_event_called);
987
+
988
+ // cleanup
989
+ zloop_destroy (&loop);
990
+ assert (loop == NULL);
991
+
992
+ zsock_destroy (&input);
993
+ zsock_destroy (&output);
994
+
995
+ #if defined (__WINDOWS__)
996
+ zsys_shutdown();
997
+ #endif
998
+ // @end
999
+ printf ("OK\n");
1000
+ }