laag-libczmq 4.1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (697) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +57 -0
  3. data/LICENSE.txt +373 -0
  4. data/README.org +34 -0
  5. data/ext/laag/libczmq/extconf.rb +24 -0
  6. data/laag-libczmq.gemspec +21 -0
  7. data/lib/laag/libczmq.rb +30 -0
  8. data/vendor/github.com/zeromq/czmq/.editorconfig +19 -0
  9. data/vendor/github.com/zeromq/czmq/.gitattributes +5 -0
  10. data/vendor/github.com/zeromq/czmq/.github/PULL_REQUEST_TEMPLATE.md +28 -0
  11. data/vendor/github.com/zeromq/czmq/.gitignore +137 -0
  12. data/vendor/github.com/zeromq/czmq/.travis.yml +126 -0
  13. data/vendor/github.com/zeromq/czmq/AUTHORS +69 -0
  14. data/vendor/github.com/zeromq/czmq/CMakeLists.txt +653 -0
  15. data/vendor/github.com/zeromq/czmq/CONTRIBUTING.md +19 -0
  16. data/vendor/github.com/zeromq/czmq/Dockerfile +29 -0
  17. data/vendor/github.com/zeromq/czmq/Findlibsodium.cmake +47 -0
  18. data/vendor/github.com/zeromq/czmq/Findlibzmq.cmake +49 -0
  19. data/vendor/github.com/zeromq/czmq/Findlz4.cmake +49 -0
  20. data/vendor/github.com/zeromq/czmq/Findsystemd.cmake +49 -0
  21. data/vendor/github.com/zeromq/czmq/Finduuid.cmake +49 -0
  22. data/vendor/github.com/zeromq/czmq/INSTALL.cygwin +13 -0
  23. data/vendor/github.com/zeromq/czmq/ISSUES.cygwin +6 -0
  24. data/vendor/github.com/zeromq/czmq/Jenkinsfile +439 -0
  25. data/vendor/github.com/zeromq/czmq/LICENSE +373 -0
  26. data/vendor/github.com/zeromq/czmq/Makefile.am +70 -0
  27. data/vendor/github.com/zeromq/czmq/NEWS +823 -0
  28. data/vendor/github.com/zeromq/czmq/README.cygwin +23 -0
  29. data/vendor/github.com/zeromq/czmq/README.md +9345 -0
  30. data/vendor/github.com/zeromq/czmq/README.txt +512 -0
  31. data/vendor/github.com/zeromq/czmq/Vagrantfile +49 -0
  32. data/vendor/github.com/zeromq/czmq/acinclude.m4 +7 -0
  33. data/vendor/github.com/zeromq/czmq/api/zactor.api +77 -0
  34. data/vendor/github.com/zeromq/czmq/api/zargs.api +110 -0
  35. data/vendor/github.com/zeromq/czmq/api/zarmour.api +103 -0
  36. data/vendor/github.com/zeromq/czmq/api/zcert.api +128 -0
  37. data/vendor/github.com/zeromq/czmq/api/zcertstore.api +80 -0
  38. data/vendor/github.com/zeromq/czmq/api/zchunk.api +171 -0
  39. data/vendor/github.com/zeromq/czmq/api/zclock.api +43 -0
  40. data/vendor/github.com/zeromq/czmq/api/zconfig.api +205 -0
  41. data/vendor/github.com/zeromq/czmq/api/zdigest.api +45 -0
  42. data/vendor/github.com/zeromq/czmq/api/zdir.api +124 -0
  43. data/vendor/github.com/zeromq/czmq/api/zdir_patch.api +62 -0
  44. data/vendor/github.com/zeromq/czmq/api/zfile.api +157 -0
  45. data/vendor/github.com/zeromq/czmq/api/zframe.api +157 -0
  46. data/vendor/github.com/zeromq/czmq/api/zgossip_msg.api +104 -0
  47. data/vendor/github.com/zeromq/czmq/api/zhash.api +184 -0
  48. data/vendor/github.com/zeromq/czmq/api/zhashx.api +295 -0
  49. data/vendor/github.com/zeromq/czmq/api/ziflist.api +73 -0
  50. data/vendor/github.com/zeromq/czmq/api/zlist.api +158 -0
  51. data/vendor/github.com/zeromq/czmq/api/zlistx.api +220 -0
  52. data/vendor/github.com/zeromq/czmq/api/zloop.api +176 -0
  53. data/vendor/github.com/zeromq/czmq/api/zmsg.api +250 -0
  54. data/vendor/github.com/zeromq/czmq/api/zpoller.api +71 -0
  55. data/vendor/github.com/zeromq/czmq/api/zproc.api +247 -0
  56. data/vendor/github.com/zeromq/czmq/api/zsock.api +412 -0
  57. data/vendor/github.com/zeromq/czmq/api/zsock_option.api +847 -0
  58. data/vendor/github.com/zeromq/czmq/api/zstr.api +119 -0
  59. data/vendor/github.com/zeromq/czmq/api/zsys.api +490 -0
  60. data/vendor/github.com/zeromq/czmq/api/ztimerset.api +69 -0
  61. data/vendor/github.com/zeromq/czmq/api/ztrie.api +80 -0
  62. data/vendor/github.com/zeromq/czmq/api/zuuid.api +82 -0
  63. data/vendor/github.com/zeromq/czmq/appveyor.yml +73 -0
  64. data/vendor/github.com/zeromq/czmq/autogen.sh +52 -0
  65. data/vendor/github.com/zeromq/czmq/bindings/jni/.gitignore +8 -0
  66. data/vendor/github.com/zeromq/czmq/bindings/jni/CMakeLists.txt +79 -0
  67. data/vendor/github.com/zeromq/czmq/bindings/jni/Findczmq.cmake +47 -0
  68. data/vendor/github.com/zeromq/czmq/bindings/jni/README.md +130 -0
  69. data/vendor/github.com/zeromq/czmq/bindings/jni/android/CMakeLists.txt +79 -0
  70. data/vendor/github.com/zeromq/czmq/bindings/jni/android/android_toolchain.cmake +52 -0
  71. data/vendor/github.com/zeromq/czmq/bindings/jni/android/build.sh +68 -0
  72. data/vendor/github.com/zeromq/czmq/bindings/jni/build.gradle +151 -0
  73. data/vendor/github.com/zeromq/czmq/bindings/jni/ci_build.sh +96 -0
  74. data/vendor/github.com/zeromq/czmq/bindings/jni/gradle/wrapper/gradle-wrapper.jar +0 -0
  75. data/vendor/github.com/zeromq/czmq/bindings/jni/gradle/wrapper/gradle-wrapper.properties +6 -0
  76. data/vendor/github.com/zeromq/czmq/bindings/jni/gradlew +164 -0
  77. data/vendor/github.com/zeromq/czmq/bindings/jni/gradlew.bat +90 -0
  78. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/.gitignore +8 -0
  79. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/configure.bat +93 -0
  80. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/platform.h +1 -0
  81. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Common.props +21 -0
  82. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DLL.props +16 -0
  83. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Debug.props +29 -0
  84. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugDEXE.props +21 -0
  85. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugDLL.props +20 -0
  86. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugLEXE.props +20 -0
  87. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugLIB.props +21 -0
  88. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugLTCG.props +20 -0
  89. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugSEXE.props +21 -0
  90. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/EXE.props +17 -0
  91. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/LIB.props +16 -0
  92. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/LTCG.props +13 -0
  93. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Link.props +21 -0
  94. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Messages.props +15 -0
  95. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Output.props +30 -0
  96. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Release.props +41 -0
  97. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseDEXE.props +20 -0
  98. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseDLL.props +19 -0
  99. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseLEXE.props +20 -0
  100. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseLIB.props +19 -0
  101. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseLTCG.props +19 -0
  102. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseSEXE.props +20 -0
  103. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Win32.props +20 -0
  104. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/x64.props +23 -0
  105. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/resource.h +14 -0
  106. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/resource.rc +94 -0
  107. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/build.bat +48 -0
  108. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/call_javah.bat +84 -0
  109. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/czmq.sln +25 -0
  110. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/libczmqjni/libczmqjni.props +69 -0
  111. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/libczmqjni/libczmqjni.vcxproj +165 -0
  112. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  113. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/build.bat +48 -0
  114. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/call_javah.bat +84 -0
  115. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/czmq.sln +25 -0
  116. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/libczmqjni/libczmqjni.props +69 -0
  117. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/libczmqjni/libczmqjni.vcxproj +165 -0
  118. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  119. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/build.bat +48 -0
  120. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/call_javah.bat +84 -0
  121. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/czmq.sln +25 -0
  122. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/libczmqjni/libczmqjni.props +69 -0
  123. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/libczmqjni/libczmqjni.vcxproj +165 -0
  124. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  125. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/build.bat +48 -0
  126. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/call_javah.bat +84 -0
  127. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/czmq.sln +25 -0
  128. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/libczmqjni/libczmqjni.props +69 -0
  129. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/libczmqjni/libczmqjni.vcxproj +165 -0
  130. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  131. data/vendor/github.com/zeromq/czmq/bindings/jni/settings.gradle +1 -0
  132. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zarmour.c +132 -0
  133. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zcert.c +188 -0
  134. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zcertstore.c +69 -0
  135. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zchunk.c +191 -0
  136. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zclock.c +54 -0
  137. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zconfig.c +252 -0
  138. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zdigest.c +66 -0
  139. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zdir.c +116 -0
  140. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_ZdirPatch.c +88 -0
  141. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zfile.c +186 -0
  142. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zframe.c +199 -0
  143. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zhash.c +174 -0
  144. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zhashx.c +175 -0
  145. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Ziflist.c +112 -0
  146. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zlist.c +135 -0
  147. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zlistx.c +189 -0
  148. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zloop.c +95 -0
  149. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zmsg.c +261 -0
  150. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zpoller.c +74 -0
  151. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zproc.c +278 -0
  152. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zsock.c +1310 -0
  153. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zstr.c +108 -0
  154. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zsys.c +445 -0
  155. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Ztimerset.c +68 -0
  156. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Ztrie.c +86 -0
  157. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zuuid.c +125 -0
  158. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zarmour.java +148 -0
  159. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zcert.java +178 -0
  160. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zcertstore.java +94 -0
  161. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zchunk.java +204 -0
  162. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zclock.java +67 -0
  163. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zconfig.java +253 -0
  164. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zdigest.java +78 -0
  165. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zdir.java +159 -0
  166. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/ZdirPatch.java +96 -0
  167. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zfile.java +217 -0
  168. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zframe.java +212 -0
  169. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zhash.java +223 -0
  170. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zhashx.java +248 -0
  171. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Ziflist.java +124 -0
  172. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zlist.java +171 -0
  173. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zlistx.java +247 -0
  174. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zloop.java +134 -0
  175. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zmsg.java +308 -0
  176. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zpoller.java +105 -0
  177. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zproc.java +331 -0
  178. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zsock.java +1556 -0
  179. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zstr.java +117 -0
  180. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zsys.java +534 -0
  181. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Ztimerset.java +87 -0
  182. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Ztrie.java +102 -0
  183. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zuuid.java +127 -0
  184. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZarmourTest.java +25 -0
  185. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZcertTest.java +25 -0
  186. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZcertstoreTest.java +25 -0
  187. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZchunkTest.java +25 -0
  188. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZclockTest.java +25 -0
  189. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZconfigTest.java +25 -0
  190. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZdigestTest.java +25 -0
  191. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZdirPatchTest.java +25 -0
  192. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZdirTest.java +25 -0
  193. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZfileTest.java +25 -0
  194. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZframeTest.java +25 -0
  195. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZhashTest.java +25 -0
  196. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZhashxTest.java +25 -0
  197. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZiflistTest.java +25 -0
  198. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZlistTest.java +25 -0
  199. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZlistxTest.java +25 -0
  200. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZloopTest.java +25 -0
  201. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZmsgTest.java +25 -0
  202. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZpollerTest.java +25 -0
  203. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZprocTest.java +25 -0
  204. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZsockTest.java +25 -0
  205. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZstrTest.java +25 -0
  206. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZsysTest.java +25 -0
  207. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZtimersetTest.java +25 -0
  208. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZtrieTest.java +25 -0
  209. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZuuidTest.java +25 -0
  210. data/vendor/github.com/zeromq/czmq/bindings/lua_ffi/czmq_ffi.lua +4079 -0
  211. data/vendor/github.com/zeromq/czmq/bindings/nodejs/.gitignore +10 -0
  212. data/vendor/github.com/zeromq/czmq/bindings/nodejs/.prebuildrc +2 -0
  213. data/vendor/github.com/zeromq/czmq/bindings/nodejs/README.md +4373 -0
  214. data/vendor/github.com/zeromq/czmq/bindings/nodejs/binding.cc +8324 -0
  215. data/vendor/github.com/zeromq/czmq/bindings/nodejs/binding.gyp +49 -0
  216. data/vendor/github.com/zeromq/czmq/bindings/nodejs/binding.h +952 -0
  217. data/vendor/github.com/zeromq/czmq/bindings/nodejs/build.sh +79 -0
  218. data/vendor/github.com/zeromq/czmq/bindings/nodejs/index.js +39 -0
  219. data/vendor/github.com/zeromq/czmq/bindings/nodejs/package.json +26 -0
  220. data/vendor/github.com/zeromq/czmq/bindings/nodejs/test_binding.js +32 -0
  221. data/vendor/github.com/zeromq/czmq/bindings/python/ci_build.sh +59 -0
  222. data/vendor/github.com/zeromq/czmq/bindings/python/czmq/__init__.py +3 -0
  223. data/vendor/github.com/zeromq/czmq/bindings/python/czmq/_czmq_ctypes.py +8344 -0
  224. data/vendor/github.com/zeromq/czmq/bindings/python/test.py +1078 -0
  225. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/README.md +28 -0
  226. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zactor.py +78 -0
  227. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zargs.py +133 -0
  228. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zarmour.py +124 -0
  229. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zcert.py +132 -0
  230. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zcertstore.py +84 -0
  231. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zchunk.py +192 -0
  232. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zclock.py +59 -0
  233. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zconfig.py +211 -0
  234. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zdigest.py +64 -0
  235. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zdir.py +144 -0
  236. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/ZdirPatch.py +79 -0
  237. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zfile.py +185 -0
  238. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zframe.py +160 -0
  239. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zhash.py +197 -0
  240. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zhashx.py +271 -0
  241. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Ziflist.py +103 -0
  242. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zlist.py +176 -0
  243. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zlistx.py +235 -0
  244. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zloop.py +171 -0
  245. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zmsg.py +250 -0
  246. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zpoller.py +89 -0
  247. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zproc.py +287 -0
  248. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zsock.py +1283 -0
  249. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zstr.py +123 -0
  250. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zsys.py +532 -0
  251. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Ztimerset.py +78 -0
  252. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Ztrie.py +93 -0
  253. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zuuid.py +100 -0
  254. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/__init__.py +33 -0
  255. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/_cdefs.inc +4081 -0
  256. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/build.py +345 -0
  257. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/cdefs.py +4086 -0
  258. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/dlopen.py +33 -0
  259. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/utils.py +50 -0
  260. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/setup.py +23 -0
  261. data/vendor/github.com/zeromq/czmq/bindings/qml/.gitignore +1 -0
  262. data/vendor/github.com/zeromq/czmq/bindings/qml/README.md +157 -0
  263. data/vendor/github.com/zeromq/czmq/bindings/qml/Rakefile +34 -0
  264. data/vendor/github.com/zeromq/czmq/bindings/qml/qml_czmq_bindings.pro +136 -0
  265. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZactor.cpp +88 -0
  266. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZactor.h +86 -0
  267. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZargs.cpp +121 -0
  268. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZargs.h +105 -0
  269. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZarmour.cpp +135 -0
  270. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZarmour.h +108 -0
  271. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcert.cpp +166 -0
  272. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcert.h +122 -0
  273. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcertstore.cpp +95 -0
  274. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcertstore.h +93 -0
  275. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZchunk.cpp +214 -0
  276. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZchunk.h +149 -0
  277. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZclock.cpp +67 -0
  278. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZclock.h +77 -0
  279. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZconfig.cpp +255 -0
  280. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZconfig.h +165 -0
  281. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdigest.cpp +70 -0
  282. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdigest.h +78 -0
  283. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdir.cpp +158 -0
  284. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdir.h +134 -0
  285. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdirPatch.cpp +89 -0
  286. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdirPatch.h +84 -0
  287. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZfile.cpp +204 -0
  288. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZfile.h +152 -0
  289. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZframe.cpp +200 -0
  290. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZframe.h +143 -0
  291. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhash.cpp +219 -0
  292. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhash.h +174 -0
  293. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhashx.cpp +308 -0
  294. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhashx.h +225 -0
  295. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZiflist.cpp +111 -0
  296. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZiflist.h +96 -0
  297. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlist.cpp +184 -0
  298. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlist.h +148 -0
  299. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlistx.cpp +244 -0
  300. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlistx.h +184 -0
  301. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZloop.cpp +177 -0
  302. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZloop.h +149 -0
  303. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZmsg.cpp +313 -0
  304. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZmsg.h +209 -0
  305. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZpoller.cpp +95 -0
  306. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZpoller.h +97 -0
  307. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZproc.cpp +296 -0
  308. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZproc.h +211 -0
  309. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsock.cpp +1471 -0
  310. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsock.h +882 -0
  311. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZstr.cpp +137 -0
  312. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZstr.h +120 -0
  313. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsys.cpp +541 -0
  314. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsys.h +373 -0
  315. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtimerset.cpp +84 -0
  316. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtimerset.h +86 -0
  317. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtrie.cpp +101 -0
  318. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtrie.h +95 -0
  319. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZuuid.cpp +116 -0
  320. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZuuid.h +99 -0
  321. data/vendor/github.com/zeromq/czmq/bindings/qml/src/qml_czmq_plugin.h +174 -0
  322. data/vendor/github.com/zeromq/czmq/bindings/qml/src/qmldir +2 -0
  323. data/vendor/github.com/zeromq/czmq/bindings/qml/test/tst_QmlCZMQ.qml +16 -0
  324. data/vendor/github.com/zeromq/czmq/bindings/qt/README.md +87 -0
  325. data/vendor/github.com/zeromq/czmq/bindings/qt/buildlib/buildlib.pro +36 -0
  326. data/vendor/github.com/zeromq/czmq/bindings/qt/common.pri +20 -0
  327. data/vendor/github.com/zeromq/czmq/bindings/qt/config.pri +1 -0
  328. data/vendor/github.com/zeromq/czmq/bindings/qt/qczmq.pro +13 -0
  329. data/vendor/github.com/zeromq/czmq/bindings/qt/selftest/main.cpp +57 -0
  330. data/vendor/github.com/zeromq/czmq/bindings/qt/selftest/selftest.pro +19 -0
  331. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qczmq.h +96 -0
  332. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qczmq.pri +81 -0
  333. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzactor.cpp +98 -0
  334. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzactor.h +61 -0
  335. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzargs.cpp +130 -0
  336. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzargs.h +72 -0
  337. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzarmour.cpp +162 -0
  338. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzarmour.h +83 -0
  339. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcert.cpp +191 -0
  340. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcert.h +97 -0
  341. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcertstore.cpp +105 -0
  342. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcertstore.h +68 -0
  343. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzchunk.cpp +250 -0
  344. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzchunk.h +124 -0
  345. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzclock.cpp +78 -0
  346. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzclock.h +52 -0
  347. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzconfig.cpp +292 -0
  348. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzconfig.h +140 -0
  349. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdigest.cpp +80 -0
  350. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdigest.h +53 -0
  351. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdir.cpp +176 -0
  352. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdir.h +109 -0
  353. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdirpatch.cpp +101 -0
  354. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdirpatch.h +59 -0
  355. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzfile.cpp +243 -0
  356. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzfile.h +127 -0
  357. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzframe.cpp +231 -0
  358. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzframe.h +118 -0
  359. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhash.cpp +250 -0
  360. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhash.h +149 -0
  361. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhashx.cpp +350 -0
  362. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhashx.h +200 -0
  363. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qziflist.cpp +133 -0
  364. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qziflist.h +71 -0
  365. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlist.cpp +220 -0
  366. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlist.h +123 -0
  367. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlistx.cpp +296 -0
  368. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlistx.h +159 -0
  369. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzloop.cpp +211 -0
  370. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzloop.h +124 -0
  371. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzmsg.cpp +354 -0
  372. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzmsg.h +184 -0
  373. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzpoller.cpp +100 -0
  374. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzpoller.h +67 -0
  375. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzproc.cpp +365 -0
  376. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzproc.h +186 -0
  377. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsock.cpp +1719 -0
  378. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsock.h +815 -0
  379. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzstr.cpp +128 -0
  380. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzstr.h +78 -0
  381. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsys.cpp +600 -0
  382. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsys.h +321 -0
  383. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztimerset.cpp +98 -0
  384. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztimerset.h +61 -0
  385. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztrie.cpp +117 -0
  386. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztrie.h +70 -0
  387. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzuuid.cpp +135 -0
  388. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzuuid.h +74 -0
  389. data/vendor/github.com/zeromq/czmq/bindings/ruby/Rakefile +8 -0
  390. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi.rb +875 -0
  391. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/version.rb +15 -0
  392. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zactor.rb +219 -0
  393. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zargs.rb +259 -0
  394. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zarmour.rb +286 -0
  395. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zcert.rb +304 -0
  396. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zcertstore.rb +224 -0
  397. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zchunk.rb +388 -0
  398. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zclock.rb +140 -0
  399. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zconfig.rb +462 -0
  400. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zdigest.rb +156 -0
  401. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zdir.rb +283 -0
  402. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zdir_patch.rb +194 -0
  403. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zfile.rb +361 -0
  404. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zframe.rb +360 -0
  405. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zhash.rb +386 -0
  406. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zhashx.rb +617 -0
  407. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/ziflist.rb +219 -0
  408. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zlist.rb +365 -0
  409. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zlistx.rb +478 -0
  410. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zloop.rb +396 -0
  411. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zmsg.rb +515 -0
  412. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zpoller.rb +194 -0
  413. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zproc.rb +497 -0
  414. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zsock.rb +4673 -0
  415. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zstr.rb +242 -0
  416. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zsys.rb +836 -0
  417. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/ztimerset.rb +203 -0
  418. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/ztrie.rb +221 -0
  419. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zuuid.rb +227 -0
  420. data/vendor/github.com/zeromq/czmq/bindings/ruby/spec/ffi_spec.rb +15 -0
  421. data/vendor/github.com/zeromq/czmq/bindings/ruby/spec/spec_helper.rb +8 -0
  422. data/vendor/github.com/zeromq/czmq/builds/android/android_build_helper.sh +298 -0
  423. data/vendor/github.com/zeromq/czmq/builds/android/build.sh +94 -0
  424. data/vendor/github.com/zeromq/czmq/builds/android/ci_build.sh +41 -0
  425. data/vendor/github.com/zeromq/czmq/builds/check_zproject/ci_build.sh +52 -0
  426. data/vendor/github.com/zeromq/czmq/builds/check_zproto/ci_build.sh +23 -0
  427. data/vendor/github.com/zeromq/czmq/builds/cmake/ci_build.sh +93 -0
  428. data/vendor/github.com/zeromq/czmq/builds/cygwin/Makefile.cygwin +32 -0
  429. data/vendor/github.com/zeromq/czmq/builds/docs/ci_build.sh +24 -0
  430. data/vendor/github.com/zeromq/czmq/builds/gyp/.gitignore +5 -0
  431. data/vendor/github.com/zeromq/czmq/builds/gyp/README.md +33 -0
  432. data/vendor/github.com/zeromq/czmq/builds/gyp/platform.h +46 -0
  433. data/vendor/github.com/zeromq/czmq/builds/gyp/project.gyp +195 -0
  434. data/vendor/github.com/zeromq/czmq/builds/mingw32/Makefile.mingw32 +33 -0
  435. data/vendor/github.com/zeromq/czmq/builds/mingw32/platform.h +0 -0
  436. data/vendor/github.com/zeromq/czmq/builds/msvc/.gitignore +8 -0
  437. data/vendor/github.com/zeromq/czmq/builds/msvc/configure.bat +93 -0
  438. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.bat +14 -0
  439. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.nuspec +92 -0
  440. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.targets +128 -0
  441. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.xml +29 -0
  442. data/vendor/github.com/zeromq/czmq/builds/msvc/platform.h +1 -0
  443. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Common.props +21 -0
  444. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DLL.props +16 -0
  445. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Debug.props +29 -0
  446. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugDEXE.props +21 -0
  447. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugDLL.props +20 -0
  448. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugLEXE.props +20 -0
  449. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugLIB.props +21 -0
  450. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugLTCG.props +20 -0
  451. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugSEXE.props +21 -0
  452. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/EXE.props +17 -0
  453. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/LIB.props +16 -0
  454. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/LTCG.props +13 -0
  455. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Link.props +21 -0
  456. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Messages.props +15 -0
  457. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Output.props +30 -0
  458. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Release.props +41 -0
  459. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseDEXE.props +20 -0
  460. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseDLL.props +19 -0
  461. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseLEXE.props +20 -0
  462. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseLIB.props +19 -0
  463. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseLTCG.props +19 -0
  464. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseSEXE.props +20 -0
  465. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Win32.props +20 -0
  466. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/x64.props +23 -0
  467. data/vendor/github.com/zeromq/czmq/builds/msvc/resource.h +14 -0
  468. data/vendor/github.com/zeromq/czmq/builds/msvc/resource.rc +94 -0
  469. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2008/czmq/czmq.sln +65 -0
  470. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2008/czmq/czmq.vcproj +1411 -0
  471. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/.gitignore +1 -0
  472. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/build.bat +129 -0
  473. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq.import.props +59 -0
  474. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq.sln +81 -0
  475. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq_selftest/czmq_selftest.props +75 -0
  476. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq_selftest/czmq_selftest.vcxproj +146 -0
  477. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.import.xml +29 -0
  478. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.props +81 -0
  479. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.vcxproj +215 -0
  480. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.vcxproj.filters +203 -0
  481. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/test_randof/test_randof.props +75 -0
  482. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/test_randof/test_randof.vcxproj +146 -0
  483. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zmakecert/zmakecert.props +75 -0
  484. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zmakecert/zmakecert.vcxproj +146 -0
  485. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zsp/zsp.props +75 -0
  486. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zsp/zsp.vcxproj +146 -0
  487. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/.gitignore +1 -0
  488. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/build.bat +129 -0
  489. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq.import.props +59 -0
  490. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq.sln +81 -0
  491. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq_selftest/czmq_selftest.props +75 -0
  492. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq_selftest/czmq_selftest.vcxproj +146 -0
  493. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.import.xml +29 -0
  494. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.props +81 -0
  495. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.vcxproj +215 -0
  496. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.vcxproj.filters +203 -0
  497. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/test_randof/test_randof.props +75 -0
  498. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/test_randof/test_randof.vcxproj +146 -0
  499. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zmakecert/zmakecert.props +75 -0
  500. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zmakecert/zmakecert.vcxproj +146 -0
  501. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zsp/zsp.props +75 -0
  502. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zsp/zsp.vcxproj +146 -0
  503. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/build.bat +129 -0
  504. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq.import.props +59 -0
  505. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq.sln +81 -0
  506. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq_selftest/czmq_selftest.props +75 -0
  507. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq_selftest/czmq_selftest.vcxproj +146 -0
  508. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.import.xml +29 -0
  509. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.props +81 -0
  510. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.vcxproj +215 -0
  511. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.vcxproj.filters +203 -0
  512. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/test_randof/test_randof.props +75 -0
  513. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/test_randof/test_randof.vcxproj +146 -0
  514. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zmakecert/zmakecert.props +75 -0
  515. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zmakecert/zmakecert.vcxproj +146 -0
  516. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zsp/zsp.props +75 -0
  517. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zsp/zsp.vcxproj +146 -0
  518. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/build.bat +129 -0
  519. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq.import.props +59 -0
  520. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq.sln +81 -0
  521. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq_selftest/czmq_selftest.props +75 -0
  522. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq_selftest/czmq_selftest.vcxproj +146 -0
  523. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.import.xml +29 -0
  524. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.props +81 -0
  525. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.vcxproj +215 -0
  526. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.vcxproj.filters +203 -0
  527. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/test_randof/test_randof.props +75 -0
  528. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/test_randof/test_randof.vcxproj +146 -0
  529. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zmakecert/zmakecert.props +75 -0
  530. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zmakecert/zmakecert.vcxproj +146 -0
  531. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zsp/zsp.props +75 -0
  532. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zsp/zsp.vcxproj +146 -0
  533. data/vendor/github.com/zeromq/czmq/builds/nuget/czmq.autobuild +49 -0
  534. data/vendor/github.com/zeromq/czmq/builds/nuget/readme.nuget +18 -0
  535. data/vendor/github.com/zeromq/czmq/builds/rpi/.gitignore +8 -0
  536. data/vendor/github.com/zeromq/czmq/builds/rpi/README.md +62 -0
  537. data/vendor/github.com/zeromq/czmq/builds/rpi/build.sh +142 -0
  538. data/vendor/github.com/zeromq/czmq/builds/rpi/build_image.sh +32 -0
  539. data/vendor/github.com/zeromq/czmq/builds/rpi/prepare_img.sh +111 -0
  540. data/vendor/github.com/zeromq/czmq/builds/stable_zmq/ci_build.sh +62 -0
  541. data/vendor/github.com/zeromq/czmq/builds/valgrind/ci_build.sh +43 -0
  542. data/vendor/github.com/zeromq/czmq/ci_build.sh +317 -0
  543. data/vendor/github.com/zeromq/czmq/ci_deploy.sh +29 -0
  544. data/vendor/github.com/zeromq/czmq/ci_deploy_obs.sh +23 -0
  545. data/vendor/github.com/zeromq/czmq/configure.ac +856 -0
  546. data/vendor/github.com/zeromq/czmq/doc/.gitignore +91 -0
  547. data/vendor/github.com/zeromq/czmq/doc/Makefile.am +222 -0
  548. data/vendor/github.com/zeromq/czmq/doc/asciidoc.conf +64 -0
  549. data/vendor/github.com/zeromq/czmq/doc/czmq.adoc +51 -0
  550. data/vendor/github.com/zeromq/czmq/doc/czmq.txt +380 -0
  551. data/vendor/github.com/zeromq/czmq/doc/mkman +217 -0
  552. data/vendor/github.com/zeromq/czmq/doc/mkmans +15 -0
  553. data/vendor/github.com/zeromq/czmq/doc/wdput +43 -0
  554. data/vendor/github.com/zeromq/czmq/examples/security/LICENSE +18 -0
  555. data/vendor/github.com/zeromq/czmq/examples/security/README.txt +9 -0
  556. data/vendor/github.com/zeromq/czmq/examples/security/grasslands.c +32 -0
  557. data/vendor/github.com/zeromq/czmq/examples/security/hello.c +13 -0
  558. data/vendor/github.com/zeromq/czmq/examples/security/ironhouse.c +64 -0
  559. data/vendor/github.com/zeromq/czmq/examples/security/ironhouse2.c +123 -0
  560. data/vendor/github.com/zeromq/czmq/examples/security/ironhouse2_v2.c +107 -0
  561. data/vendor/github.com/zeromq/czmq/examples/security/passwords +2 -0
  562. data/vendor/github.com/zeromq/czmq/examples/security/stonehouse.c +59 -0
  563. data/vendor/github.com/zeromq/czmq/examples/security/strawhouse.c +49 -0
  564. data/vendor/github.com/zeromq/czmq/examples/security/woodhouse.c +47 -0
  565. data/vendor/github.com/zeromq/czmq/images/README_1.png +0 -0
  566. data/vendor/github.com/zeromq/czmq/include/.gitignore +1 -0
  567. data/vendor/github.com/zeromq/czmq/include/czmq.h +39 -0
  568. data/vendor/github.com/zeromq/czmq/include/czmq_library.h +190 -0
  569. data/vendor/github.com/zeromq/czmq/include/czmq_prelude.h +735 -0
  570. data/vendor/github.com/zeromq/czmq/include/test_zgossip.h +44 -0
  571. data/vendor/github.com/zeromq/czmq/include/zactor.h +94 -0
  572. data/vendor/github.com/zeromq/czmq/include/zargs.h +134 -0
  573. data/vendor/github.com/zeromq/czmq/include/zarmour.h +114 -0
  574. data/vendor/github.com/zeromq/czmq/include/zauth.h +100 -0
  575. data/vendor/github.com/zeromq/czmq/include/zbeacon.h +86 -0
  576. data/vendor/github.com/zeromq/czmq/include/zcert.h +133 -0
  577. data/vendor/github.com/zeromq/czmq/include/zcertstore.h +101 -0
  578. data/vendor/github.com/zeromq/czmq/include/zchunk.h +163 -0
  579. data/vendor/github.com/zeromq/czmq/include/zclock.h +73 -0
  580. data/vendor/github.com/zeromq/czmq/include/zconfig.h +199 -0
  581. data/vendor/github.com/zeromq/czmq/include/zdigest.h +65 -0
  582. data/vendor/github.com/zeromq/czmq/include/zdir.h +149 -0
  583. data/vendor/github.com/zeromq/czmq/include/zdir_patch.h +82 -0
  584. data/vendor/github.com/zeromq/czmq/include/zfile.h +185 -0
  585. data/vendor/github.com/zeromq/czmq/include/zframe.h +177 -0
  586. data/vendor/github.com/zeromq/czmq/include/zgossip.h +95 -0
  587. data/vendor/github.com/zeromq/czmq/include/zhash.h +183 -0
  588. data/vendor/github.com/zeromq/czmq/include/zhashx.h +279 -0
  589. data/vendor/github.com/zeromq/czmq/include/ziflist.h +98 -0
  590. data/vendor/github.com/zeromq/czmq/include/zlist.h +158 -0
  591. data/vendor/github.com/zeromq/czmq/include/zlistx.h +205 -0
  592. data/vendor/github.com/zeromq/czmq/include/zloop.h +163 -0
  593. data/vendor/github.com/zeromq/czmq/include/zmonitor.h +73 -0
  594. data/vendor/github.com/zeromq/czmq/include/zmsg.h +280 -0
  595. data/vendor/github.com/zeromq/czmq/include/zpoller.h +87 -0
  596. data/vendor/github.com/zeromq/czmq/include/zproc.h +270 -0
  597. data/vendor/github.com/zeromq/czmq/include/zproxy.h +111 -0
  598. data/vendor/github.com/zeromq/czmq/include/zrex.h +82 -0
  599. data/vendor/github.com/zeromq/czmq/include/zsock.h +1209 -0
  600. data/vendor/github.com/zeromq/czmq/include/zstr.h +135 -0
  601. data/vendor/github.com/zeromq/czmq/include/zsys.h +439 -0
  602. data/vendor/github.com/zeromq/czmq/include/ztimerset.h +90 -0
  603. data/vendor/github.com/zeromq/czmq/include/ztrie.h +106 -0
  604. data/vendor/github.com/zeromq/czmq/include/zuuid.h +96 -0
  605. data/vendor/github.com/zeromq/czmq/issues/README.md +6 -0
  606. data/vendor/github.com/zeromq/czmq/issues/c +520 -0
  607. data/vendor/github.com/zeromq/czmq/issues/issue-407.c +146 -0
  608. data/vendor/github.com/zeromq/czmq/license.xml +9 -0
  609. data/vendor/github.com/zeromq/czmq/mkdoc +7 -0
  610. data/vendor/github.com/zeromq/czmq/model/chkopts.pl +47 -0
  611. data/vendor/github.com/zeromq/czmq/model/rename_class +42 -0
  612. data/vendor/github.com/zeromq/czmq/packaging/debian/changelog +5 -0
  613. data/vendor/github.com/zeromq/czmq/packaging/debian/compat +1 -0
  614. data/vendor/github.com/zeromq/czmq/packaging/debian/control +86 -0
  615. data/vendor/github.com/zeromq/czmq/packaging/debian/copyright +13 -0
  616. data/vendor/github.com/zeromq/czmq/packaging/debian/czmq.dsc.obs +20 -0
  617. data/vendor/github.com/zeromq/czmq/packaging/debian/czmq.install +2 -0
  618. data/vendor/github.com/zeromq/czmq/packaging/debian/czmq.manpages +1 -0
  619. data/vendor/github.com/zeromq/czmq/packaging/debian/format +1 -0
  620. data/vendor/github.com/zeromq/czmq/packaging/debian/libczmq-dev.install +4 -0
  621. data/vendor/github.com/zeromq/czmq/packaging/debian/libczmq-dev.manpages +2 -0
  622. data/vendor/github.com/zeromq/czmq/packaging/debian/libczmq4.install +1 -0
  623. data/vendor/github.com/zeromq/czmq/packaging/debian/rules +96 -0
  624. data/vendor/github.com/zeromq/czmq/packaging/dist/gitlog2changelog.py +125 -0
  625. data/vendor/github.com/zeromq/czmq/packaging/obs/_service +91 -0
  626. data/vendor/github.com/zeromq/czmq/packaging/redhat/czmq.spec +202 -0
  627. data/vendor/github.com/zeromq/czmq/project.gyp +121 -0
  628. data/vendor/github.com/zeromq/czmq/project.xml +99 -0
  629. data/vendor/github.com/zeromq/czmq/setup.py +9 -0
  630. data/vendor/github.com/zeromq/czmq/src/.gitignore +20 -0
  631. data/vendor/github.com/zeromq/czmq/src/.valgrind.supp +33 -0
  632. data/vendor/github.com/zeromq/czmq/src/CMakeLists-local.txt +22 -0
  633. data/vendor/github.com/zeromq/czmq/src/Makemodule-local.am +15 -0
  634. data/vendor/github.com/zeromq/czmq/src/Makemodule.am +353 -0
  635. data/vendor/github.com/zeromq/czmq/src/czmq_classes.h +388 -0
  636. data/vendor/github.com/zeromq/czmq/src/czmq_private_selftest.c +40 -0
  637. data/vendor/github.com/zeromq/czmq/src/czmq_selftest.c +220 -0
  638. data/vendor/github.com/zeromq/czmq/src/foreign/sha1/sha1.h +76 -0
  639. data/vendor/github.com/zeromq/czmq/src/foreign/sha1/sha1.inc_c +335 -0
  640. data/vendor/github.com/zeromq/czmq/src/foreign/slre/readme.txt +83 -0
  641. data/vendor/github.com/zeromq/czmq/src/foreign/slre/slre.h +92 -0
  642. data/vendor/github.com/zeromq/czmq/src/foreign/slre/slre.inc_c +660 -0
  643. data/vendor/github.com/zeromq/czmq/src/libczmq.pc.in +24 -0
  644. data/vendor/github.com/zeromq/czmq/src/python_cffi.inc +17 -0
  645. data/vendor/github.com/zeromq/czmq/src/selftest-ro/.gitkeep +0 -0
  646. data/vendor/github.com/zeromq/czmq/src/selftest.cfg +5 -0
  647. data/vendor/github.com/zeromq/czmq/src/sockopts.gsl +36 -0
  648. data/vendor/github.com/zeromq/czmq/src/sockopts.xml +193 -0
  649. data/vendor/github.com/zeromq/czmq/src/test_randof.c +182 -0
  650. data/vendor/github.com/zeromq/czmq/src/test_zgossip.c +188 -0
  651. data/vendor/github.com/zeromq/czmq/src/valgrind.supp +14 -0
  652. data/vendor/github.com/zeromq/czmq/src/zactor.c +338 -0
  653. data/vendor/github.com/zeromq/czmq/src/zargs.c +289 -0
  654. data/vendor/github.com/zeromq/czmq/src/zarmour.c +941 -0
  655. data/vendor/github.com/zeromq/czmq/src/zauth.c +821 -0
  656. data/vendor/github.com/zeromq/czmq/src/zbeacon.c +651 -0
  657. data/vendor/github.com/zeromq/czmq/src/zcert.c +557 -0
  658. data/vendor/github.com/zeromq/czmq/src/zcertstore.c +407 -0
  659. data/vendor/github.com/zeromq/czmq/src/zchunk.c +609 -0
  660. data/vendor/github.com/zeromq/czmq/src/zclock.c +237 -0
  661. data/vendor/github.com/zeromq/czmq/src/zconfig.c +1369 -0
  662. data/vendor/github.com/zeromq/czmq/src/zdigest.c +163 -0
  663. data/vendor/github.com/zeromq/czmq/src/zdir.c +1138 -0
  664. data/vendor/github.com/zeromq/czmq/src/zdir_patch.c +227 -0
  665. data/vendor/github.com/zeromq/czmq/src/zfile.c +920 -0
  666. data/vendor/github.com/zeromq/czmq/src/zframe.c +756 -0
  667. data/vendor/github.com/zeromq/czmq/src/zgossip.c +689 -0
  668. data/vendor/github.com/zeromq/czmq/src/zgossip.xml +57 -0
  669. data/vendor/github.com/zeromq/czmq/src/zgossip_engine.inc +1008 -0
  670. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.bnf +43 -0
  671. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.c +688 -0
  672. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.h +127 -0
  673. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.xml +46 -0
  674. data/vendor/github.com/zeromq/czmq/src/zhash.c +956 -0
  675. data/vendor/github.com/zeromq/czmq/src/zhash_primes.inc +329 -0
  676. data/vendor/github.com/zeromq/czmq/src/zhashx.c +1369 -0
  677. data/vendor/github.com/zeromq/czmq/src/ziflist.c +517 -0
  678. data/vendor/github.com/zeromq/czmq/src/zlist.c +634 -0
  679. data/vendor/github.com/zeromq/czmq/src/zlistx.c +753 -0
  680. data/vendor/github.com/zeromq/czmq/src/zloop.c +1000 -0
  681. data/vendor/github.com/zeromq/czmq/src/zmakecert.c +64 -0
  682. data/vendor/github.com/zeromq/czmq/src/zmonitor.c +447 -0
  683. data/vendor/github.com/zeromq/czmq/src/zmsg.c +1258 -0
  684. data/vendor/github.com/zeromq/czmq/src/zpoller.c +397 -0
  685. data/vendor/github.com/zeromq/czmq/src/zproc.c +1160 -0
  686. data/vendor/github.com/zeromq/czmq/src/zproxy.c +791 -0
  687. data/vendor/github.com/zeromq/czmq/src/zrex.c +310 -0
  688. data/vendor/github.com/zeromq/czmq/src/zsock.c +2207 -0
  689. data/vendor/github.com/zeromq/czmq/src/zsock_option.gsl +404 -0
  690. data/vendor/github.com/zeromq/czmq/src/zsock_option.inc +3946 -0
  691. data/vendor/github.com/zeromq/czmq/src/zsp.c +118 -0
  692. data/vendor/github.com/zeromq/czmq/src/zstr.c +548 -0
  693. data/vendor/github.com/zeromq/czmq/src/zsys.c +2225 -0
  694. data/vendor/github.com/zeromq/czmq/src/ztimerset.c +227 -0
  695. data/vendor/github.com/zeromq/czmq/src/ztrie.c +809 -0
  696. data/vendor/github.com/zeromq/czmq/src/zuuid.c +344 -0
  697. metadata +780 -0
@@ -0,0 +1,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
+ }