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,407 @@
1
+ /* =========================================================================
2
+ zcertstore - work with CURVE security certificate stores
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
+ To authenticate new clients using the ZeroMQ CURVE security mechanism,
17
+ we have to check that the client's public key matches a key we know and
18
+ accept. There are numerous ways to store accepted client public keys.
19
+ The mechanism CZMQ implements is "certificates" (plain text files) held
20
+ in a "certificate store" (a disk directory). This class works with such
21
+ certificate stores, and lets you easily load them from disk, and check
22
+ if a given client public key is known or not. The zcert class does the
23
+ work of managing a single certificate.
24
+ @discuss
25
+ The certificate store can be memory-only, in which case you can load it
26
+ yourself by inserting certificate objects one by one, or it can be loaded
27
+ from disk, in which case you can add, modify, or remove certificates on
28
+ disk at any time, and the store will detect such changes and refresh
29
+ itself automatically. In most applications you won't use this class
30
+ directly but through the zauth class, which provides a high-level API for
31
+ authentication (and manages certificate stores for you). To actually
32
+ create certificates on disk, use the zcert class in code, or the
33
+ tools/zmakecert.c command line tool, or any text editor. The format of a
34
+ certificate file is defined in the zcert man page.
35
+ @end
36
+ */
37
+
38
+ #include "czmq_classes.h"
39
+
40
+
41
+ // --------------------------------------------------------------------------
42
+ // Disk loader
43
+
44
+ typedef struct _disk_loader_state {
45
+ char *location; // Directory location
46
+ // This isn't sufficient; we should check the hash of all files
47
+ // or else use a trigger like inotify on Linux.
48
+ time_t modified; // Modified time of directory
49
+ size_t count; // Number of certificates
50
+ size_t cursize; // Total size of certificates
51
+ } disk_loader_state;
52
+
53
+
54
+ // --------------------------------------------------------------------------
55
+ // Zcertstore
56
+
57
+ struct _zcertstore_t {
58
+ zcertstore_loader *loader; // Certificate loader fn
59
+ zcertstore_destructor *destructor; // Certificate loader state destructor
60
+ void *state; // Certificate loader state data
61
+ zhashx_t *certs; // Loaded certificates
62
+ };
63
+
64
+
65
+ // --------------------------------------------------------------------------
66
+ // Disk loader
67
+
68
+ static void s_disk_loader (zcertstore_t *self);
69
+
70
+ static void
71
+ s_disk_loader (zcertstore_t *certstore)
72
+ {
73
+ disk_loader_state *state = (disk_loader_state *)certstore->state;
74
+ zdir_t *dir = zdir_new (state->location, NULL);
75
+ if (dir
76
+ && (state->modified != zdir_modified (dir)
77
+ || state->count != zdir_count (dir)
78
+ || state->cursize != (size_t) zdir_cursize (dir)))
79
+ {
80
+ zhashx_purge (certstore->certs);
81
+
82
+ // Load all certificates including those in subdirectories
83
+ zfile_t **filelist = zdir_flatten (dir);
84
+ assert (filelist);
85
+ zrex_t *rex = zrex_new ("_secret$");
86
+ assert (rex);
87
+
88
+ uint index;
89
+ for (index = 0;; index++) {
90
+ zfile_t *file = filelist [index];
91
+ if (!file)
92
+ break; // End of list
93
+ if (zfile_is_regular (file)
94
+ && !zrex_matches (rex, zfile_filename (file, NULL))) {
95
+ zcert_t *cert = zcert_load (zfile_filename (file, NULL));
96
+ if (cert)
97
+ zcertstore_insert (certstore, &cert);
98
+ }
99
+ }
100
+ zdir_flatten_free (&filelist);
101
+ state->modified = zdir_modified (dir);
102
+ state->count = zdir_count (dir);
103
+ state->cursize = zdir_cursize (dir);
104
+
105
+ zrex_destroy (&rex);
106
+ }
107
+ zdir_destroy (&dir);
108
+ }
109
+
110
+
111
+ // --------------------------------------------------------------------------
112
+ // Disk loader destructor
113
+
114
+ static void
115
+ s_disk_loader_state_destroy (void **self_p)
116
+ {
117
+ assert (self_p);
118
+ if (*self_p) {
119
+ disk_loader_state *self = (disk_loader_state *)*self_p;
120
+ freen (self->location);
121
+ freen (self);
122
+ *self_p = NULL;
123
+ }
124
+ }
125
+
126
+
127
+ // --------------------------------------------------------------------------
128
+ // Constructor
129
+ //
130
+ // Create a new certificate store, loading and indexing all certificates from
131
+ // the loader callback. The default loader is the directory loader, which
132
+ // gathers certificates from a local system folder. Specifying the location
133
+ // argument will setup the directory loader for this zcertstore instance. The
134
+ // directory itself may be absent, and created later, or modified at any time.
135
+ // The certificate store is automatically refreshed on any zcertstore_lookup()
136
+ // call. If the location is specified as NULL, creates a pure-memory store,
137
+ // which you can work with by inserting certificates at runtime.
138
+
139
+ zcertstore_t *
140
+ zcertstore_new (const char *location)
141
+ {
142
+ zcertstore_t *self = (zcertstore_t *) zmalloc (sizeof (zcertstore_t));
143
+ assert (self);
144
+
145
+ self->certs = zhashx_new ();
146
+ assert (self->certs);
147
+ zhashx_set_destructor (self->certs, (czmq_destructor *) zcert_destroy);
148
+
149
+ if (location) {
150
+ disk_loader_state *state = (disk_loader_state *) zmalloc (sizeof (disk_loader_state));
151
+ state->location = strdup (location);
152
+ assert (state->location);
153
+ state->modified = 0;
154
+ state->count = 0;
155
+ state->cursize = 0;
156
+ zcertstore_set_loader (self, s_disk_loader, s_disk_loader_state_destroy, (void *)state);
157
+ }
158
+ return self;
159
+ }
160
+
161
+
162
+ // --------------------------------------------------------------------------
163
+ // Destructor
164
+ //
165
+ // Destroy a certificate store object in memory. Does not affect anything
166
+ // stored on disk.
167
+
168
+ void
169
+ zcertstore_destroy (zcertstore_t **self_p)
170
+ {
171
+ assert (self_p);
172
+ if (*self_p) {
173
+ zcertstore_t *self = *self_p;
174
+ zhashx_destroy (&self->certs);
175
+
176
+ if (self->destructor)
177
+ self->destructor (&self->state);
178
+
179
+ freen (self);
180
+ *self_p = NULL;
181
+ }
182
+ }
183
+
184
+
185
+ // --------------------------------------------------------------------------
186
+ // Override the default disk loader with a custom loader fn.
187
+
188
+ void
189
+ zcertstore_set_loader (zcertstore_t *self, zcertstore_loader loader, zcertstore_destructor destructor, void *state)
190
+ {
191
+ if (self->destructor && self->state)
192
+ self->destructor (&self->state);
193
+ self->loader = loader;
194
+ self->destructor = destructor;
195
+ self->state = state;
196
+ self->loader (self);
197
+ }
198
+
199
+
200
+ // --------------------------------------------------------------------------
201
+ // Look up certificate by public key, returns zcert_t object if found,
202
+ // else returns NULL. The public key is provided in Z85 text format.
203
+
204
+ zcert_t *
205
+ zcertstore_lookup (zcertstore_t *self, const char *public_key)
206
+ {
207
+ if (self->loader)
208
+ self->loader (self);
209
+
210
+ return (zcert_t *) zhashx_lookup (self->certs, public_key);
211
+ }
212
+
213
+
214
+ // --------------------------------------------------------------------------
215
+ // Insert certificate into certificate store in memory. Note that this
216
+ // does not save the certificate to disk. To do that, use zcert_save()
217
+ // directly on the certificate.
218
+
219
+ void
220
+ zcertstore_insert (zcertstore_t *self, zcert_t **cert_p)
221
+ {
222
+ int rc = zhashx_insert (self->certs, zcert_public_txt (*cert_p), *cert_p);
223
+ assert (rc == 0);
224
+ *cert_p = NULL; // We own this now
225
+ }
226
+
227
+
228
+ // --------------------------------------------------------------------------
229
+ // Empty certificate hashtable
230
+ // This wrapper exists to be friendly to bindings, which don't usually have
231
+ // access to struct internals (e.g. self->certs).
232
+
233
+ void
234
+ zcertstore_empty (zcertstore_t *self)
235
+ {
236
+ zhashx_purge (self->certs);
237
+ }
238
+
239
+ // --------------------------------------------------------------------------
240
+ // Return a list of all the certificates in the store
241
+
242
+ zlistx_t *
243
+ zcertstore_certs (zcertstore_t *self)
244
+ {
245
+ if (self->loader)
246
+ self->loader (self);
247
+ zlistx_t *certs = zhashx_values(self->certs);
248
+ zlistx_set_destructor (certs, NULL);
249
+ return certs;
250
+ }
251
+
252
+ // --------------------------------------------------------------------------
253
+ // Print list of certificates in store to stdout
254
+
255
+ void
256
+ zcertstore_print (zcertstore_t *self)
257
+ {
258
+ if (self->loader)
259
+ zsys_info ("zcertstore: certificates in store");
260
+ else
261
+ zsys_info ("zcertstore: certificates in memory");
262
+
263
+ zcert_t *cert = (zcert_t *) zhashx_first (self->certs);
264
+ while (cert) {
265
+ zcert_print (cert);
266
+ cert = (zcert_t *) zhashx_next (self->certs);
267
+ }
268
+ }
269
+
270
+
271
+ // --------------------------------------------------------------------------
272
+ // Selftest
273
+
274
+ // Trivial example state for testing
275
+ typedef struct _test_loader_state {
276
+ int index;
277
+ } test_loader_state;
278
+
279
+ static void
280
+ s_test_loader (zcertstore_t *certstore)
281
+ {
282
+ zcertstore_empty (certstore);
283
+
284
+ byte public_key [32] = { 31, 133, 154, 36, 47, 67, 155, 5, 63, 1,
285
+ 155, 230, 78, 191, 156, 199, 94, 125, 157, 168,
286
+ 109, 69, 19, 241, 44, 29, 154, 216, 59, 219,
287
+ 155, 185 };
288
+ byte secret_key [32] = { 31, 133, 154, 36, 47, 67, 155, 5, 63, 1,
289
+ 155, 230, 78, 191, 156, 199, 94, 125, 157, 168,
290
+ 109, 69, 19, 241, 44, 29, 154, 216, 59, 219,
291
+ 155, 185 };
292
+
293
+ zcert_t *cert = zcert_new_from (public_key, secret_key);
294
+ zcertstore_insert (certstore, &cert);
295
+
296
+ test_loader_state *state = (test_loader_state *)certstore->state;
297
+ state->index++;
298
+ }
299
+
300
+ static void
301
+ s_test_destructor (void **self_p)
302
+ {
303
+ assert (self_p);
304
+ if (*self_p) {
305
+ test_loader_state *self = (test_loader_state *)*self_p;
306
+ freen (self);
307
+ *self_p = NULL;
308
+ }
309
+ }
310
+
311
+ void
312
+ zcertstore_test (bool verbose)
313
+ {
314
+ printf (" * zcertstore: ");
315
+ if (verbose)
316
+ printf ("\n");
317
+
318
+ // @selftest
319
+
320
+ const char *SELFTEST_DIR_RW = "src/selftest-rw";
321
+
322
+ const char *testbasedir = ".test_zcertstore";
323
+ const char *testfile = "mycert.txt";
324
+ char *basedirpath = NULL; // subdir in a test, under SELFTEST_DIR_RW
325
+ char *filepath = NULL; // pathname to testfile in a test, in dirpath
326
+
327
+ basedirpath = zsys_sprintf ("%s/%s", SELFTEST_DIR_RW, testbasedir);
328
+ assert (basedirpath);
329
+ filepath = zsys_sprintf ("%s/%s", basedirpath, testfile);
330
+ assert (filepath);
331
+
332
+ // Make sure old aborted tests do not hinder us
333
+ zdir_t *dir = zdir_new (basedirpath, NULL);
334
+ if (dir) {
335
+ zdir_remove (dir, true);
336
+ zdir_destroy (&dir);
337
+ }
338
+ zsys_file_delete (filepath);
339
+ zsys_dir_delete (basedirpath);
340
+
341
+ // Create temporary directory for test files
342
+ zsys_dir_create (basedirpath);
343
+
344
+ // Load certificate store from disk; it will be empty
345
+ zcertstore_t *certstore = zcertstore_new (basedirpath);
346
+ assert (certstore);
347
+
348
+ // Create a single new certificate and save to disk
349
+ zcert_t *cert = zcert_new ();
350
+ assert (cert);
351
+ char *client_key = strdup (zcert_public_txt (cert));
352
+ assert (client_key);
353
+ zcert_set_meta (cert, "name", "John Doe");
354
+ zcert_save (cert, filepath);
355
+ zcert_destroy (&cert);
356
+
357
+ // Check that certificate store refreshes as expected
358
+ cert = zcertstore_lookup (certstore, client_key);
359
+ assert (cert);
360
+ assert (streq (zcert_meta (cert, "name"), "John Doe"));
361
+
362
+ #ifdef CZMQ_BUILD_DRAFT_API
363
+ // Iterate through certs
364
+ zlistx_t *certs = zcertstore_certs(certstore);
365
+ cert = (zcert_t *) zlistx_first(certs);
366
+ int cert_count = 0;
367
+ while (cert) {
368
+ assert (streq (zcert_meta (cert, "name"), "John Doe"));
369
+ cert = (zcert_t *) zlistx_next(certs);
370
+ cert_count++;
371
+ }
372
+ assert(cert_count==1);
373
+ zlistx_destroy(&certs);
374
+ #endif
375
+
376
+ // Test custom loader
377
+ test_loader_state *state = (test_loader_state *) zmalloc (sizeof (test_loader_state));
378
+ state->index = 0;
379
+ zcertstore_set_loader (certstore, s_test_loader, s_test_destructor, (void *)state);
380
+ #if (ZMQ_VERSION_MAJOR >= 4)
381
+ cert = zcertstore_lookup (certstore, client_key);
382
+ assert (cert == NULL);
383
+ cert = zcertstore_lookup (certstore, "abcdefghijklmnopqrstuvwxyzabcdefghijklmn");
384
+ assert (cert);
385
+ #endif
386
+
387
+ freen (client_key);
388
+
389
+ if (verbose)
390
+ zcertstore_print (certstore);
391
+ zcertstore_destroy (&certstore);
392
+
393
+ // Delete all test files
394
+ dir = zdir_new (basedirpath, NULL);
395
+ assert (dir);
396
+ zdir_remove (dir, true);
397
+ zdir_destroy (&dir);
398
+
399
+ zstr_free (&basedirpath);
400
+ zstr_free (&filepath);
401
+
402
+ #if defined (__WINDOWS__)
403
+ zsys_shutdown();
404
+ #endif
405
+ // @end
406
+ printf ("OK\n");
407
+ }
@@ -0,0 +1,609 @@
1
+ /* =========================================================================
2
+ zchunk - work with memory chunks
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
+ @header
15
+ The zchunk class works with variable sized blobs. Not as efficient as
16
+ ZeroMQ's messages but they do less weirdness and so are easier to understand.
17
+ The chunk class has methods to read and write chunks from disk.
18
+ @discuss
19
+ @end
20
+ */
21
+
22
+ #include "czmq_classes.h"
23
+
24
+ // zchunk_t instances always have this tag as the first 4 octets of
25
+ // their data, which lets us do runtime object typing & validation.
26
+ #define ZCHUNK_TAG 0x0001cafe
27
+
28
+ // Structure of our class
29
+
30
+ struct _zchunk_t {
31
+ uint32_t tag; // Object tag for runtime detection
32
+ size_t size; // Current size of data part
33
+ size_t max_size; // Maximum allocated size
34
+ size_t consumed; // Amount already consumed
35
+ zdigest_t *digest; // Chunk digest, if known
36
+ byte *data; // Data part follows here
37
+ };
38
+
39
+
40
+ // --------------------------------------------------------------------------
41
+ // Create a new chunk of the specified size. If you specify the data, it
42
+ // is copied into the chunk. If you do not specify the data, the chunk is
43
+ // allocated and left empty, and you can then add data using zchunk_append.
44
+
45
+ zchunk_t *
46
+ zchunk_new (const void *data, size_t size)
47
+ {
48
+ // Use malloc, not zmalloc, to avoid nullification costs
49
+ zchunk_t *self = (zchunk_t *) malloc (sizeof (zchunk_t) + size);
50
+ // Catch memory exhaustion in this specific class
51
+ if (self) {
52
+ self->tag = ZCHUNK_TAG;
53
+ self->size = 0;
54
+ self->max_size = size;
55
+ self->consumed = 0;
56
+ self->data = (byte *) self + sizeof (zchunk_t);
57
+ self->digest = NULL;
58
+ if (data) {
59
+ self->size = size;
60
+ memcpy (self->data, data, self->size);
61
+ }
62
+ }
63
+ return self;
64
+ }
65
+
66
+
67
+ // --------------------------------------------------------------------------
68
+ // Destroy a chunk
69
+
70
+ void
71
+ zchunk_destroy (zchunk_t **self_p)
72
+ {
73
+ assert (self_p);
74
+ if (*self_p) {
75
+ zchunk_t *self = *self_p;
76
+ assert (zchunk_is (self));
77
+ // If data was reallocated independently, free it independently
78
+ if (self->data != (byte *) self + sizeof (zchunk_t))
79
+ freen (self->data);
80
+ self->tag = 0xDeadBeef;
81
+ zdigest_destroy (&self->digest);
82
+ freen (self);
83
+ *self_p = NULL;
84
+ }
85
+ }
86
+
87
+
88
+ // --------------------------------------------------------------------------
89
+ // Resizes chunk max_size as requested; chunk size is set to zero
90
+
91
+ void
92
+ zchunk_resize (zchunk_t *self, size_t size)
93
+ {
94
+ assert (self);
95
+ assert (zchunk_is (self));
96
+ zdigest_destroy (&self->digest);
97
+
98
+ // Set new sizes
99
+ self->max_size = size;
100
+ self->size = 0; // TODO: this is a bit annoying, is it needed?
101
+
102
+ // We can't realloc the chunk itself, as the caller's reference
103
+ // won't change. So we modify self->data only, depending on whether
104
+ // it was already reallocated, or not.
105
+ if (self->data == (byte *) self + sizeof (zchunk_t))
106
+ self->data = (byte *) malloc (self->max_size);
107
+ else
108
+ self->data = (byte *) realloc (self->data, self->max_size);
109
+ }
110
+
111
+
112
+ // --------------------------------------------------------------------------
113
+ // Return chunk current size
114
+
115
+ size_t
116
+ zchunk_size (zchunk_t *self)
117
+ {
118
+ assert (self);
119
+ assert (zchunk_is (self));
120
+ return self->size;
121
+ }
122
+
123
+
124
+ // --------------------------------------------------------------------------
125
+ // Return chunk max size
126
+
127
+ size_t
128
+ zchunk_max_size (zchunk_t *self)
129
+ {
130
+ assert (self);
131
+ assert (zchunk_is (self));
132
+ return self->max_size;
133
+ }
134
+
135
+
136
+ // --------------------------------------------------------------------------
137
+ // Return chunk data
138
+
139
+ byte *
140
+ zchunk_data (zchunk_t *self)
141
+ {
142
+ assert (self);
143
+ assert (zchunk_is (self));
144
+ return self->data;
145
+ }
146
+
147
+
148
+ // --------------------------------------------------------------------------
149
+ // Set chunk data from user-supplied data; truncate if too large. Data may
150
+ // be null. Returns actual size of chunk
151
+
152
+ size_t
153
+ zchunk_set (zchunk_t *self, const void *data, size_t size)
154
+ {
155
+ assert (self);
156
+ assert (zchunk_is (self));
157
+ zdigest_destroy (&self->digest);
158
+
159
+ if (size > self->max_size)
160
+ size = self->max_size;
161
+ if (data)
162
+ memcpy (self->data, data, size);
163
+ self->size = size;
164
+ return size;
165
+ }
166
+
167
+
168
+ // --------------------------------------------------------------------------
169
+ // Fill chunk data from user-supplied octet
170
+ // Returns actual size of chunk
171
+
172
+ size_t
173
+ zchunk_fill (zchunk_t *self, byte filler, size_t size)
174
+ {
175
+ assert (self);
176
+ assert (zchunk_is (self));
177
+ zdigest_destroy (&self->digest);
178
+
179
+ if (size > self->max_size)
180
+ size = self->max_size;
181
+
182
+ memset (self->data, filler, size);
183
+ self->size = size;
184
+ return size;
185
+ }
186
+
187
+
188
+ // --------------------------------------------------------------------------
189
+ // Append user-supplied data to chunk, return resulting chunk size. If the
190
+ // data would exceeded the available space, it is truncated. If you want to
191
+ // grow the chunk to accommodate new data, use the zchunk_extend method.
192
+
193
+ size_t
194
+ zchunk_append (zchunk_t *self, const void *data, size_t size)
195
+ {
196
+ assert (self);
197
+ assert (zchunk_is (self));
198
+ zdigest_destroy (&self->digest);
199
+
200
+ if (self->size + size > self->max_size)
201
+ size = self->max_size - self->size;
202
+
203
+ memcpy (self->data + self->size, data, size);
204
+ self->size += size;
205
+ return self->size;
206
+ }
207
+
208
+
209
+ // --------------------------------------------------------------------------
210
+ // Append user-supplied data to chunk, return resulting chunk size. If the
211
+ // data would exceeded the available space, the chunk grows in size.
212
+
213
+ size_t
214
+ zchunk_extend (zchunk_t *self, const void *data, size_t size)
215
+ {
216
+ assert (self);
217
+ if (self->size + size > self->max_size) {
218
+ self->max_size = (self->size + size) * 2;
219
+
220
+ // We can't realloc the chunk itself, as the caller's reference
221
+ // won't change. So we modify self->data only, depending on whether
222
+ // it was already reallocated, or not.
223
+ if (self->data == (byte *) self + sizeof (zchunk_t)) {
224
+ byte *old_data = self->data;
225
+ self->data = (byte *) malloc (self->max_size);
226
+ memcpy (self->data, old_data, self->size);
227
+ }
228
+ else
229
+ self->data = (byte *) realloc (self->data, self->max_size);
230
+ }
231
+ assert (self->size + size <= self->max_size);
232
+ memcpy (self->data + self->size, data, size);
233
+ self->size += size;
234
+ return self->size;
235
+ }
236
+
237
+
238
+ // --------------------------------------------------------------------------
239
+ // Copy as much data from 'source' into the chunk as possible; returns the
240
+ // new size of chunk. If all data from 'source' is used, returns exhausted
241
+ // on the source chunk. Source can be consumed as many times as needed until
242
+ // it is exhausted. If source was already exhausted, does not change chunk.
243
+
244
+ size_t
245
+ zchunk_consume (zchunk_t *self, zchunk_t *source)
246
+ {
247
+ assert (self);
248
+ assert (zchunk_is (self));
249
+ assert (source);
250
+ assert (zchunk_is (source));
251
+
252
+ // We can take at most this many bytes from source
253
+ size_t size = source->size - source->consumed;
254
+
255
+ // And we can store at most this many bytes in chunk
256
+ if (self->size + size > self->max_size)
257
+ size = self->max_size - self->size;
258
+
259
+ memcpy (self->data + self->size, source->data + source->consumed, size);
260
+ source->consumed += size;
261
+ self->size += size;
262
+ return self->size;
263
+ }
264
+
265
+
266
+ // --------------------------------------------------------------------------
267
+ // Returns true if the chunk was exhausted by consume methods, or if the
268
+ // chunk has a size of zero.
269
+
270
+ bool
271
+ zchunk_exhausted (zchunk_t *self)
272
+ {
273
+ assert (self);
274
+ assert (zchunk_is (self));
275
+
276
+ assert (self->consumed <= self->size);
277
+ return self->consumed == self->size;
278
+ }
279
+
280
+
281
+ // --------------------------------------------------------------------------
282
+ // Read chunk from an open file descriptor
283
+
284
+ zchunk_t *
285
+ zchunk_read (FILE *handle, size_t bytes)
286
+ {
287
+ assert (handle);
288
+
289
+ zchunk_t *self = zchunk_new (NULL, bytes);
290
+ if (self)
291
+ self->size = fread (self->data, 1, bytes, handle);
292
+ return self;
293
+ }
294
+
295
+
296
+ // --------------------------------------------------------------------------
297
+ // Write chunk to an open file descriptor
298
+
299
+ int
300
+ zchunk_write (zchunk_t *self, FILE *handle)
301
+ {
302
+ assert (self);
303
+ assert (zchunk_is (self));
304
+
305
+ size_t items = fwrite (self->data, 1, self->size, handle);
306
+ int rc = (items < self->size)? -1: 0;
307
+ return rc;
308
+ }
309
+
310
+
311
+ // --------------------------------------------------------------------------
312
+ // Try to slurp an entire file into a chunk. Will read up to maxsize of
313
+ // the file. If maxsize is 0, will attempt to read the entire file and
314
+ // fail with an assertion if that cannot fit into memory. Returns a new
315
+ // chunk containing the file data, or NULL if the file could not be read.
316
+
317
+ zchunk_t *
318
+ zchunk_slurp (const char *filename, size_t maxsize)
319
+ {
320
+ size_t size = zsys_file_size (filename);
321
+ if ((ssize_t) size == -1)
322
+ return NULL;
323
+
324
+ if (size > maxsize && maxsize != 0)
325
+ size = maxsize;
326
+
327
+ FILE *handle = fopen (filename, "r");
328
+ zchunk_t *chunk = zchunk_read (handle, size);
329
+ assert (chunk);
330
+ fclose (handle);
331
+ return chunk;
332
+ }
333
+
334
+
335
+ // --------------------------------------------------------------------------
336
+ // Create copy of chunk, as new chunk object. Returns a fresh zchunk_t
337
+ // object, or null if there was not enough heap memory. If chunk is null,
338
+ // or memory was exhausted, returns null.
339
+
340
+ zchunk_t *
341
+ zchunk_dup (zchunk_t *self)
342
+ {
343
+ if (self) {
344
+ assert (zchunk_is (self));
345
+ return zchunk_new (self->data, self->max_size);
346
+ }
347
+ else
348
+ return NULL;
349
+ }
350
+
351
+
352
+ // --------------------------------------------------------------------------
353
+ // Return chunk data encoded as printable hex string. Caller must free
354
+ // string when finished with it.
355
+
356
+ char *
357
+ zchunk_strhex (zchunk_t *self)
358
+ {
359
+ assert (self);
360
+ assert (zchunk_is (self));
361
+
362
+ static const char
363
+ hex_char [] = "0123456789ABCDEF";
364
+
365
+ size_t size = zchunk_size (self);
366
+ byte *data = zchunk_data (self);
367
+ char *hex_str = (char *) zmalloc (size * 2 + 1);
368
+ if (!hex_str)
369
+ return NULL;
370
+
371
+ uint byte_nbr;
372
+ for (byte_nbr = 0; byte_nbr < size; byte_nbr++) {
373
+ hex_str [byte_nbr * 2 + 0] = hex_char [data [byte_nbr] >> 4];
374
+ hex_str [byte_nbr * 2 + 1] = hex_char [data [byte_nbr] & 15];
375
+ }
376
+ hex_str [size * 2] = 0;
377
+ return hex_str;
378
+ }
379
+
380
+
381
+ // --------------------------------------------------------------------------
382
+ // Return chunk data copied into freshly allocated string
383
+ // Caller must free string when finished with it.
384
+
385
+ char *
386
+ zchunk_strdup (zchunk_t *self)
387
+ {
388
+ assert (self);
389
+ assert (zchunk_is (self));
390
+
391
+ size_t size = zchunk_size (self);
392
+ char *string = (char *) malloc (size + 1);
393
+ if (string) {
394
+ memcpy (string, zchunk_data (self), size);
395
+ string [size] = 0;
396
+ }
397
+ return string;
398
+ }
399
+
400
+
401
+ // --------------------------------------------------------------------------
402
+ // Return true if chunk body is equal to string, excluding terminator
403
+
404
+ bool
405
+ zchunk_streq (zchunk_t *self, const char *string)
406
+ {
407
+ assert (self);
408
+ assert (zchunk_is (self));
409
+
410
+ if (zchunk_size (self) == strlen (string)
411
+ && memcmp (zchunk_data (self), string, strlen (string)) == 0)
412
+ return true;
413
+ else
414
+ return false;
415
+ }
416
+
417
+
418
+ // --------------------------------------------------------------------------
419
+ // Create a zframe from a zchunk. The zframe can be sent in a message.
420
+
421
+ zframe_t *
422
+ zchunk_pack (zchunk_t *self)
423
+ {
424
+ assert (self);
425
+ assert (zchunk_is (self));
426
+ return zframe_new (self->data, self->max_size);
427
+ }
428
+
429
+
430
+ // --------------------------------------------------------------------------
431
+ // Create a zchunk from a zframe.
432
+
433
+ zchunk_t *
434
+ zchunk_unpack (zframe_t *frame)
435
+ {
436
+ assert (frame);
437
+ assert (zframe_is (frame));
438
+ return zchunk_new (zframe_data (frame), zframe_size (frame));
439
+ }
440
+
441
+
442
+ // --------------------------------------------------------------------------
443
+ // Calculate SHA1 digest for chunk, using zdigest class. Caller should not
444
+ // modify digest.
445
+
446
+ const char *
447
+ zchunk_digest (zchunk_t *self)
448
+ {
449
+ assert (self);
450
+ if (!self->digest)
451
+ self->digest = zdigest_new ();
452
+ if (self->digest) {
453
+ zdigest_update (self->digest, self->data, self->size);
454
+ return zdigest_string (self->digest);
455
+ }
456
+ else
457
+ return NULL;
458
+ }
459
+
460
+
461
+ // --------------------------------------------------------------------------
462
+ // Dump chunk to FILE stream, for debugging and tracing.
463
+
464
+ void
465
+ zchunk_fprint (zchunk_t *self, FILE *file)
466
+ {
467
+ assert (self);
468
+ assert (zchunk_is (self));
469
+
470
+ fprintf (file, "--------------------------------------\n");
471
+ if (!self) {
472
+ fprintf (file, "NULL");
473
+ return;
474
+ }
475
+ assert (self);
476
+ int is_bin = 0;
477
+ uint char_nbr;
478
+ for (char_nbr = 0; char_nbr < self->size; char_nbr++)
479
+ if (self->data [char_nbr] < 9 || self->data [char_nbr] > 127)
480
+ is_bin = 1;
481
+
482
+ fprintf (file, "[%03d] ", (int) self->size);
483
+ for (char_nbr = 0; char_nbr < self->size; char_nbr++) {
484
+ if (is_bin) {
485
+ fprintf (file, "%02X", (unsigned char) self->data [char_nbr]);
486
+ if (char_nbr > 35) {
487
+ fprintf (file, "...");
488
+ break;
489
+ }
490
+ }
491
+ else {
492
+ fprintf (file, "%c", self->data [char_nbr]);
493
+ if (char_nbr > 70) {
494
+ fprintf (file, "...");
495
+ break;
496
+ }
497
+ }
498
+ }
499
+ fprintf (file, "\n");
500
+ }
501
+
502
+
503
+
504
+ // --------------------------------------------------------------------------
505
+ // Dump message to stderr, for debugging and tracing.
506
+ // See zchunk_fprint for details
507
+
508
+ void
509
+ zchunk_print (zchunk_t *self)
510
+ {
511
+ assert (self);
512
+ assert (zchunk_is (self));
513
+
514
+ zchunk_fprint (self, stderr);
515
+ }
516
+
517
+
518
+ // --------------------------------------------------------------------------
519
+ // Probe the supplied object, and report if it looks like a zchunk_t.
520
+
521
+ bool
522
+ zchunk_is (void *self)
523
+ {
524
+ assert (self);
525
+ return ((zchunk_t *) self)->tag == ZCHUNK_TAG;
526
+ }
527
+
528
+
529
+ // --------------------------------------------------------------------------
530
+ // Self test of this class
531
+
532
+ void
533
+ zchunk_test (bool verbose)
534
+ {
535
+ printf (" * zchunk: ");
536
+
537
+ // @selftest
538
+ zchunk_t *chunk = zchunk_new ("1234567890", 10);
539
+ assert (chunk);
540
+ assert (zchunk_size (chunk) == 10);
541
+ assert (memcmp (zchunk_data (chunk), "1234567890", 10) == 0);
542
+ zchunk_destroy (&chunk);
543
+
544
+ chunk = zchunk_new (NULL, 10);
545
+ assert (chunk);
546
+ zchunk_append (chunk, "12345678", 8);
547
+ zchunk_append (chunk, "90ABCDEF", 8);
548
+ zchunk_append (chunk, "GHIJKLMN", 8);
549
+ assert (memcmp (zchunk_data (chunk), "1234567890", 10) == 0);
550
+ assert (zchunk_size (chunk) == 10);
551
+ assert (zchunk_streq (chunk, "1234567890"));
552
+ assert (streq (zchunk_digest (chunk), "01B307ACBA4F54F55AAFC33BB06BBBF6CA803E9A"));
553
+ char *string = zchunk_strdup (chunk);
554
+ assert (streq (string, "1234567890"));
555
+ freen (string);
556
+ string = zchunk_strhex (chunk);
557
+ assert (streq (string, "31323334353637383930"));
558
+ freen (string);
559
+
560
+ zframe_t *frame = zchunk_pack (chunk);
561
+ assert (frame);
562
+
563
+ zchunk_t *chunk2 = zchunk_unpack (frame);
564
+ assert (chunk2);
565
+ assert (memcmp (zchunk_data (chunk2), "1234567890", 10) == 0);
566
+ zframe_destroy (&frame);
567
+ zchunk_destroy (&chunk2);
568
+
569
+ zchunk_t *copy = zchunk_dup (chunk);
570
+ assert (copy);
571
+ assert (memcmp (zchunk_data (copy), "1234567890", 10) == 0);
572
+ assert (zchunk_size (copy) == 10);
573
+ zchunk_destroy (&copy);
574
+ zchunk_destroy (&chunk);
575
+
576
+ chunk = zchunk_new (NULL, 0);
577
+ zchunk_extend (chunk, "12345678", 8);
578
+ zchunk_extend (chunk, "90ABCDEF", 8);
579
+ zchunk_extend (chunk, "GHIJKLMN", 8);
580
+ assert (zchunk_size (chunk) == 24);
581
+ assert (zchunk_streq (chunk, "1234567890ABCDEFGHIJKLMN"));
582
+ zchunk_destroy (&chunk);
583
+
584
+ copy = zchunk_new ("1234567890abcdefghij", 20);
585
+ assert (copy);
586
+ chunk = zchunk_new (NULL, 8);
587
+ assert (chunk);
588
+ zchunk_consume (chunk, copy);
589
+ assert (!zchunk_exhausted (copy));
590
+ assert (memcmp (zchunk_data (chunk), "12345678", 8) == 0);
591
+ zchunk_set (chunk, NULL, 0);
592
+ zchunk_consume (chunk, copy);
593
+ assert (!zchunk_exhausted (copy));
594
+ assert (memcmp (zchunk_data (chunk), "90abcdef", 8) == 0);
595
+ zchunk_set (chunk, NULL, 0);
596
+ zchunk_consume (chunk, copy);
597
+ assert (zchunk_exhausted (copy));
598
+ assert (zchunk_size (chunk) == 4);
599
+ assert (memcmp (zchunk_data (chunk), "ghij", 4) == 0);
600
+ zchunk_destroy (&copy);
601
+ zchunk_destroy (&chunk);
602
+
603
+ #if defined (__WINDOWS__)
604
+ zsys_shutdown();
605
+ #endif
606
+ // @end
607
+
608
+ printf ("OK\n");
609
+ }