laag-libczmq 4.1.0.0

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