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,57 @@
1
+ <class
2
+ name = "zgossip"
3
+ title = "zgossip server"
4
+ script = "zproto_server_c"
5
+ protocol_class = "zgossip_msg"
6
+ project_header = "../include/czmq.h"
7
+ export_macro = "CZMQ_EXPORT"
8
+ >
9
+ This is a server implementation of the ZeroMQ Gossip Discovery Protocol
10
+ <include filename = "../license.xml" />
11
+
12
+ <state name = "start" inherit = "external">
13
+ <!-- Peer says HELLO and we send it all known tuples -->
14
+ <event name = "HELLO" next = "have tuple">
15
+ <action name = "get first tuple" />
16
+ </event>
17
+ </state>
18
+
19
+ <state name = "have tuple">
20
+ <event name = "ok">
21
+ <action name = "send" message = "PUBLISH" />
22
+ <action name = "get next tuple" />
23
+ </event>
24
+ <event name = "finished" next = "connected" />
25
+ </state>
26
+
27
+ <state name = "connected" inherit = "external">
28
+ <!-- Peer publishes a new tuple -->
29
+ <event name = "PUBLISH">
30
+ <action name = "store tuple if new" />
31
+ </event>
32
+ <!-- Forward a new tuple to this client -->
33
+ <event name = "forward">
34
+ <action name = "get tuple to forward" />
35
+ <action name = "send" message = "PUBLISH" />
36
+ </event>
37
+ </state>
38
+
39
+ <!-- Superstate for external states -->
40
+ <state name = "external">
41
+ <!-- Peer signals it's alive -->
42
+ <event name = "PING">
43
+ <action name = "send" message = "PONG" />
44
+ </event>
45
+
46
+ <!-- All other protocol messages are invalid -->
47
+ <event name = "*">
48
+ <action name = "send" message = "INVALID" />
49
+ <action name = "terminate" />
50
+ </event>
51
+
52
+ <!-- This built-in event hits on a client timeout -->
53
+ <event name = "expired">
54
+ <action name = "terminate" />
55
+ </event>
56
+ </state>
57
+ </class>
@@ -0,0 +1,1008 @@
1
+ /* =========================================================================
2
+ zgossip_engine - zgossip engine
3
+
4
+ ** WARNING *************************************************************
5
+ THIS SOURCE FILE IS 100% GENERATED. If you edit this file, you will lose
6
+ your changes at the next build cycle. This is great for temporary printf
7
+ statements. DO NOT MAKE ANY CHANGES YOU WISH TO KEEP. The correct places
8
+ for commits are:
9
+
10
+ * The XML model used for this code generation: zgossip.xml, or
11
+ * The code generation script that built this file: zproto_server_c
12
+ ************************************************************************
13
+ Copyright (c) the Contributors as noted in the AUTHORS file.
14
+ This file is part of CZMQ, the high-level C binding for 0MQ:
15
+ http://czmq.zeromq.org.
16
+
17
+ This Source Code Form is subject to the terms of the Mozilla Public
18
+ License, v. 2.0. If a copy of the MPL was not distributed with this
19
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
20
+ =========================================================================
21
+ */
22
+
23
+ #ifdef NDEBUG
24
+ #undef NDEBUG
25
+ #endif
26
+
27
+ #define ZPROTO_UNUSED(object) (void)object
28
+
29
+ // ---------------------------------------------------------------------------
30
+ // State machine constants
31
+
32
+ typedef enum {
33
+ start_state = 1,
34
+ have_tuple_state = 2,
35
+ connected_state = 3,
36
+ external_state = 4
37
+ } state_t;
38
+
39
+ typedef enum {
40
+ NULL_event = 0,
41
+ terminate_event = 1,
42
+ hello_event = 2,
43
+ ok_event = 3,
44
+ finished_event = 4,
45
+ publish_event = 5,
46
+ forward_event = 6,
47
+ ping_event = 7,
48
+ expired_event = 8
49
+ } event_t;
50
+
51
+ // Names for state machine logging and error reporting
52
+ static char *
53
+ s_state_name [] = {
54
+ "(NONE)",
55
+ "start",
56
+ "have tuple",
57
+ "connected",
58
+ "external"
59
+ };
60
+
61
+ static char *
62
+ s_event_name [] = {
63
+ "(NONE)",
64
+ "terminate",
65
+ "HELLO",
66
+ "ok",
67
+ "finished",
68
+ "PUBLISH",
69
+ "forward",
70
+ "PING",
71
+ "expired"
72
+ };
73
+
74
+ // ---------------------------------------------------------------------------
75
+ // Context for the whole server task. This embeds the application-level
76
+ // server context at its start (the entire structure, not a reference),
77
+ // so we can cast a pointer between server_t and s_server_t arbitrarily.
78
+
79
+ typedef struct {
80
+ server_t server; // Application-level server context
81
+ zsock_t *pipe; // Socket to back to caller API
82
+ zsock_t *router; // Socket to talk to clients
83
+ int port; // Server port bound to
84
+ zloop_t *loop; // Reactor for server sockets
85
+ zgossip_msg_t *message; // Message received or sent
86
+ zhash_t *clients; // Clients we're connected to
87
+ zconfig_t *config; // Configuration tree
88
+ uint client_id; // Client identifier counter
89
+ size_t timeout; // Default client expiry timeout
90
+ bool verbose; // Verbose logging enabled?
91
+ char *log_prefix; // Default log prefix
92
+ } s_server_t;
93
+
94
+
95
+ // ---------------------------------------------------------------------------
96
+ // Context for each connected client. This embeds the application-level
97
+ // client context at its start (the entire structure, not a reference),
98
+ // so we can cast a pointer between client_t and s_client_t arbitrarily.
99
+
100
+ typedef struct {
101
+ client_t client; // Application-level client context
102
+ s_server_t *server; // Parent server context
103
+ char *hashkey; // Key into server->clients hash
104
+ zframe_t *routing_id; // Routing_id back to client
105
+ uint unique_id; // Client identifier in server
106
+ state_t state; // Current state
107
+ event_t event; // Current event
108
+ event_t next_event; // The next event
109
+ event_t exception; // Exception event, if any
110
+ int wakeup; // zloop timer for client alarms
111
+ void *ticket; // zloop ticket for client timeouts
112
+ event_t wakeup_event; // Wake up with this event
113
+ char log_prefix [41]; // Log prefix string
114
+ } s_client_t;
115
+
116
+ static int
117
+ server_initialize (server_t *self);
118
+ static void
119
+ server_terminate (server_t *self);
120
+ static zmsg_t *
121
+ server_method (server_t *self, const char *method, zmsg_t *msg);
122
+ static void
123
+ server_configuration (server_t *self, zconfig_t *config);
124
+ static int
125
+ client_initialize (client_t *self);
126
+ static void
127
+ client_terminate (client_t *self);
128
+ static void
129
+ s_server_config_global (s_server_t *server);
130
+ static void
131
+ s_client_execute (s_client_t *client, event_t event);
132
+ static int
133
+ s_client_handle_wakeup (zloop_t *loop, int timer_id, void *argument);
134
+ static int
135
+ s_client_handle_ticket (zloop_t *loop, int timer_id, void *argument);
136
+ static void
137
+ get_first_tuple (client_t *self);
138
+ static void
139
+ get_next_tuple (client_t *self);
140
+ static void
141
+ store_tuple_if_new (client_t *self);
142
+ static void
143
+ get_tuple_to_forward (client_t *self);
144
+
145
+ // ---------------------------------------------------------------------------
146
+ // These methods are an internal API for actions
147
+
148
+ // Set the next event, needed in at least one action in an internal
149
+ // state; otherwise the state machine will wait for a message on the
150
+ // router socket and treat that as the event.
151
+
152
+ static void
153
+ engine_set_next_event (client_t *client, event_t event)
154
+ {
155
+ if (client) {
156
+ s_client_t *self = (s_client_t *) client;
157
+ self->next_event = event;
158
+ }
159
+ }
160
+
161
+ // Raise an exception with 'event', halting any actions in progress.
162
+ // Continues execution of actions defined for the exception event.
163
+
164
+ static void
165
+ engine_set_exception (client_t *client, event_t event)
166
+ {
167
+ if (client) {
168
+ s_client_t *self = (s_client_t *) client;
169
+ self->exception = event;
170
+ }
171
+ }
172
+
173
+ // Set wakeup alarm after 'delay' msecs. The next state should
174
+ // handle the wakeup event. The alarm is cancelled on any other
175
+ // event.
176
+
177
+ static void
178
+ engine_set_wakeup_event (client_t *client, size_t delay, event_t event)
179
+ {
180
+ if (client) {
181
+ s_client_t *self = (s_client_t *) client;
182
+ if (self->wakeup) {
183
+ zloop_timer_end (self->server->loop, self->wakeup);
184
+ self->wakeup = 0;
185
+ }
186
+ self->wakeup = zloop_timer (
187
+ self->server->loop, delay, 1, s_client_handle_wakeup, self);
188
+ self->wakeup_event = event;
189
+ }
190
+ }
191
+
192
+ // Execute 'event' on specified client. Use this to send events to
193
+ // other clients. Cancels any wakeup alarm on that client.
194
+
195
+ static void
196
+ engine_send_event (client_t *client, event_t event)
197
+ {
198
+ if (client) {
199
+ s_client_t *self = (s_client_t *) client;
200
+ s_client_execute (self, event);
201
+ }
202
+ }
203
+
204
+ // Execute 'event' on all clients known to the server. If you pass a
205
+ // client argument, that client will not receive the broadcast. If you
206
+ // want to pass any arguments, store them in the server context.
207
+
208
+ static void
209
+ engine_broadcast_event (server_t *server, client_t *client, event_t event)
210
+ {
211
+ if (server) {
212
+ s_server_t *self = (s_server_t *) server;
213
+ zlist_t *keys = zhash_keys (self->clients);
214
+ char *key = (char *) zlist_first (keys);
215
+ while (key) {
216
+ s_client_t *target = (s_client_t *) zhash_lookup (self->clients, key);
217
+ if (target != (s_client_t *) client)
218
+ s_client_execute (target, event);
219
+ key = (char *) zlist_next (keys);
220
+ }
221
+ zlist_destroy (&keys);
222
+ }
223
+ }
224
+
225
+ // Poll actor or zsock for activity, invoke handler on any received
226
+ // message. Handler must be a CZMQ zloop_fn function; receives server
227
+ // as arg.
228
+
229
+ static void
230
+ engine_handle_socket (server_t *server, void *sock, zloop_reader_fn handler)
231
+ {
232
+ if (server) {
233
+ s_server_t *self = (s_server_t *) server;
234
+ // Resolve zactor_t -> zsock_t
235
+ if (zactor_is (sock))
236
+ sock = zactor_sock ((zactor_t *) sock);
237
+ else
238
+ assert (zsock_is (sock));
239
+ if (handler != NULL) {
240
+ int rc = zloop_reader (self->loop, (zsock_t *) sock, handler, self);
241
+ assert (rc == 0);
242
+ zloop_reader_set_tolerant (self->loop, (zsock_t *) sock);
243
+ }
244
+ else
245
+ zloop_reader_end (self->loop, (zsock_t *) sock);
246
+ }
247
+ }
248
+
249
+ // Register monitor function that will be called at regular intervals
250
+ // by the server engine. Returns an identifier that can be used to cancel it.
251
+
252
+ static int
253
+ engine_set_monitor (server_t *server, size_t interval, zloop_timer_fn monitor)
254
+ {
255
+ if (server) {
256
+ s_server_t *self = (s_server_t *) server;
257
+ int rc = zloop_timer (self->loop, interval, 0, monitor, self);
258
+ assert (rc >= 0);
259
+ return rc;
260
+ }
261
+
262
+ return -1;
263
+ }
264
+
265
+ // Cancel the monitor function with the given identifier.
266
+ static void
267
+ engine_cancel_monitor (server_t *server, int identifier)
268
+ {
269
+ if (server) {
270
+ s_server_t *self = (s_server_t *) server;
271
+ int rc = zloop_timer_end (self->loop, identifier);
272
+ assert (rc >= 0);
273
+ }
274
+ }
275
+
276
+ // Set log file prefix; this string will be added to log data, to make
277
+ // log data more searchable. The string is truncated to ~20 chars.
278
+
279
+ static void
280
+ engine_set_log_prefix (client_t *client, const char *string)
281
+ {
282
+ if (client) {
283
+ s_client_t *self = (s_client_t *) client;
284
+ snprintf (self->log_prefix, sizeof (self->log_prefix),
285
+ "%6d:%-33s", self->unique_id, string);
286
+ }
287
+ }
288
+
289
+ // Set a configuration value in the server's configuration tree. The
290
+ // properties this engine uses are: server/verbose, server/timeout, and
291
+ // server/background. You can also configure other abitrary properties.
292
+
293
+ static void
294
+ engine_configure (server_t *server, const char *path, const char *value)
295
+ {
296
+ if (server) {
297
+ s_server_t *self = (s_server_t *) server;
298
+ zconfig_put (self->config, path, value);
299
+ s_server_config_global (self);
300
+ }
301
+ }
302
+
303
+ // Return true if server is running in verbose mode, else return false.
304
+
305
+ static bool
306
+ engine_verbose (server_t *server)
307
+ {
308
+ if (server) {
309
+ s_server_t *self = (s_server_t *) server;
310
+ return self->verbose;
311
+ }
312
+ return false;
313
+ }
314
+
315
+ // Pedantic compilers don't like unused functions, so we call the whole
316
+ // API, passing null references. It's nasty and horrid and sufficient.
317
+
318
+ static void
319
+ s_satisfy_pedantic_compilers (void)
320
+ {
321
+ engine_set_next_event (NULL, NULL_event);
322
+ engine_set_exception (NULL, NULL_event);
323
+ engine_set_wakeup_event (NULL, 0, NULL_event);
324
+ engine_send_event (NULL, NULL_event);
325
+ engine_broadcast_event (NULL, NULL, NULL_event);
326
+ engine_handle_socket (NULL, 0, NULL);
327
+ engine_set_monitor (NULL, 0, NULL);
328
+ engine_cancel_monitor (NULL, 0);
329
+ engine_set_log_prefix (NULL, NULL);
330
+ engine_configure (NULL, NULL, NULL);
331
+ engine_verbose (NULL);
332
+ }
333
+
334
+
335
+ // ---------------------------------------------------------------------------
336
+ // Generic methods on protocol messages
337
+ // TODO: replace with lookup table, since ID is one byte
338
+
339
+ static event_t
340
+ s_protocol_event (zgossip_msg_t *message)
341
+ {
342
+ assert (message);
343
+ switch (zgossip_msg_id (message)) {
344
+ case ZGOSSIP_MSG_HELLO:
345
+ return hello_event;
346
+ break;
347
+ case ZGOSSIP_MSG_PUBLISH:
348
+ return publish_event;
349
+ break;
350
+ case ZGOSSIP_MSG_PING:
351
+ return ping_event;
352
+ break;
353
+ default:
354
+ // Invalid zgossip_msg_t
355
+ return terminate_event;
356
+ }
357
+ }
358
+
359
+
360
+ // ---------------------------------------------------------------------------
361
+ // Client methods
362
+
363
+ static s_client_t *
364
+ s_client_new (s_server_t *server, zframe_t *routing_id)
365
+ {
366
+ s_client_t *self = (s_client_t *) zmalloc (sizeof (s_client_t));
367
+ assert (self);
368
+ assert ((s_client_t *) &self->client == self);
369
+
370
+ self->server = server;
371
+ self->hashkey = zframe_strhex (routing_id);
372
+ self->routing_id = zframe_dup (routing_id);
373
+ self->unique_id = server->client_id++;
374
+ engine_set_log_prefix (&self->client, server->log_prefix);
375
+
376
+ self->client.server = (server_t *) server;
377
+ self->client.message = server->message;
378
+
379
+ // If expiry timers are being used, create client ticket
380
+ if (server->timeout)
381
+ self->ticket = zloop_ticket (server->loop, s_client_handle_ticket, self);
382
+ // Give application chance to initialize and set next event
383
+ self->state = start_state;
384
+ self->event = NULL_event;
385
+ client_initialize (&self->client);
386
+ return self;
387
+ }
388
+
389
+ static void
390
+ s_client_destroy (s_client_t **self_p)
391
+ {
392
+ assert (self_p);
393
+ if (*self_p) {
394
+ s_client_t *self = *self_p;
395
+ if (self->wakeup)
396
+ zloop_timer_end (self->server->loop, self->wakeup);
397
+ if (self->ticket)
398
+ zloop_ticket_delete (self->server->loop, self->ticket);
399
+ zframe_destroy (&self->routing_id);
400
+ // Provide visual clue if application misuses client reference
401
+ engine_set_log_prefix (&self->client, "*** TERMINATED ***");
402
+ client_terminate (&self->client);
403
+ free (self->hashkey);
404
+ free (self);
405
+ *self_p = NULL;
406
+ }
407
+ }
408
+
409
+ // Callback when we remove client from 'clients' hash table
410
+ static void
411
+ s_client_free (void *argument)
412
+ {
413
+ s_client_t *client = (s_client_t *) argument;
414
+ s_client_destroy (&client);
415
+ }
416
+
417
+
418
+ // Execute state machine as long as we have events
419
+
420
+ static void
421
+ s_client_execute (s_client_t *self, event_t event)
422
+ {
423
+ self->next_event = event;
424
+ // Cancel wakeup timer, if any was pending
425
+ if (self->wakeup) {
426
+ zloop_timer_end (self->server->loop, self->wakeup);
427
+ self->wakeup = 0;
428
+ }
429
+ while (self->next_event > 0) {
430
+ self->event = self->next_event;
431
+ self->next_event = NULL_event;
432
+ self->exception = NULL_event;
433
+ if (self->server->verbose) {
434
+ zsys_debug ("%s: %s:",
435
+ self->log_prefix, s_state_name [self->state]);
436
+ zsys_debug ("%s: %s",
437
+ self->log_prefix, s_event_name [self->event]);
438
+ }
439
+ switch (self->state) {
440
+ case start_state:
441
+ if (self->event == hello_event) {
442
+ if (!self->exception) {
443
+ // get first tuple
444
+ if (self->server->verbose)
445
+ zsys_debug ("%s: $ get first tuple", self->log_prefix);
446
+ get_first_tuple (&self->client);
447
+ }
448
+ if (!self->exception)
449
+ self->state = have_tuple_state;
450
+ }
451
+ else
452
+ if (self->event == ping_event) {
453
+ if (!self->exception) {
454
+ // send PONG
455
+ if (self->server->verbose)
456
+ zsys_debug ("%s: $ send PONG",
457
+ self->log_prefix);
458
+ zgossip_msg_set_id (self->server->message, ZGOSSIP_MSG_PONG);
459
+ zgossip_msg_set_routing_id (self->server->message, self->routing_id);
460
+ zgossip_msg_send (self->server->message, self->server->router);
461
+ }
462
+ }
463
+ else
464
+ if (self->event == expired_event) {
465
+ if (!self->exception) {
466
+ // terminate
467
+ if (self->server->verbose)
468
+ zsys_debug ("%s: $ terminate", self->log_prefix);
469
+ self->next_event = terminate_event;
470
+ }
471
+ }
472
+ else {
473
+ // Handle unexpected protocol events
474
+ if (!self->exception) {
475
+ // send INVALID
476
+ if (self->server->verbose)
477
+ zsys_debug ("%s: $ send INVALID",
478
+ self->log_prefix);
479
+ zgossip_msg_set_id (self->server->message, ZGOSSIP_MSG_INVALID);
480
+ zgossip_msg_set_routing_id (self->server->message, self->routing_id);
481
+ zgossip_msg_send (self->server->message, self->server->router);
482
+ }
483
+ if (!self->exception) {
484
+ // terminate
485
+ if (self->server->verbose)
486
+ zsys_debug ("%s: $ terminate", self->log_prefix);
487
+ self->next_event = terminate_event;
488
+ }
489
+ }
490
+ break;
491
+
492
+ case have_tuple_state:
493
+ if (self->event == ok_event) {
494
+ if (!self->exception) {
495
+ // send PUBLISH
496
+ if (self->server->verbose)
497
+ zsys_debug ("%s: $ send PUBLISH",
498
+ self->log_prefix);
499
+ zgossip_msg_set_id (self->server->message, ZGOSSIP_MSG_PUBLISH);
500
+ zgossip_msg_set_routing_id (self->server->message, self->routing_id);
501
+ zgossip_msg_send (self->server->message, self->server->router);
502
+ }
503
+ if (!self->exception) {
504
+ // get next tuple
505
+ if (self->server->verbose)
506
+ zsys_debug ("%s: $ get next tuple", self->log_prefix);
507
+ get_next_tuple (&self->client);
508
+ }
509
+ }
510
+ else
511
+ if (self->event == finished_event) {
512
+ if (!self->exception)
513
+ self->state = connected_state;
514
+ }
515
+ else {
516
+ // Handle unexpected internal events
517
+ zsys_warning ("%s: unhandled event %s in %s",
518
+ self->log_prefix,
519
+ s_event_name [self->event],
520
+ s_state_name [self->state]);
521
+ assert (false);
522
+ }
523
+ break;
524
+
525
+ case connected_state:
526
+ if (self->event == publish_event) {
527
+ if (!self->exception) {
528
+ // store tuple if new
529
+ if (self->server->verbose)
530
+ zsys_debug ("%s: $ store tuple if new", self->log_prefix);
531
+ store_tuple_if_new (&self->client);
532
+ }
533
+ }
534
+ else
535
+ if (self->event == forward_event) {
536
+ if (!self->exception) {
537
+ // get tuple to forward
538
+ if (self->server->verbose)
539
+ zsys_debug ("%s: $ get tuple to forward", self->log_prefix);
540
+ get_tuple_to_forward (&self->client);
541
+ }
542
+ if (!self->exception) {
543
+ // send PUBLISH
544
+ if (self->server->verbose)
545
+ zsys_debug ("%s: $ send PUBLISH",
546
+ self->log_prefix);
547
+ zgossip_msg_set_id (self->server->message, ZGOSSIP_MSG_PUBLISH);
548
+ zgossip_msg_set_routing_id (self->server->message, self->routing_id);
549
+ zgossip_msg_send (self->server->message, self->server->router);
550
+ }
551
+ }
552
+ else
553
+ if (self->event == ping_event) {
554
+ if (!self->exception) {
555
+ // send PONG
556
+ if (self->server->verbose)
557
+ zsys_debug ("%s: $ send PONG",
558
+ self->log_prefix);
559
+ zgossip_msg_set_id (self->server->message, ZGOSSIP_MSG_PONG);
560
+ zgossip_msg_set_routing_id (self->server->message, self->routing_id);
561
+ zgossip_msg_send (self->server->message, self->server->router);
562
+ }
563
+ }
564
+ else
565
+ if (self->event == expired_event) {
566
+ if (!self->exception) {
567
+ // terminate
568
+ if (self->server->verbose)
569
+ zsys_debug ("%s: $ terminate", self->log_prefix);
570
+ self->next_event = terminate_event;
571
+ }
572
+ }
573
+ else {
574
+ // Handle unexpected protocol events
575
+ if (!self->exception) {
576
+ // send INVALID
577
+ if (self->server->verbose)
578
+ zsys_debug ("%s: $ send INVALID",
579
+ self->log_prefix);
580
+ zgossip_msg_set_id (self->server->message, ZGOSSIP_MSG_INVALID);
581
+ zgossip_msg_set_routing_id (self->server->message, self->routing_id);
582
+ zgossip_msg_send (self->server->message, self->server->router);
583
+ }
584
+ if (!self->exception) {
585
+ // terminate
586
+ if (self->server->verbose)
587
+ zsys_debug ("%s: $ terminate", self->log_prefix);
588
+ self->next_event = terminate_event;
589
+ }
590
+ }
591
+ break;
592
+
593
+ case external_state:
594
+ if (self->event == ping_event) {
595
+ if (!self->exception) {
596
+ // send PONG
597
+ if (self->server->verbose)
598
+ zsys_debug ("%s: $ send PONG",
599
+ self->log_prefix);
600
+ zgossip_msg_set_id (self->server->message, ZGOSSIP_MSG_PONG);
601
+ zgossip_msg_set_routing_id (self->server->message, self->routing_id);
602
+ zgossip_msg_send (self->server->message, self->server->router);
603
+ }
604
+ }
605
+ else
606
+ if (self->event == expired_event) {
607
+ if (!self->exception) {
608
+ // terminate
609
+ if (self->server->verbose)
610
+ zsys_debug ("%s: $ terminate", self->log_prefix);
611
+ self->next_event = terminate_event;
612
+ }
613
+ }
614
+ else {
615
+ // Handle unexpected protocol events
616
+ if (!self->exception) {
617
+ // send INVALID
618
+ if (self->server->verbose)
619
+ zsys_debug ("%s: $ send INVALID",
620
+ self->log_prefix);
621
+ zgossip_msg_set_id (self->server->message, ZGOSSIP_MSG_INVALID);
622
+ zgossip_msg_set_routing_id (self->server->message, self->routing_id);
623
+ zgossip_msg_send (self->server->message, self->server->router);
624
+ }
625
+ if (!self->exception) {
626
+ // terminate
627
+ if (self->server->verbose)
628
+ zsys_debug ("%s: $ terminate", self->log_prefix);
629
+ self->next_event = terminate_event;
630
+ }
631
+ }
632
+ break;
633
+ }
634
+ // If we had an exception event, interrupt normal programming
635
+ if (self->exception) {
636
+ if (self->server->verbose)
637
+ zsys_debug ("%s: ! %s",
638
+ self->log_prefix, s_event_name [self->exception]);
639
+
640
+ self->next_event = self->exception;
641
+ }
642
+ if (self->next_event == terminate_event) {
643
+ // Automatically calls s_client_destroy
644
+ zhash_delete (self->server->clients, self->hashkey);
645
+ break;
646
+ }
647
+ else
648
+ if (self->server->verbose)
649
+ zsys_debug ("%s: > %s",
650
+ self->log_prefix, s_state_name [self->state]);
651
+ }
652
+ }
653
+
654
+ // zloop callback when client ticket expires
655
+
656
+ static int
657
+ s_client_handle_ticket (zloop_t *loop, int timer_id, void *argument)
658
+ {
659
+ s_client_t *self = (s_client_t *) argument;
660
+ self->ticket = NULL; // Ticket is now dead
661
+ s_client_execute (self, expired_event);
662
+ return 0;
663
+ }
664
+
665
+ // zloop callback when client wakeup timer expires
666
+
667
+ static int
668
+ s_client_handle_wakeup (zloop_t *loop, int timer_id, void *argument)
669
+ {
670
+ ZPROTO_UNUSED(loop);
671
+ ZPROTO_UNUSED(timer_id);
672
+ s_client_t *self = (s_client_t *) argument;
673
+ s_client_execute (self, self->wakeup_event);
674
+ return 0;
675
+ }
676
+
677
+
678
+ // Server methods
679
+
680
+ static void
681
+ s_server_config_global (s_server_t *self)
682
+ {
683
+ // Built-in server configuration options
684
+ //
685
+ // If we didn't already set verbose, check if the config tree wants it
686
+ if (!self->verbose
687
+ && atoi (zconfig_get (self->config, "server/verbose", "0")))
688
+ self->verbose = true;
689
+
690
+ // Default client timeout is 60 seconds
691
+ self->timeout = atoi (
692
+ zconfig_get (self->config, "server/timeout", "60000"));
693
+ zloop_set_ticket_delay (self->loop, self->timeout);
694
+
695
+ // Do we want to run server in the background?
696
+ int background = atoi (
697
+ zconfig_get (self->config, "server/background", "0"));
698
+ if (!background)
699
+ zsys_set_logstream (stdout);
700
+ }
701
+
702
+ static s_server_t *
703
+ s_server_new (zsock_t *pipe)
704
+ {
705
+ s_server_t *self = (s_server_t *) zmalloc (sizeof (s_server_t));
706
+ assert (self);
707
+ assert ((s_server_t *) &self->server == self);
708
+
709
+ self->pipe = pipe;
710
+ self->router = zsock_new (ZMQ_ROUTER);
711
+ assert (self->router);
712
+ // By default the socket will discard outgoing messages above the
713
+ // HWM of 1,000. This isn't helpful for high-volume streaming. We
714
+ // will use a unbounded queue here. If applications need to guard
715
+ // against queue overflow, they should use a credit-based flow
716
+ // control scheme.
717
+ zsock_set_unbounded (self->router);
718
+ self->message = zgossip_msg_new ();
719
+ self->clients = zhash_new ();
720
+ self->config = zconfig_new ("root", NULL);
721
+ self->loop = zloop_new ();
722
+ srandom ((unsigned int) zclock_time ());
723
+ self->client_id = randof (1000);
724
+ s_server_config_global (self);
725
+
726
+ // Initialize application server context
727
+ self->server.pipe = self->pipe;
728
+ self->server.config = self->config;
729
+ server_initialize (&self->server);
730
+
731
+ s_satisfy_pedantic_compilers ();
732
+ return self;
733
+ }
734
+
735
+ static void
736
+ s_server_destroy (s_server_t **self_p)
737
+ {
738
+ assert (self_p);
739
+ if (*self_p) {
740
+ s_server_t *self = *self_p;
741
+ zgossip_msg_destroy (&self->message);
742
+ // Destroy clients before destroying the server
743
+ zhash_destroy (&self->clients);
744
+ server_terminate (&self->server);
745
+ zsock_destroy (&self->router);
746
+ zconfig_destroy (&self->config);
747
+ zloop_destroy (&self->loop);
748
+ free (self);
749
+ *self_p = NULL;
750
+ }
751
+ }
752
+
753
+ // Apply service-specific configuration tree:
754
+ // * apply server configuration
755
+ // * print any echo items in top-level sections
756
+ // * apply sections that match methods
757
+
758
+ static void
759
+ s_server_config_service (s_server_t *self)
760
+ {
761
+ // Apply echo commands and class methods
762
+ zconfig_t *section = zconfig_locate (self->config, "zgossip");
763
+ if (section)
764
+ section = zconfig_child (section);
765
+
766
+ while (section) {
767
+ if (streq (zconfig_name (section), "echo"))
768
+ zsys_notice ("%s", zconfig_value (section));
769
+ else
770
+ if (streq (zconfig_name (section), "bind")) {
771
+ char *endpoint = zconfig_get (section, "endpoint", "?");
772
+ if (zsock_bind (self->router, "%s", endpoint) == -1)
773
+ zsys_warning ("could not bind to %s (%s)", endpoint, zmq_strerror (zmq_errno ()));
774
+ }
775
+ #if (ZMQ_VERSION_MAJOR >= 4)
776
+ else
777
+ if (streq (zconfig_name (section), "security")) {
778
+ char *mechanism = zconfig_get (section, "mechanism", "null");
779
+ char *domain = zconfig_get (section, "domain", NULL);
780
+ if (streq (mechanism, "null")) {
781
+ zsys_notice ("server is using NULL security");
782
+ if (domain)
783
+ zsock_set_zap_domain (self->router, NULL);
784
+ }
785
+ else
786
+ if (streq (mechanism, "plain")) {
787
+ zsys_notice ("server is using PLAIN security");
788
+ zsock_set_plain_server (self->router, 1);
789
+ }
790
+ #ifdef CZMQ_BUILD_DRAFT_API
791
+ // TODO- zproto
792
+ // https://github.com/zeromq/zproto/blob/master/src/zproto_server_c.gsl#L883
793
+ else
794
+ if (streq (mechanism, "curve")) {
795
+ zsys_notice ("using CURVE security");
796
+ const char *keyfile = zconfig_get (section, "secret-key", NULL);
797
+ assert (keyfile);
798
+
799
+ zcert_t *server_cert = zcert_load(keyfile);
800
+ assert (server_cert);
801
+
802
+ zcert_apply (server_cert, self->router);
803
+ zsock_set_curve_server (self->router, 1);
804
+ }
805
+ #endif
806
+ else
807
+ zsys_warning ("mechanism=%s is not supported", mechanism);
808
+ }
809
+ #endif
810
+ section = zconfig_next (section);
811
+ }
812
+ s_server_config_global (self);
813
+ }
814
+
815
+ // Process message from pipe
816
+
817
+ static int
818
+ s_server_handle_pipe (zloop_t *loop, zsock_t *reader, void *argument)
819
+ {
820
+ ZPROTO_UNUSED(loop);
821
+ ZPROTO_UNUSED(reader);
822
+
823
+ s_server_t *self = (s_server_t *) argument;
824
+ zmsg_t *msg = zmsg_recv (self->pipe);
825
+ if (!msg)
826
+ return -1; // Interrupted; exit zloop
827
+ char *method = zmsg_popstr (msg);
828
+ if (self->verbose)
829
+ zsys_debug ("%s: API command=%s", self->log_prefix, method);
830
+
831
+ if (streq (method, "VERBOSE"))
832
+ self->verbose = true;
833
+ else
834
+ if (streq (method, "$TERM")) {
835
+ // Shutdown the engine
836
+ zstr_free (&method);
837
+ zmsg_destroy (&msg);
838
+ return -1;
839
+ }
840
+ else
841
+ if (streq (method, "BIND")) {
842
+ // Bind to a specified endpoint, which may use an ephemeral port
843
+ char *endpoint = zmsg_popstr (msg);
844
+
845
+ #ifdef CZMQ_BUILD_DRAFT_API
846
+ // TODO- expose self->router to application context ?
847
+ // Add secret|public|zap to gsl(?)
848
+ // move this block to custom server function when both keys are present
849
+ if (self->server.secret_key) {
850
+ zsock_set_zap_domain (self->router, self->server.zap_domain);
851
+ zcert_t *cert = zcert_new_from_txt(self->server.public_key, self->server.secret_key);
852
+ zcert_apply(cert, self->router);
853
+ zsock_set_curve_server (self->router, 1);
854
+ zcert_destroy(&cert);
855
+ }
856
+ // TODO- add this test in zproto_server_c.gsl
857
+ #ifndef ZMQ_CURVE
858
+ // zmq legacy
859
+ bool ZMQ_CURVE = false;
860
+ #endif
861
+ if (self->server.secret_key)
862
+ assert (zsock_mechanism (self->router) == ZMQ_CURVE);
863
+ #endif
864
+ self->port = zsock_bind (self->router, "%s", endpoint);
865
+ if (self->port == -1)
866
+ zsys_warning ("could not bind to %s", endpoint);
867
+ zstr_free (&endpoint);
868
+ }
869
+ else
870
+ if (streq (method, "PORT")) {
871
+ // Return PORT + port number from the last bind, if any
872
+ zstr_sendm (self->pipe, "PORT");
873
+ zstr_sendf (self->pipe, "%d", self->port);
874
+ }
875
+ else // Deprecated method name
876
+ if (streq (method, "LOAD") || streq (method, "CONFIGURE")) {
877
+ char *filename = zmsg_popstr (msg);
878
+ zconfig_destroy (&self->config);
879
+ self->config = zconfig_load (filename);
880
+ if (self->config) {
881
+ s_server_config_service (self);
882
+ self->server.config = self->config;
883
+ server_configuration (&self->server, self->config);
884
+ }
885
+ else {
886
+ zsys_warning ("cannot load config file '%s'", filename);
887
+ self->config = zconfig_new ("root", NULL);
888
+ }
889
+ zstr_free (&filename);
890
+ }
891
+ else
892
+ if (streq (method, "SET")) {
893
+ char *path = zmsg_popstr (msg);
894
+ char *value = zmsg_popstr (msg);
895
+ zconfig_put (self->config, path, value);
896
+ if (streq (path, "server/animate")) {
897
+ zsys_warning ("'%s' is deprecated, use VERBOSE command instead", path);
898
+ self->verbose = (atoi (value) == 1);
899
+ }
900
+ s_server_config_global (self);
901
+ zstr_free (&value);
902
+ zstr_free (&path);
903
+ }
904
+ else
905
+ if (streq (method, "SAVE")) {
906
+ char *filename = zmsg_popstr (msg);
907
+ if (zconfig_save (self->config, filename))
908
+ zsys_warning ("cannot save config file '%s'", filename);
909
+ zstr_free (&filename);
910
+ }
911
+ else {
912
+ // Execute custom method
913
+ zmsg_t *reply = server_method (&self->server, method, msg);
914
+ // If reply isn't null, send it to caller
915
+ zmsg_send (&reply, self->pipe);
916
+ }
917
+ zstr_free (&method);
918
+ zmsg_destroy (&msg);
919
+ return 0;
920
+ }
921
+
922
+ // Handle a protocol message from the client
923
+
924
+ static int
925
+ s_server_handle_protocol (zloop_t *loop, zsock_t *reader, void *argument)
926
+ {
927
+ ZPROTO_UNUSED(loop);
928
+ ZPROTO_UNUSED(reader);
929
+
930
+ s_server_t *self = (s_server_t *) argument;
931
+ // We process as many messages as we can, to reduce the overhead
932
+ // of polling and the reactor:
933
+ while (zsock_events (self->router) & ZMQ_POLLIN) {
934
+ int rc = zgossip_msg_recv (self->message, self->router);
935
+ if (rc == -1)
936
+ return -1; // Interrupted; exit zloop
937
+
938
+
939
+ // TODO: use binary hashing on routing_id
940
+ char *hashkey = zframe_strhex (zgossip_msg_routing_id (self->message));
941
+ s_client_t *client = (s_client_t *) zhash_lookup (self->clients, hashkey);
942
+ if (client == NULL) {
943
+ client = s_client_new (self, zgossip_msg_routing_id (self->message));
944
+ zhash_insert (self->clients, hashkey, client);
945
+ zhash_freefn (self->clients, hashkey, s_client_free);
946
+ }
947
+ free (hashkey);
948
+ // Any input from client counts as activity
949
+ if (client->ticket)
950
+ zloop_ticket_reset (self->loop, client->ticket);
951
+
952
+ if (rc == -2) {
953
+ continue; // Malformed, but malformed_event doesn't exist
954
+ // -> discard the message
955
+ }
956
+ // Pass to client state machine
957
+ s_client_execute (client, s_protocol_event (self->message));
958
+ }
959
+ return 0;
960
+ }
961
+
962
+ // Watch server config file and reload if changed
963
+
964
+ static int
965
+ s_watch_server_config (zloop_t *loop, int timer_id, void *argument)
966
+ {
967
+ ZPROTO_UNUSED(loop);
968
+ ZPROTO_UNUSED(timer_id);
969
+
970
+ s_server_t *self = (s_server_t *) argument;
971
+ if (zconfig_has_changed (self->config)
972
+ && zconfig_reload (&self->config) == 0) {
973
+ s_server_config_service (self);
974
+ self->server.config = self->config;
975
+ server_configuration (&self->server, self->config);
976
+ zsys_notice ("reloaded configuration from %s",
977
+ zconfig_filename (self->config));
978
+ }
979
+ return 0;
980
+ }
981
+
982
+
983
+ // ---------------------------------------------------------------------------
984
+ // This is the server actor, which polls its two sockets and processes
985
+ // incoming messages
986
+
987
+ void
988
+ zgossip (zsock_t *pipe, void *args)
989
+ {
990
+ // Initialize
991
+ s_server_t *self = s_server_new (pipe);
992
+ assert (self);
993
+ zsock_signal (pipe, 0);
994
+ // Actor argument may be a string used for logging
995
+ self->log_prefix = args? (char *) args: "";
996
+
997
+ // Set-up server monitor to watch for config file changes
998
+ engine_set_monitor ((server_t *) self, 1000, s_watch_server_config);
999
+ // Set up handler for the two main sockets the server uses
1000
+ engine_handle_socket ((server_t *) self, self->pipe, s_server_handle_pipe);
1001
+ engine_handle_socket ((server_t *) self, self->router, s_server_handle_protocol);
1002
+
1003
+ // Run reactor until there's a termination signal
1004
+ zloop_start (self->loop);
1005
+
1006
+ // Reactor has ended
1007
+ s_server_destroy (&self);
1008
+ }