laag-libczmq 4.1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }