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,127 @@
1
+ /* =========================================================================
2
+ zgossip_msg - class description
3
+
4
+ Copyright (c) the Contributors as noted in the AUTHORS file.
5
+ This file is part of CZMQ, the high-level C binding for 0MQ:
6
+ http://czmq.zeromq.org.
7
+
8
+ This Source Code Form is subject to the terms of the Mozilla Public
9
+ License, v. 2.0. If a copy of the MPL was not distributed with this
10
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
11
+ =========================================================================
12
+ */
13
+
14
+ #ifndef ZGOSSIP_MSG_H_INCLUDED
15
+ #define ZGOSSIP_MSG_H_INCLUDED
16
+
17
+ #ifdef __cplusplus
18
+ extern "C" {
19
+ #endif
20
+
21
+ // @warning THE FOLLOWING @INTERFACE BLOCK IS AUTO-GENERATED BY ZPROJECT
22
+ // @warning Please edit the model at "api/zgossip_msg.api" to make changes.
23
+ // @interface
24
+ // This is a draft class, and may change without notice. It is disabled in
25
+ // stable builds by default. If you use this in applications, please ask
26
+ // for it to be pushed to stable state. Use --enable-drafts to enable.
27
+ #ifdef CZMQ_BUILD_DRAFT_API
28
+ #define ZGOSSIP_MSG_HELLO 1 //
29
+ #define ZGOSSIP_MSG_PUBLISH 2 //
30
+ #define ZGOSSIP_MSG_PING 3 //
31
+ #define ZGOSSIP_MSG_PONG 4 //
32
+ #define ZGOSSIP_MSG_INVALID 5 //
33
+
34
+ // *** Draft method, for development use, may change without warning ***
35
+ // Create a new empty zgossip_msg
36
+ CZMQ_PRIVATE zgossip_msg_t *
37
+ zgossip_msg_new (void);
38
+
39
+ // *** Draft method, for development use, may change without warning ***
40
+ // Destroy a zgossip_msg instance
41
+ CZMQ_PRIVATE void
42
+ zgossip_msg_destroy (zgossip_msg_t **self_p);
43
+
44
+ // *** Draft method, for development use, may change without warning ***
45
+ // Receive a zgossip_msg from the socket. Returns 0 if OK, -1 if
46
+ // there was an error. Blocks if there is no message waiting.
47
+ CZMQ_PRIVATE int
48
+ zgossip_msg_recv (zgossip_msg_t *self, zsock_t *input);
49
+
50
+ // *** Draft method, for development use, may change without warning ***
51
+ // Send the zgossip_msg to the output socket, does not destroy it
52
+ CZMQ_PRIVATE int
53
+ zgossip_msg_send (zgossip_msg_t *self, zsock_t *output);
54
+
55
+ // *** Draft method, for development use, may change without warning ***
56
+ // Print contents of message to stdout
57
+ CZMQ_PRIVATE void
58
+ zgossip_msg_print (zgossip_msg_t *self);
59
+
60
+ // *** Draft method, for development use, may change without warning ***
61
+ // Get the message routing id, as a frame
62
+ CZMQ_PRIVATE zframe_t *
63
+ zgossip_msg_routing_id (zgossip_msg_t *self);
64
+
65
+ // *** Draft method, for development use, may change without warning ***
66
+ // Set the message routing id from a frame
67
+ CZMQ_PRIVATE void
68
+ zgossip_msg_set_routing_id (zgossip_msg_t *self, zframe_t *routing_id);
69
+
70
+ // *** Draft method, for development use, may change without warning ***
71
+ // Get the zgossip_msg message id
72
+ CZMQ_PRIVATE int
73
+ zgossip_msg_id (zgossip_msg_t *self);
74
+
75
+ // *** Draft method, for development use, may change without warning ***
76
+ // Set the zgossip_msg message id
77
+ CZMQ_PRIVATE void
78
+ zgossip_msg_set_id (zgossip_msg_t *self, int id);
79
+
80
+ // *** Draft method, for development use, may change without warning ***
81
+ // Get the zgossip_msg message id as printable text
82
+ CZMQ_PRIVATE const char *
83
+ zgossip_msg_command (zgossip_msg_t *self);
84
+
85
+ // *** Draft method, for development use, may change without warning ***
86
+ // Get the key field
87
+ CZMQ_PRIVATE const char *
88
+ zgossip_msg_key (zgossip_msg_t *self);
89
+
90
+ // *** Draft method, for development use, may change without warning ***
91
+ // Set the key field
92
+ CZMQ_PRIVATE void
93
+ zgossip_msg_set_key (zgossip_msg_t *self, const char *key);
94
+
95
+ // *** Draft method, for development use, may change without warning ***
96
+ // Get the value field
97
+ CZMQ_PRIVATE const char *
98
+ zgossip_msg_value (zgossip_msg_t *self);
99
+
100
+ // *** Draft method, for development use, may change without warning ***
101
+ // Set the value field
102
+ CZMQ_PRIVATE void
103
+ zgossip_msg_set_value (zgossip_msg_t *self, const char *value);
104
+
105
+ // *** Draft method, for development use, may change without warning ***
106
+ // Get the ttl field
107
+ CZMQ_PRIVATE uint32_t
108
+ zgossip_msg_ttl (zgossip_msg_t *self);
109
+
110
+ // *** Draft method, for development use, may change without warning ***
111
+ // Set the ttl field
112
+ CZMQ_PRIVATE void
113
+ zgossip_msg_set_ttl (zgossip_msg_t *self, uint32_t ttl);
114
+
115
+ // *** Draft method, for development use, may change without warning ***
116
+ // Self test of this class.
117
+ CZMQ_PRIVATE void
118
+ zgossip_msg_test (bool verbose);
119
+
120
+ #endif // CZMQ_BUILD_DRAFT_API
121
+ // @end
122
+
123
+ #ifdef __cplusplus
124
+ }
125
+ #endif
126
+
127
+ #endif
@@ -0,0 +1,46 @@
1
+ <class
2
+ name = "zgossip_msg"
3
+ title = "ZeroMQ Gossip Protocol"
4
+ script = "zproto_codec_c"
5
+ package_dir = "."
6
+ project_header = "czmq_classes.h"
7
+ export_macro = "CZMQ_EXPORT"
8
+ >
9
+ This is a server implementation of the ZeroMQ Gossip Protocol (ZGP)
10
+ <include filename = "../license.xml" />
11
+
12
+ <grammar>
13
+ C:HELLO ( C:PUBLISH / S:PUBLISH / heartbeat )
14
+ heartbeat = C:PING / S:PONG
15
+ </grammar>
16
+
17
+ <!-- Header for all messages -->
18
+ <header>
19
+ <field name = "version" type = "number" size = "1" value = "1">Version = 1</field>
20
+ </header>
21
+
22
+ <message name = "hello">
23
+ Client says hello to server
24
+ </message>
25
+
26
+ <message name = "publish">
27
+ Client or server announces a new tuple
28
+ <field name = "key" type = "string">Tuple key, globally unique</field>
29
+ <field name = "value" type = "longstr">Tuple value, as printable string</field>
30
+ <field name = "ttl" type = "number" size = "4">Time to live, msecs</field>
31
+ </message>
32
+
33
+ <message name = "ping">
34
+ Client signals liveness
35
+ </message>
36
+
37
+ <message name = "pong">
38
+ Server responds to ping; note that pongs are not correlated with pings,
39
+ and may be mixed with other commands, and the client should treat any
40
+ incoming traffic as valid activity.
41
+ </message>
42
+
43
+ <message name = "invalid">
44
+ Server rejects command as invalid
45
+ </message>
46
+ </class>
@@ -0,0 +1,956 @@
1
+ /* =========================================================================
2
+ zhash - simple generic hash container
3
+
4
+ Copyright (c) the Contributors as noted in the AUTHORS file.
5
+ This file is part of CZMQ, the high-level C binding for 0MQ:
6
+ http://czmq.zeromq.org.
7
+
8
+ This Source Code Form is subject to the terms of the Mozilla Public
9
+ License, v. 2.0. If a copy of the MPL was not distributed with this
10
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
11
+ =========================================================================
12
+ */
13
+
14
+ /*
15
+ @header
16
+ zhash is an expandable hash table container. This is a simple container.
17
+ For heavy-duty applications we recommend using zhashx.
18
+ @discuss
19
+ Note that it's relatively slow (~50K insertions/deletes per second), so
20
+ don't do inserts/updates on the critical path for message I/O. It can
21
+ do ~2.5M lookups per second for 16-char keys. Timed on a 1.6GHz CPU.
22
+ @end
23
+ */
24
+
25
+ #include "czmq_classes.h"
26
+
27
+ // Hash table performance parameters
28
+
29
+ #define INITIAL_SIZE 255 // Initial size in items
30
+ #define LOAD_FACTOR 75 // Percent loading before splitting
31
+ #define GROWTH_FACTOR 200 // Increase in % after splitting
32
+
33
+
34
+ // Hash item, used internally only
35
+
36
+ typedef struct _item_t {
37
+ void *value; // Opaque item value
38
+ struct _item_t *next; // Next item in the hash slot
39
+ size_t index; // Index of item in table
40
+ char *key; // Item's original key
41
+ zhash_free_fn *free_fn; // Value free function if any
42
+ } item_t;
43
+
44
+
45
+ // ---------------------------------------------------------------------
46
+ // Structure of our class
47
+
48
+ struct _zhash_t {
49
+ size_t size; // Current size of hash table
50
+ size_t limit; // Current hash table limit
51
+ item_t **items; // Array of items
52
+ size_t cached_index; // Avoids duplicate hash calculations
53
+ bool autofree; // If true, free values in destructor
54
+ size_t cursor_index; // For first/next iteration
55
+ item_t *cursor_item; // For first/next iteration
56
+ const char *cursor_key; // After first/next call, points to key
57
+ zlist_t *comments; // File comments, if any
58
+ time_t modified; // Set during zhash_load
59
+ char *filename; // Set during zhash_load
60
+ };
61
+
62
+ // Local helper functions
63
+ static uint s_item_hash (const char *key, size_t limit);
64
+ static item_t *s_item_lookup (zhash_t *self, const char *key);
65
+ static item_t *s_item_insert (zhash_t *self, const char *key, void *value);
66
+ static void s_item_destroy (zhash_t *self, item_t *item, bool hard);
67
+
68
+
69
+ // --------------------------------------------------------------------------
70
+ // Hash table constructor
71
+
72
+ zhash_t *
73
+ zhash_new (void)
74
+ {
75
+ zhash_t *self = (zhash_t *) zmalloc (sizeof (zhash_t));
76
+ assert (self);
77
+ self->limit = INITIAL_SIZE;
78
+ self->items = (item_t **) zmalloc (sizeof (item_t *) * self->limit);
79
+ assert (self->items);
80
+ return self;
81
+ }
82
+
83
+
84
+ // --------------------------------------------------------------------------
85
+ // Hash table destructor
86
+
87
+ void
88
+ zhash_destroy (zhash_t **self_p)
89
+ {
90
+ assert (self_p);
91
+ if (*self_p) {
92
+ zhash_t *self = *self_p;
93
+ uint index;
94
+ for (index = 0; index < self->limit; index++) {
95
+ // Destroy all items in this hash bucket
96
+ item_t *cur_item = self->items [index];
97
+ while (cur_item) {
98
+ item_t *next_item = cur_item->next;
99
+ s_item_destroy (self, cur_item, true);
100
+ cur_item = next_item;
101
+ }
102
+ }
103
+ if (self->items)
104
+ freen (self->items);
105
+
106
+ zlist_destroy (&self->comments);
107
+ freen (self->filename);
108
+ freen (self);
109
+ *self_p = NULL;
110
+ }
111
+ }
112
+
113
+
114
+ // --------------------------------------------------------------------------
115
+ // Local helper function
116
+ // Destroy item in hash table, item must exist in table
117
+
118
+ static void
119
+ s_item_destroy (zhash_t *self, item_t *item, bool hard)
120
+ {
121
+ // Find previous item since it's a singly-linked list
122
+ item_t *cur_item = self->items [item->index];
123
+ item_t **prev_item = &(self->items [item->index]);
124
+ while (cur_item) {
125
+ if (cur_item == item)
126
+ break;
127
+ prev_item = &(cur_item->next);
128
+ cur_item = cur_item->next;
129
+ }
130
+ assert (cur_item);
131
+ *prev_item = item->next;
132
+ self->size--;
133
+ if (hard) {
134
+ if (item->free_fn)
135
+ (item->free_fn) (item->value);
136
+ else
137
+ if (self->autofree)
138
+ freen (item->value);
139
+
140
+ freen (item->key);
141
+ self->cursor_item = NULL;
142
+ self->cursor_key = NULL;
143
+ freen (item);
144
+ }
145
+ }
146
+
147
+
148
+ // --------------------------------------------------------------------------
149
+ // Insert item into hash table with specified key and item
150
+ // If key is already present returns -1 and leaves existing item unchanged
151
+ // Returns 0 on success.
152
+
153
+ int
154
+ zhash_insert (zhash_t *self, const char *key, void *value)
155
+ {
156
+ assert (self);
157
+ assert (key);
158
+
159
+ // If we're exceeding the load factor of the hash table,
160
+ // resize it according to the growth factor
161
+ if (self->size >= self->limit * LOAD_FACTOR / 100) {
162
+ // Create new hash table
163
+ size_t new_limit = self->limit * GROWTH_FACTOR / 100;
164
+ item_t **new_items = (item_t **) zmalloc (sizeof (item_t *) * new_limit);
165
+ if (!new_items)
166
+ return -1;
167
+
168
+ // Move all items to the new hash table, rehashing to
169
+ // take into account new hash table limit
170
+ uint index;
171
+ for (index = 0; index != self->limit; index++) {
172
+ item_t *cur_item = self->items [index];
173
+ while (cur_item) {
174
+ item_t *next_item = cur_item->next;
175
+ uint new_index = s_item_hash (cur_item->key, new_limit);
176
+ cur_item->index = new_index;
177
+ cur_item->next = new_items [new_index];
178
+ new_items [new_index] = cur_item;
179
+ cur_item = next_item;
180
+ }
181
+ }
182
+ // Destroy old hash table
183
+ freen (self->items);
184
+ self->items = new_items;
185
+ self->limit = new_limit;
186
+ }
187
+ return s_item_insert (self, key, value)? 0: -1;
188
+ }
189
+
190
+
191
+ // --------------------------------------------------------------------------
192
+ // Local helper function
193
+ // Compute hash for key string
194
+
195
+ static uint
196
+ s_item_hash (const char *key, size_t limit)
197
+ {
198
+ // Modified Bernstein hashing function
199
+ uint key_hash = 0;
200
+ while (*key)
201
+ key_hash = 33 * key_hash ^ *key++;
202
+ key_hash %= limit;
203
+ return key_hash;
204
+ }
205
+
206
+
207
+ // --------------------------------------------------------------------------
208
+ // Local helper function
209
+ // Insert new item into hash table, returns item
210
+ // If item already existed, returns NULL
211
+
212
+ static item_t *
213
+ s_item_insert (zhash_t *self, const char *key, void *value)
214
+ {
215
+ // Check that item does not already exist in hash table
216
+ // Leaves self->cached_index with calculated hash item
217
+ item_t *item = s_item_lookup (self, key);
218
+ if (item == NULL) {
219
+ item = (item_t *) zmalloc (sizeof (item_t));
220
+ assert (item);
221
+
222
+ // If necessary, take duplicate of item (string) value
223
+ if (self->autofree) {
224
+ value = strdup ((char *) value);
225
+ assert (value);
226
+ }
227
+ item->value = value;
228
+ item->key = strdup (key);
229
+ item->index = self->cached_index;
230
+
231
+ // Insert into start of bucket list
232
+ item->next = self->items [self->cached_index];
233
+ self->items [self->cached_index] = item;
234
+ self->size++;
235
+ }
236
+ else
237
+ item = NULL; // Signal duplicate insertion
238
+
239
+ return item;
240
+ }
241
+
242
+
243
+ // --------------------------------------------------------------------------
244
+ // Local helper function
245
+ // Lookup item in hash table, returns item or NULL
246
+
247
+ static item_t *
248
+ s_item_lookup (zhash_t *self, const char *key)
249
+ {
250
+ // Look in bucket list for item by key
251
+ self->cached_index = s_item_hash (key, self->limit);
252
+ item_t *item = self->items [self->cached_index];
253
+ while (item) {
254
+ if (streq (item->key, key))
255
+ break;
256
+ item = item->next;
257
+ }
258
+ return item;
259
+ }
260
+
261
+
262
+ // --------------------------------------------------------------------------
263
+ // Update item into hash table with specified key and item.
264
+ // If key is already present, destroys old item and inserts new one.
265
+ // Use free_fn method to ensure deallocator is properly called on item.
266
+
267
+ void
268
+ zhash_update (zhash_t *self, const char *key, void *value)
269
+ {
270
+ assert (self);
271
+ assert (key);
272
+
273
+ item_t *item = s_item_lookup (self, key);
274
+ if (item) {
275
+ if (item->free_fn)
276
+ (item->free_fn) (item->value);
277
+ else
278
+ if (self->autofree)
279
+ freen (item->value);
280
+
281
+ // If necessary, take duplicate of item (string) value
282
+ if (self->autofree) {
283
+ value = strdup ((char *) value);
284
+ assert (value);
285
+ }
286
+ item->value = value;
287
+ }
288
+ else
289
+ zhash_insert (self, key, value);
290
+ }
291
+
292
+
293
+ // --------------------------------------------------------------------------
294
+ // Remove an item specified by key from the hash table. If there was no such
295
+ // item, this function does nothing.
296
+
297
+ void
298
+ zhash_delete (zhash_t *self, const char *key)
299
+ {
300
+ assert (self);
301
+ assert (key);
302
+
303
+ item_t *item = s_item_lookup (self, key);
304
+ if (item)
305
+ s_item_destroy (self, item, true);
306
+ }
307
+
308
+
309
+ // --------------------------------------------------------------------------
310
+ // Look for item in hash table and return its item, or NULL
311
+
312
+ void *
313
+ zhash_lookup (zhash_t *self, const char *key)
314
+ {
315
+ assert (self);
316
+ assert (key);
317
+
318
+ item_t *item = s_item_lookup (self, key);
319
+ if (item)
320
+ return item->value;
321
+ else
322
+ return NULL;
323
+ }
324
+
325
+
326
+ // --------------------------------------------------------------------------
327
+ // Reindexes an item from an old key to a new key. If there was no such
328
+ // item, does nothing. If the new key already exists, deletes old item.
329
+
330
+ int
331
+ zhash_rename (zhash_t *self, const char *old_key, const char *new_key)
332
+ {
333
+ item_t *old_item = s_item_lookup (self, old_key);
334
+ item_t *new_item = s_item_lookup (self, new_key);
335
+ if (old_item && !new_item) {
336
+ s_item_destroy (self, old_item, false);
337
+ freen (old_item->key);
338
+ old_item->key = strdup (new_key);
339
+ assert (old_item->key);
340
+ old_item->index = self->cached_index;
341
+ old_item->next = self->items [self->cached_index];
342
+ self->items [self->cached_index] = old_item;
343
+ self->size++;
344
+ return 0;
345
+ }
346
+ else
347
+ return -1;
348
+ }
349
+
350
+
351
+ // --------------------------------------------------------------------------
352
+ // Set a free function for the specified hash table item. When the item is
353
+ // destroyed, the free function, if any, is called on that item.
354
+ // Use this when hash items are dynamically allocated, to ensure that
355
+ // you don't have memory leaks. You can pass 'free' or NULL as a free_fn.
356
+ // Returns the item, or NULL if there is no such item.
357
+
358
+ void *
359
+ zhash_freefn (zhash_t *self, const char *key, zhash_free_fn free_fn)
360
+ {
361
+ assert (self);
362
+ assert (key);
363
+
364
+ item_t *item = s_item_lookup (self, key);
365
+ if (item) {
366
+ item->free_fn = free_fn;
367
+ return item->value;
368
+ }
369
+ else
370
+ return NULL;
371
+ }
372
+
373
+
374
+ // --------------------------------------------------------------------------
375
+ // Return size of hash table
376
+
377
+ size_t
378
+ zhash_size (zhash_t *self)
379
+ {
380
+ assert (self);
381
+ return self->size;
382
+ }
383
+
384
+
385
+ // --------------------------------------------------------------------------
386
+ // Make copy of hash table
387
+ // Does not copy items themselves. Rebuilds new table so may be slow on
388
+ // very large tables. NOTE: only works with item values that are strings
389
+ // since there's no other way to know how to duplicate the item value.
390
+
391
+ zhash_t *
392
+ zhash_dup (zhash_t *self)
393
+ {
394
+ if (!self)
395
+ return NULL;
396
+
397
+ zhash_t *copy = zhash_new ();
398
+ zhash_autofree (copy);
399
+ if (copy) {
400
+ uint index;
401
+ for (index = 0; index != self->limit; index++) {
402
+ item_t *item = self->items [index];
403
+ while (item) {
404
+ zhash_insert (copy, item->key, item->value);
405
+ item = item->next;
406
+ }
407
+ }
408
+ }
409
+ return copy;
410
+ }
411
+
412
+
413
+ // --------------------------------------------------------------------------
414
+ // Return keys for items in table
415
+
416
+ zlist_t *
417
+ zhash_keys (zhash_t *self)
418
+ {
419
+ assert (self);
420
+ zlist_t *keys = zlist_new ();
421
+ if (!keys)
422
+ return NULL;
423
+ zlist_autofree (keys);
424
+
425
+ uint index;
426
+ for (index = 0; index != self->limit; index++) {
427
+ item_t *item = self->items [index];
428
+ while (item) {
429
+ zlist_append (keys, item->key);
430
+ item = item->next;
431
+ }
432
+ }
433
+ return keys;
434
+ }
435
+
436
+
437
+ // --------------------------------------------------------------------------
438
+ // Simple iterator; returns first item in hash table, in no given order,
439
+ // or NULL if the table is empty. This method is simpler to use than the
440
+ // foreach() method, which is deprecated. NOTE: do NOT modify the table
441
+ // while iterating.
442
+
443
+ void *
444
+ zhash_first (zhash_t *self)
445
+ {
446
+ assert (self);
447
+ // Point to before or at first item
448
+ self->cursor_index = 0;
449
+ self->cursor_item = self->items [self->cursor_index];
450
+ // Now scan forwards to find it, leave cursor after item
451
+ return zhash_next (self);
452
+ }
453
+
454
+
455
+ // --------------------------------------------------------------------------
456
+ // Simple iterator; returns next item in hash table, in no given order,
457
+ // or NULL if the last item was already returned. Use this together with
458
+ // zhash_first() to process all items in a hash table. If you need the
459
+ // items in sorted order, use zhash_keys() and then zlist_sort(). NOTE:
460
+ // do NOT modify the table while iterating.
461
+
462
+ void *
463
+ zhash_next (zhash_t *self)
464
+ {
465
+ assert (self);
466
+ // Scan forward from cursor until we find an item
467
+ while (self->cursor_item == NULL) {
468
+ if (self->cursor_index < self->limit - 1)
469
+ self->cursor_index++;
470
+ else
471
+ return NULL; // At end of table
472
+
473
+ // Get first item in next bucket
474
+ self->cursor_item = self->items [self->cursor_index];
475
+ }
476
+ // We have an item, so return it, and bump past it
477
+ assert (self->cursor_item);
478
+ item_t *item = self->cursor_item;
479
+ self->cursor_key = item->key;
480
+ self->cursor_item = self->cursor_item->next;
481
+ return item->value;
482
+ }
483
+
484
+
485
+ // --------------------------------------------------------------------------
486
+ // After a successful first/next method, returns the key for the item that
487
+ // was returned. This is a constant string that you may not modify or
488
+ // deallocate, and which lasts as long as the item in the hash. After an
489
+ // unsuccessful first/next, returns NULL.
490
+
491
+ const char *
492
+ zhash_cursor (zhash_t *self)
493
+ {
494
+ assert (self);
495
+ return self->cursor_key;
496
+ }
497
+
498
+
499
+ // --------------------------------------------------------------------------
500
+ // Add a comment to hash table before saving to disk. You can add as many
501
+ // comment lines as you like. These comment lines are discarded when loading
502
+ // the file. If you use a null format, all comments are deleted.
503
+
504
+ void
505
+ zhash_comment (zhash_t *self, const char *format, ...)
506
+ {
507
+ if (format) {
508
+ if (!self->comments) {
509
+ self->comments = zlist_new ();
510
+ if (!self->comments)
511
+ return;
512
+ zlist_autofree (self->comments);
513
+ }
514
+ va_list argptr;
515
+ va_start (argptr, format);
516
+ char *string = zsys_vprintf (format, argptr);
517
+ va_end (argptr);
518
+ if (string)
519
+ zlist_append (self->comments, string);
520
+ zstr_free (&string);
521
+ }
522
+ else
523
+ zlist_destroy (&self->comments);
524
+ }
525
+
526
+
527
+ // --------------------------------------------------------------------------
528
+ // Save hash table to a text file in name=value format
529
+ // Hash values must be printable strings.
530
+ // Returns 0 if OK, else -1 if a file error occurred
531
+
532
+ int
533
+ zhash_save (zhash_t *self, const char *filename)
534
+ {
535
+ assert (self);
536
+
537
+ FILE *handle = fopen (filename, "w");
538
+ if (!handle)
539
+ return -1; // Failed to create file
540
+
541
+ if (self->comments) {
542
+ char *comment = (char *) zlist_first (self->comments);
543
+ while (comment) {
544
+ fprintf (handle, "# %s\n", comment);
545
+ comment = (char *) zlist_next (self->comments);
546
+ }
547
+ fprintf (handle, "\n");
548
+ }
549
+ uint index;
550
+ for (index = 0; index != self->limit; index++) {
551
+ item_t *item = self->items [index];
552
+ while (item) {
553
+ fprintf (handle, "%s=%s\n", item->key, (char *) item->value);
554
+ item = item->next;
555
+ }
556
+ }
557
+ fclose (handle);
558
+ return 0;
559
+ }
560
+
561
+
562
+ // --------------------------------------------------------------------------
563
+ // Load hash table from a text file in name=value format; hash table must
564
+ // already exist. Hash values must printable strings.
565
+ // Returns 0 if OK, else -1 if a file was not readable.
566
+
567
+ int
568
+ zhash_load (zhash_t *self, const char *filename)
569
+ {
570
+ assert (self);
571
+ zhash_autofree (self);
572
+
573
+ // Whether or not file exists, we'll track the filename and last
574
+ // modification date (0 for unknown files), so that zhash_refresh ()
575
+ // will always work after zhash_load (), to load a newly-created
576
+ // file.
577
+
578
+ // Take copy of filename in case self->filename is same string.
579
+ char *filename_copy = strdup (filename);
580
+ assert (filename_copy);
581
+ freen (self->filename);
582
+ self->filename = filename_copy;
583
+ self->modified = zsys_file_modified (self->filename);
584
+
585
+ FILE *handle = fopen (self->filename, "r");
586
+ if (handle) {
587
+ char *buffer = (char *) zmalloc (1024);
588
+ assert (buffer);
589
+ while (fgets (buffer, 1024, handle)) {
590
+ // Skip lines starting with "#" or that do not look like
591
+ // name=value data.
592
+ char *equals = strchr (buffer, '=');
593
+ if (buffer [0] == '#' || equals == buffer || !equals)
594
+ continue;
595
+
596
+ // Buffer may end in newline, which we don't want
597
+ if (buffer [strlen (buffer) - 1] == '\n')
598
+ buffer [strlen (buffer) - 1] = 0;
599
+ *equals++ = 0;
600
+ zhash_update (self, buffer, equals);
601
+ }
602
+ freen (buffer);
603
+ fclose (handle);
604
+ }
605
+ else
606
+ return -1; // Failed to open file for reading
607
+
608
+ return 0;
609
+ }
610
+
611
+
612
+ // --------------------------------------------------------------------------
613
+ // When a hash table was loaded from a file by zhash_load, this method will
614
+ // reload the file if it has been modified since, and is "stable", i.e. not
615
+ // still changing. Returns 0 if OK, -1 if there was an error reloading the
616
+ // file.
617
+
618
+ int
619
+ zhash_refresh (zhash_t *self)
620
+ {
621
+ assert (self);
622
+
623
+ if (self->filename) {
624
+ if (zsys_file_modified (self->filename) > self->modified
625
+ && zsys_file_stable (self->filename)) {
626
+ // Empty the hash table; code is copied from zhash_destroy
627
+ uint index;
628
+ for (index = 0; index < self->limit; index++) {
629
+ // Destroy all items in this hash bucket
630
+ item_t *cur_item = self->items [index];
631
+ while (cur_item) {
632
+ item_t *next_item = cur_item->next;
633
+ s_item_destroy (self, cur_item, true);
634
+ cur_item = next_item;
635
+ }
636
+ }
637
+ zhash_load (self, self->filename);
638
+ }
639
+ }
640
+ return 0;
641
+ }
642
+
643
+
644
+ // --------------------------------------------------------------------------
645
+ // Serialize hash table to a binary frame that can be sent in a message.
646
+ // The packed format is compatible with the 'dictionary' type defined in
647
+ // http://rfc.zeromq.org/spec:35/FILEMQ, and implemented by zproto:
648
+ //
649
+ // ; A list of name/value pairs
650
+ // dictionary = dict-count *( dict-name dict-value )
651
+ // dict-count = number-4
652
+ // dict-value = longstr
653
+ // dict-name = string
654
+ //
655
+ // ; Strings are always length + text contents
656
+ // longstr = number-4 *VCHAR
657
+ // string = number-1 *VCHAR
658
+ //
659
+ // ; Numbers are unsigned integers in network byte order
660
+ // number-1 = 1OCTET
661
+ // number-4 = 4OCTET
662
+ //
663
+ // Comments are not included in the packed data. Item values MUST be
664
+ // strings.
665
+
666
+ zframe_t *
667
+ zhash_pack (zhash_t *self)
668
+ {
669
+ assert (self);
670
+
671
+ // First, calculate packed data size
672
+ size_t frame_size = 4; // Dictionary size, number-4
673
+ uint index;
674
+ for (index = 0; index < self->limit; index++) {
675
+ item_t *item = self->items [index];
676
+ while (item) {
677
+ // We store key as short string
678
+ frame_size += 1 + strlen ((char *) item->key);
679
+ // We store value as long string
680
+ frame_size += 4 + strlen ((char *) item->value);
681
+ item = item->next;
682
+ }
683
+ }
684
+ // Now serialize items into the frame
685
+ zframe_t *frame = zframe_new (NULL, frame_size);
686
+ if (!frame)
687
+ return NULL;
688
+ byte *needle = zframe_data (frame);
689
+ // Store size as number-4
690
+ *(uint32_t *) needle = htonl ((uint32_t) self->size);
691
+ needle += 4;
692
+ for (index = 0; index < self->limit; index++) {
693
+ item_t *item = self->items [index];
694
+ while (item) {
695
+ // Store key as string
696
+ *needle++ = (byte) strlen ((char *) item->key);
697
+ memcpy (needle, item->key, strlen ((char *) item->key));
698
+ needle += strlen ((char *) item->key);
699
+
700
+ // Store value as longstr
701
+ size_t length = strlen ((char *) item->value);
702
+ *(uint32_t *) needle = htonl ((u_long) length);
703
+ needle += 4;
704
+ memcpy (needle, (char *) item->value, strlen ((char *) item->value));
705
+ needle += strlen ((char *) item->value);
706
+ item = item->next;
707
+ }
708
+ }
709
+ return frame;
710
+ }
711
+
712
+
713
+ // --------------------------------------------------------------------------
714
+ // Unpack binary frame into a new hash table. Packed data must follow format
715
+ // defined by zhash_pack. Hash table is set to autofree. An empty frame
716
+ // unpacks to an empty hash table.
717
+
718
+ zhash_t *
719
+ zhash_unpack (zframe_t *frame)
720
+ {
721
+ zhash_t *self = zhash_new ();
722
+ if (!self)
723
+ return NULL;
724
+ assert (frame);
725
+ if (zframe_size (frame) < 4)
726
+ return self; // Arguable...
727
+
728
+ byte *needle = zframe_data (frame);
729
+ byte *ceiling = needle + zframe_size (frame);
730
+ size_t nbr_items = ntohl (*(uint32_t *) needle);
731
+ needle += 4;
732
+ while (nbr_items && needle < ceiling) {
733
+ // Get key as string
734
+ size_t key_size = *needle++;
735
+ if (needle + key_size <= ceiling) {
736
+ char key [256];
737
+ memcpy (key, needle, key_size);
738
+ key [key_size] = 0;
739
+ needle += key_size;
740
+
741
+ // Get value as longstr
742
+ if (needle + 4 <= ceiling) {
743
+ size_t value_size = ntohl (*(uint32_t *) needle);
744
+ needle += 4;
745
+ // Be wary of malformed frames
746
+ if (needle + value_size <= ceiling) {
747
+ char *value = (char *) malloc (value_size + 1);
748
+ memcpy (value, needle, value_size);
749
+ value [value_size] = 0;
750
+ needle += value_size;
751
+
752
+ // Hash takes ownership of value
753
+ if (zhash_insert (self, key, value)) {
754
+ zhash_destroy (&self);
755
+ break;
756
+ }
757
+ }
758
+ }
759
+ }
760
+ }
761
+ // Hash will free values in destructor
762
+ if (self)
763
+ zhash_autofree (self);
764
+ return self;
765
+ }
766
+
767
+
768
+ // --------------------------------------------------------------------------
769
+ // Set hash for automatic value destruction
770
+
771
+ void
772
+ zhash_autofree (zhash_t *self)
773
+ {
774
+ assert (self);
775
+ self->autofree = true;
776
+ }
777
+
778
+
779
+ // --------------------------------------------------------------------------
780
+ // Runs selftest of class
781
+ //
782
+
783
+ void
784
+ zhash_test (bool verbose)
785
+ {
786
+ printf (" * zhash: ");
787
+
788
+ // @selftest
789
+ zhash_t *hash = zhash_new ();
790
+ assert (hash);
791
+ assert (zhash_size (hash) == 0);
792
+ assert (zhash_first (hash) == NULL);
793
+ assert (zhash_cursor (hash) == NULL);
794
+
795
+ // Insert some items
796
+ int rc;
797
+ rc = zhash_insert (hash, "DEADBEEF", "dead beef");
798
+ char *item = (char *) zhash_first (hash);
799
+ assert (streq (zhash_cursor (hash), "DEADBEEF"));
800
+ assert (streq (item, "dead beef"));
801
+ assert (rc == 0);
802
+ rc = zhash_insert (hash, "ABADCAFE", "a bad cafe");
803
+ assert (rc == 0);
804
+ rc = zhash_insert (hash, "C0DEDBAD", "coded bad");
805
+ assert (rc == 0);
806
+ rc = zhash_insert (hash, "DEADF00D", "dead food");
807
+ assert (rc == 0);
808
+ assert (zhash_size (hash) == 4);
809
+
810
+ // Look for existing items
811
+ item = (char *) zhash_lookup (hash, "DEADBEEF");
812
+ assert (streq (item, "dead beef"));
813
+ item = (char *) zhash_lookup (hash, "ABADCAFE");
814
+ assert (streq (item, "a bad cafe"));
815
+ item = (char *) zhash_lookup (hash, "C0DEDBAD");
816
+ assert (streq (item, "coded bad"));
817
+ item = (char *) zhash_lookup (hash, "DEADF00D");
818
+ assert (streq (item, "dead food"));
819
+
820
+ // Look for non-existent items
821
+ item = (char *) zhash_lookup (hash, "foo");
822
+ assert (item == NULL);
823
+
824
+ // Try to insert duplicate items
825
+ rc = zhash_insert (hash, "DEADBEEF", "foo");
826
+ assert (rc == -1);
827
+ item = (char *) zhash_lookup (hash, "DEADBEEF");
828
+ assert (streq (item, "dead beef"));
829
+
830
+ // Some rename tests
831
+
832
+ // Valid rename, key is now LIVEBEEF
833
+ rc = zhash_rename (hash, "DEADBEEF", "LIVEBEEF");
834
+ assert (rc == 0);
835
+ item = (char *) zhash_lookup (hash, "LIVEBEEF");
836
+ assert (streq (item, "dead beef"));
837
+
838
+ // Trying to rename an unknown item to a non-existent key
839
+ rc = zhash_rename (hash, "WHATBEEF", "NONESUCH");
840
+ assert (rc == -1);
841
+
842
+ // Trying to rename an unknown item to an existing key
843
+ rc = zhash_rename (hash, "WHATBEEF", "LIVEBEEF");
844
+ assert (rc == -1);
845
+ item = (char *) zhash_lookup (hash, "LIVEBEEF");
846
+ assert (streq (item, "dead beef"));
847
+
848
+ // Trying to rename an existing item to another existing item
849
+ rc = zhash_rename (hash, "LIVEBEEF", "ABADCAFE");
850
+ assert (rc == -1);
851
+ item = (char *) zhash_lookup (hash, "LIVEBEEF");
852
+ assert (streq (item, "dead beef"));
853
+ item = (char *) zhash_lookup (hash, "ABADCAFE");
854
+ assert (streq (item, "a bad cafe"));
855
+
856
+ // Test keys method
857
+ zlist_t *keys = zhash_keys (hash);
858
+ assert (zlist_size (keys) == 4);
859
+ zlist_destroy (&keys);
860
+
861
+ // Test dup method
862
+ zhash_t *copy = zhash_dup (hash);
863
+ assert (zhash_size (copy) == 4);
864
+ item = (char *) zhash_lookup (copy, "LIVEBEEF");
865
+ assert (item);
866
+ assert (streq (item, "dead beef"));
867
+ zhash_destroy (&copy);
868
+
869
+ // Test pack/unpack methods
870
+ zframe_t *frame = zhash_pack (hash);
871
+ copy = zhash_unpack (frame);
872
+ zframe_destroy (&frame);
873
+ assert (zhash_size (copy) == 4);
874
+ item = (char *) zhash_lookup (copy, "LIVEBEEF");
875
+ assert (item);
876
+ assert (streq (item, "dead beef"));
877
+ zhash_destroy (&copy);
878
+
879
+ // Test save and load
880
+ zhash_comment (hash, "This is a test file");
881
+ zhash_comment (hash, "Created by %s", "czmq_selftest");
882
+ zhash_save (hash, ".cache");
883
+ copy = zhash_new ();
884
+ assert (copy);
885
+ zhash_load (copy, ".cache");
886
+ item = (char *) zhash_lookup (copy, "LIVEBEEF");
887
+ assert (item);
888
+ assert (streq (item, "dead beef"));
889
+ zhash_destroy (&copy);
890
+ zsys_file_delete (".cache");
891
+
892
+ // Delete a item
893
+ zhash_delete (hash, "LIVEBEEF");
894
+ item = (char *) zhash_lookup (hash, "LIVEBEEF");
895
+ assert (item == NULL);
896
+ assert (zhash_size (hash) == 3);
897
+
898
+ // Check that the queue is robust against random usage
899
+ struct {
900
+ char name [100];
901
+ bool exists;
902
+ } testset [200];
903
+ memset (testset, 0, sizeof (testset));
904
+ int testmax = 200, testnbr, iteration;
905
+
906
+ srandom ((unsigned) time (NULL));
907
+ for (iteration = 0; iteration < 25000; iteration++) {
908
+ testnbr = randof (testmax);
909
+ assert (testnbr != testmax);
910
+ assert (testnbr < testmax);
911
+ if (testset [testnbr].exists) {
912
+ item = (char *) zhash_lookup (hash, testset [testnbr].name);
913
+ assert (item);
914
+ zhash_delete (hash, testset [testnbr].name);
915
+ testset [testnbr].exists = false;
916
+ }
917
+ else {
918
+ sprintf (testset [testnbr].name, "%x-%x", rand (), rand ());
919
+ if (zhash_insert (hash, testset [testnbr].name, "") == 0)
920
+ testset [testnbr].exists = true;
921
+ }
922
+ }
923
+ // Test 10K lookups
924
+ for (iteration = 0; iteration < 10000; iteration++)
925
+ item = (char *) zhash_lookup (hash, "DEADBEEFABADCAFE");
926
+
927
+ // Destructor should be safe to call twice
928
+ zhash_destroy (&hash);
929
+ zhash_destroy (&hash);
930
+ assert (hash == NULL);
931
+
932
+ // Test autofree; automatically copies and frees string values
933
+ hash = zhash_new ();
934
+ assert (hash);
935
+ zhash_autofree (hash);
936
+ char value [255];
937
+ strcpy (value, "This is a string");
938
+ rc = zhash_insert (hash, "key1", value);
939
+ assert (rc == 0);
940
+ strcpy (value, "Inserting with the same key will fail");
941
+ rc = zhash_insert (hash, "key1", value);
942
+ assert (rc == -1);
943
+ strcpy (value, "Ring a ding ding");
944
+ rc = zhash_insert (hash, "key2", value);
945
+ assert (rc == 0);
946
+ assert (streq ((char *) zhash_lookup (hash, "key1"), "This is a string"));
947
+ assert (streq ((char *) zhash_lookup (hash, "key2"), "Ring a ding ding"));
948
+ zhash_destroy (&hash);
949
+
950
+ #if defined (__WINDOWS__)
951
+ zsys_shutdown();
952
+ #endif
953
+ // @end
954
+
955
+ printf ("OK\n");
956
+ }