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,227 @@
1
+ /* =========================================================================
2
+ zdir_patch - work with directory patches
3
+ A patch is a change to the directory (create/delete).
4
+
5
+ Copyright (c) the Contributors as noted in the AUTHORS file.
6
+ This file is part of CZMQ, the high-level C binding for 0MQ:
7
+ http://czmq.zeromq.org.
8
+
9
+ This Source Code Form is subject to the terms of the Mozilla Public
10
+ License, v. 2.0. If a copy of the MPL was not distributed with this
11
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
12
+ =========================================================================
13
+ */
14
+
15
+ /*
16
+ @header
17
+ The zdir_patch class works with one patch, which says "create this
18
+ file" or "delete this file" (referring to a zfile item each time).
19
+ @discuss
20
+ @end
21
+ */
22
+
23
+ #include "czmq_classes.h"
24
+
25
+ // Structure of our class
26
+ // If you modify this beware to also change _dup
27
+
28
+ struct _zdir_patch_t {
29
+ char *path; // Directory path
30
+ char *vpath; // Virtual file path
31
+ zfile_t *file; // File we refer to
32
+ int op; // Operation
33
+ char *digest; // File SHA-1 digest
34
+ };
35
+
36
+
37
+ // --------------------------------------------------------------------------
38
+ // Constructor
39
+ // Create new patch, create virtual path from alias
40
+
41
+ zdir_patch_t *
42
+ zdir_patch_new (const char *path, zfile_t *file, int op, const char *alias)
43
+ {
44
+ zdir_patch_t *self = (zdir_patch_t *) zmalloc (sizeof (zdir_patch_t));
45
+ assert (self);
46
+ self->path = strdup (path);
47
+ assert (self->path);
48
+ self->file = zfile_dup (file);
49
+ assert (self->file);
50
+ self->op = op;
51
+
52
+ // Calculate virtual path for patch (remove path, prefix alias)
53
+ const char *filename = zfile_filename (file, path);
54
+ assert (filename);
55
+ assert (*filename != '/');
56
+
57
+ self->vpath = (char *) zmalloc (strlen (alias) + strlen (filename) + 2);
58
+ assert (self->vpath);
59
+
60
+ if (strlen (alias) && alias [strlen (alias) - 1] == '/')
61
+ sprintf (self->vpath, "%s%s", alias, filename);
62
+ else
63
+ sprintf (self->vpath, "%s/%s", alias, filename);
64
+ return self;
65
+ }
66
+
67
+
68
+ // --------------------------------------------------------------------------
69
+ // Destroy a patch
70
+
71
+ void
72
+ zdir_patch_destroy (zdir_patch_t **self_p)
73
+ {
74
+ assert (self_p);
75
+ if (*self_p) {
76
+ zdir_patch_t *self = *self_p;
77
+ freen (self->path);
78
+ freen (self->vpath);
79
+ freen (self->digest);
80
+ zfile_destroy (&self->file);
81
+ freen (self);
82
+ *self_p = NULL;
83
+ }
84
+ }
85
+
86
+
87
+ // --------------------------------------------------------------------------
88
+ // Create copy of a patch. If the patch is null, or memory was exhausted,
89
+ // returns null.
90
+
91
+ zdir_patch_t *
92
+ zdir_patch_dup (zdir_patch_t *self)
93
+ {
94
+ if (self) {
95
+ zdir_patch_t *copy = (zdir_patch_t *) zmalloc (sizeof (zdir_patch_t));
96
+ if (copy) {
97
+ copy->op = self->op;
98
+ copy->path = strdup (self->path);
99
+ if (copy->path)
100
+ copy->file = zfile_dup (self->file);
101
+ if (copy->file)
102
+ copy->vpath = strdup (self->vpath);
103
+ if (copy->vpath)
104
+ // Don't recalculate hash when we duplicate patch
105
+ copy->digest = self->digest? strdup (self->digest): NULL;
106
+
107
+ if (copy->digest == NULL && copy->op != patch_delete)
108
+ zdir_patch_destroy (&copy);
109
+ }
110
+ return copy;
111
+ }
112
+ else
113
+ return NULL;
114
+ }
115
+
116
+
117
+ // --------------------------------------------------------------------------
118
+ // Return patch file directory path
119
+
120
+ const char *
121
+ zdir_patch_path (zdir_patch_t *self)
122
+ {
123
+ assert (self);
124
+ return self->path;
125
+ }
126
+
127
+
128
+ // --------------------------------------------------------------------------
129
+ // Return patch file item
130
+
131
+ zfile_t *
132
+ zdir_patch_file (zdir_patch_t *self)
133
+ {
134
+ assert (self);
135
+ return self->file;
136
+ }
137
+
138
+
139
+ // --------------------------------------------------------------------------
140
+ // Return operation
141
+
142
+ int
143
+ zdir_patch_op (zdir_patch_t *self)
144
+ {
145
+ assert (self);
146
+ return self->op;
147
+ }
148
+
149
+
150
+ // --------------------------------------------------------------------------
151
+ // Return patch virtual file path
152
+
153
+ const char *
154
+ zdir_patch_vpath (zdir_patch_t *self)
155
+ {
156
+ assert (self);
157
+ return self->vpath;
158
+ }
159
+
160
+
161
+ // --------------------------------------------------------------------------
162
+ // Calculate hash digest for file (create only)
163
+
164
+ void
165
+ zdir_patch_digest_set (zdir_patch_t *self)
166
+ {
167
+ if (self->op == patch_create
168
+ && self->digest == NULL) {
169
+ self->digest = strdup (zfile_digest (self->file));
170
+ assert (self->digest);
171
+ }
172
+
173
+ }
174
+
175
+
176
+ // --------------------------------------------------------------------------
177
+ // Return hash digest for patch file (create only)
178
+
179
+ const char *
180
+ zdir_patch_digest (zdir_patch_t *self)
181
+ {
182
+ assert (self);
183
+ return self->digest;
184
+ }
185
+
186
+
187
+ // --------------------------------------------------------------------------
188
+ // Self test of this class
189
+
190
+ void
191
+ zdir_patch_test (bool verbose)
192
+ {
193
+ printf (" * zdir_patch: ");
194
+
195
+ // @selftest
196
+
197
+ const char *SELFTEST_DIR_RW = "src/selftest-rw";
198
+
199
+ const char *testfile = "bilbo";
200
+ const char *prefix = "/";
201
+ char *prefixed_testfile = zsys_sprintf ("%s%s", prefix, testfile);
202
+ assert (prefixed_testfile);
203
+
204
+ // Make sure old aborted tests do not hinder us
205
+ zsys_file_delete (prefixed_testfile);
206
+
207
+ zfile_t *file = zfile_new (SELFTEST_DIR_RW, testfile);
208
+ assert (file);
209
+ zdir_patch_t *patch = zdir_patch_new (SELFTEST_DIR_RW, file, patch_create, prefix);
210
+ assert (patch);
211
+ zfile_destroy (&file);
212
+
213
+ file = zdir_patch_file (patch);
214
+ assert (file);
215
+ assert (streq (zfile_filename (file, SELFTEST_DIR_RW), testfile));
216
+ assert (streq (zdir_patch_vpath (patch), prefixed_testfile));
217
+ zdir_patch_destroy (&patch);
218
+
219
+ zstr_free (&prefixed_testfile);
220
+
221
+ #if defined (__WINDOWS__)
222
+ zsys_shutdown();
223
+ #endif
224
+ // @end
225
+
226
+ printf ("OK\n");
227
+ }
@@ -0,0 +1,920 @@
1
+ /* =========================================================================
2
+ zfile - provides methods to work with files in a portable fashion.
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
+ The zfile class provides methods to work with disk files. A file object
17
+ provides the modified date, current size, and type of the file. You can
18
+ create a file object for a filename that does not yet exist. To read or
19
+ write data from the file, use the input and output methods, and then
20
+ read and write chunks. The output method lets you both read and write
21
+ chunks, at any offset. Finally, this class provides portable symbolic
22
+ links. If a filename ends in ".ln", the first line of text in the file
23
+ is read, and used as the underlying file for read/write operations.
24
+ This lets you manipulate (e.g.) copy symbolic links without copying
25
+ the perhaps very large files they point to.
26
+ @discuss
27
+ This class is a new API, deprecating the old zfile class (which still
28
+ exists but is implemented in zsys now).
29
+ @end
30
+ */
31
+
32
+ #include "czmq_classes.h"
33
+
34
+ // Structure of our class
35
+
36
+ struct _zfile_t {
37
+ // Properties for all file objects
38
+ char *fullname; // File name with path
39
+ char *link; // Optional linked file
40
+ bool exists; // true if file exists
41
+ bool stable; // true if file is stable
42
+ bool eof; // true if at end of file
43
+ FILE *handle; // Read/write handle
44
+ zdigest_t *digest; // File digest, if known
45
+ char *curline; // Last read line, if any
46
+ size_t linemax; // Size of allocated buffer
47
+ bool remove_on_destroy; // Whenever delete file on destroy
48
+ // Typically for tempfiles
49
+ int fd; // File descriptor - set up by zfile_tmp
50
+ bool close_fd; // XXX: for some reason self->fd == 0 in
51
+ // zdir and zdir_patch tests, this is a
52
+ // workaround for the problem
53
+
54
+ // Properties from files that exist on file system
55
+ time_t modified; // Modification time
56
+ off_t cursize; // Size of the file
57
+ mode_t mode; // POSIX permission bits
58
+ };
59
+
60
+
61
+ // --------------------------------------------------------------------------
62
+ // Constructor
63
+ // If file exists, populates properties. CZMQ supports portable symbolic
64
+ // links, which are files with the extension ".ln". A symbolic link is a
65
+ // text file containing one line, the filename of a target file. Reading
66
+ // data from the symbolic link actually reads from the target file. Path
67
+ // may be NULL, in which case it is not used.
68
+
69
+ zfile_t *
70
+ zfile_new (const char *path, const char *name)
71
+ {
72
+ zfile_t *self = (zfile_t *) zmalloc (sizeof (zfile_t));
73
+ assert (self);
74
+
75
+ // Format full path to file
76
+ if (path) {
77
+ self->fullname = (char *) zmalloc (strlen (path) + strlen (name) + 2);
78
+ assert (self->fullname);
79
+ sprintf (self->fullname, "%s/%s", path, name);
80
+ }
81
+ else
82
+ self->fullname = strdup (name);
83
+
84
+ // Resolve symbolic link if possible
85
+ if (strlen (self->fullname) > 3
86
+ && streq (self->fullname + strlen (self->fullname) - 3, ".ln")) {
87
+ FILE *handle = fopen (self->fullname, "r");
88
+ if (handle) {
89
+ char buffer [256];
90
+ if (fgets (buffer, 256, handle)) {
91
+ // We have the contents of the symbolic link
92
+ if (buffer [strlen (buffer) - 1] == '\n')
93
+ buffer [strlen (buffer) - 1] = 0;
94
+ self->link = strdup (buffer);
95
+
96
+ // Chop ".ln" off name for external use
97
+ if (self->link)
98
+ self->fullname [strlen (self->fullname) - 3] = 0;
99
+ else {
100
+ fclose (handle);
101
+ zfile_destroy (&self);
102
+ return NULL;
103
+ }
104
+ }
105
+ fclose (handle);
106
+ }
107
+ }
108
+ self->handle = 0;
109
+ zfile_restat (self);
110
+ self->fd = -1;
111
+ self->close_fd = false;
112
+ return self;
113
+ }
114
+
115
+ // --------------------------------------------------------------------------
116
+ // Constructor
117
+ // Create new temporary file for writing via tmpfile. File is automaticaly
118
+ // deleted on destroy
119
+
120
+ zfile_t *
121
+ zfile_tmp (void)
122
+ {
123
+ zfile_t *self = NULL;
124
+
125
+ #if defined (__WINDOWS__)
126
+ DWORD result;
127
+ UINT value;
128
+ char name [MAX_PATH];
129
+ char path [MAX_PATH];
130
+
131
+ result = GetTempPathA (MAX_PATH, path);
132
+ if (result > MAX_PATH || (result == 0))
133
+ return NULL;
134
+
135
+ value = GetTempFileNameA (path, "CZMQ_ZFILE", 0, name);
136
+ if (value == 0)
137
+ return NULL;
138
+
139
+ self = (zfile_t *) zmalloc (sizeof (zfile_t));
140
+ assert (self);
141
+ self->fullname = strdup (name);
142
+ self->handle = fopen (self->fullname, "w");
143
+ #else
144
+ char buffer [PATH_MAX];
145
+ strcpy (buffer, "/tmp/czmq_zfile.XXXXXX");
146
+ int fd = mkstemp (buffer);
147
+ if (fd == -1)
148
+ return NULL;
149
+
150
+ self = (zfile_t *) zmalloc (sizeof (zfile_t));
151
+ assert (self);
152
+ self->fd = fd;
153
+ self->close_fd = true;
154
+ self->fullname = strdup (buffer);
155
+ self->handle = fdopen (self->fd, "w");
156
+ #endif
157
+
158
+ if (!self->handle) {
159
+ if (self->close_fd)
160
+ close (self->fd);
161
+ zstr_free (&self->fullname);
162
+ free (self);
163
+ return NULL;
164
+ }
165
+ self->remove_on_destroy = true;
166
+ zfile_restat (self);
167
+ return self;
168
+ }
169
+
170
+ // --------------------------------------------------------------------------
171
+ // Destroy a file item
172
+
173
+ void
174
+ zfile_destroy (zfile_t **self_p)
175
+ {
176
+ assert (self_p);
177
+ if (*self_p) {
178
+ zfile_t *self = *self_p;
179
+ zdigest_destroy (&self->digest);
180
+ if (self->remove_on_destroy)
181
+ zfile_remove (self);
182
+ zfile_close (self);
183
+ freen (self->fullname);
184
+ freen (self->curline);
185
+ freen (self->link);
186
+ freen (self);
187
+ *self_p = NULL;
188
+ }
189
+ }
190
+
191
+
192
+ // --------------------------------------------------------------------------
193
+ // Duplicate a file item, returns a newly constructed item. If the file
194
+ // is null, or memory was exhausted, returns null.
195
+
196
+ zfile_t *
197
+ zfile_dup (zfile_t *self)
198
+ {
199
+ if (self) {
200
+ zfile_t *copy = (zfile_t *) zmalloc (sizeof (zfile_t));
201
+ assert (copy);
202
+ copy->fullname = strdup (self->fullname);
203
+ assert (copy->fullname);
204
+ copy->modified = self->modified;
205
+ copy->cursize = self->cursize;
206
+ copy->link = self->link? strdup (self->link): NULL;
207
+ copy->mode = self->mode;
208
+ return copy;
209
+ }
210
+ else
211
+ return NULL;
212
+ }
213
+
214
+
215
+ // --------------------------------------------------------------------------
216
+ // Return file name, remove path if provided
217
+
218
+ const char *
219
+ zfile_filename (zfile_t *self, const char *path)
220
+ {
221
+ assert (self);
222
+ char *name = self->fullname;
223
+ if (path
224
+ && strlen (self->fullname) >= strlen (path)
225
+ && memcmp (self->fullname, path, strlen (path)) == 0) {
226
+ name += strlen (path);
227
+ while (*name == '/')
228
+ name++;
229
+ }
230
+ return name;
231
+ }
232
+
233
+
234
+ // --------------------------------------------------------------------------
235
+ // Refresh file properties from disk; this is not done automatically
236
+ // on access methods, otherwise it is not possible to compare directory
237
+ // snapshots.
238
+
239
+ void
240
+ zfile_restat (zfile_t *self)
241
+ {
242
+ assert (self);
243
+ struct stat stat_buf;
244
+ char *real_name = self->link? self->link: self->fullname;
245
+ if (stat (real_name, &stat_buf) == 0) {
246
+ self->cursize = stat_buf.st_size;
247
+ self->modified = stat_buf.st_mtime;
248
+ self->mode = zsys_file_mode (real_name);
249
+ self->stable = zsys_file_stable (real_name);
250
+ }
251
+ else {
252
+ if(self->handle) {
253
+ long cpos = ftell(self->handle);
254
+ fseek(self->handle, 0L, SEEK_END);
255
+ self->cursize = ftell(self->handle);
256
+ fseek(self->handle, cpos, SEEK_SET);
257
+ } else {
258
+ self->cursize = 0;
259
+ }
260
+ self->modified = 0;
261
+ self->mode = 0;
262
+ self->stable = false;
263
+ }
264
+ zdigest_destroy (&self->digest);
265
+ }
266
+
267
+
268
+ // --------------------------------------------------------------------------
269
+ // Return when the file was last modified. If you want this to reflect the
270
+ // current situation, call zfile_restat before checking this property.
271
+
272
+ time_t
273
+ zfile_modified (zfile_t *self)
274
+ {
275
+ assert (self);
276
+ return self->modified;
277
+ }
278
+
279
+
280
+ // --------------------------------------------------------------------------
281
+ // Return the last-known size of the file. If you want this to reflect the
282
+ // current situation, call zfile_restat before checking this property.
283
+
284
+ off_t
285
+ zfile_cursize (zfile_t *self)
286
+ {
287
+ assert (self);
288
+ return self->cursize;
289
+ }
290
+
291
+
292
+ // --------------------------------------------------------------------------
293
+ // Return true if the file is a directory. If you want this to reflect
294
+ // any external changes, call zfile_restat before checking this property.
295
+
296
+ bool
297
+ zfile_is_directory (zfile_t *self)
298
+ {
299
+ assert (self);
300
+ return S_ISDIR (self->mode);
301
+ }
302
+
303
+
304
+ // --------------------------------------------------------------------------
305
+ // Return true if the file is a regular file. If you want this to reflect
306
+ // any external changes, call zfile_restat before checking this property.
307
+
308
+ bool
309
+ zfile_is_regular (zfile_t *self)
310
+ {
311
+ assert (self);
312
+ return S_ISREG (self->mode);
313
+ }
314
+
315
+
316
+ // --------------------------------------------------------------------------
317
+ // Return true if the file is readable by this process. If you want this to
318
+ // reflect any external changes, call zfile_restat before checking this
319
+ // property.
320
+
321
+ bool
322
+ zfile_is_readable (zfile_t *self)
323
+ {
324
+ assert (self);
325
+ return (self->mode & S_IRUSR) != 0;
326
+ }
327
+
328
+
329
+ // --------------------------------------------------------------------------
330
+ // Return true if the file is writeable by this process. If you want this
331
+ // to reflect any external changes, call zfile_restat before checking this
332
+ // property.
333
+
334
+ bool
335
+ zfile_is_writeable (zfile_t *self)
336
+ {
337
+ assert (self);
338
+ return (self->mode & S_IWUSR) != 0;
339
+ }
340
+
341
+
342
+ // --------------------------------------------------------------------------
343
+ // Check if file has stopped changing and can be safely processed.
344
+ // If you want this to reflect the current situation, call zfile_restat
345
+ // before checking this property.
346
+
347
+ bool
348
+ zfile_is_stable (zfile_t *self)
349
+ {
350
+ assert (self);
351
+ return self->stable;
352
+ }
353
+
354
+
355
+ // --------------------------------------------------------------------------
356
+ // Return true if the file was changed on disk since the zfile_t object
357
+ // was created, or the last zfile_restat() call made on it. Note that the
358
+ // file will not necessarily yet be stable.
359
+
360
+ bool
361
+ zfile_has_changed (zfile_t *self)
362
+ {
363
+ assert (self);
364
+ struct stat stat_buf;
365
+ char *real_name = self->link? self->link: self->fullname;
366
+ if (stat (real_name, &stat_buf) == 0) {
367
+ // It's not a foolproof heuristic but catches most cases
368
+ if (stat_buf.st_mtime != self->modified
369
+ || stat_buf.st_size != self->cursize)
370
+ return true;
371
+ }
372
+ return false;
373
+ }
374
+
375
+
376
+ // --------------------------------------------------------------------------
377
+ // Remove the file
378
+
379
+ void
380
+ zfile_remove (zfile_t *self)
381
+ {
382
+ assert (self);
383
+ // Restore ".ln" in file name if this was a symbolic link
384
+ if (self->link)
385
+ self->fullname [strlen (self->fullname)] = '.';
386
+ zfile_close (self);
387
+ zsys_file_delete (self->fullname);
388
+ }
389
+
390
+
391
+ // --------------------------------------------------------------------------
392
+ // Open file for reading
393
+ // Returns 0 if OK, -1 if not found or not accessible
394
+
395
+ int
396
+ zfile_input (zfile_t *self)
397
+ {
398
+ assert (self);
399
+ if (self->handle)
400
+ zfile_close (self);
401
+
402
+ char *real_name = self->link? self->link: self->fullname;
403
+ self->handle = fopen (real_name, "rb");
404
+ if (self->handle) {
405
+ struct stat stat_buf;
406
+ if (stat (real_name, &stat_buf) == 0) {
407
+ self->cursize = stat_buf.st_size;
408
+ } else {
409
+ long cpos = ftell(self->handle);
410
+ fseek(self->handle, 0L, SEEK_END);
411
+ self->cursize = ftell(self->handle);
412
+ fseek(self->handle, cpos, SEEK_SET);
413
+ }
414
+ }
415
+ return self->handle? 0: -1;
416
+ }
417
+
418
+
419
+ // --------------------------------------------------------------------------
420
+ // Open file for writing, creating directory if needed
421
+ // File is created if necessary; chunks can be written to file at any
422
+ // location. Returns 0 if OK, -1 if error.
423
+
424
+ int
425
+ zfile_output (zfile_t *self)
426
+ {
427
+ int rc;
428
+ assert (self);
429
+
430
+ // Create file path if it doesn't exist
431
+ char *file_path = strdup (self->fullname);
432
+ if (!file_path)
433
+ return -1;
434
+ char *last_slash = strrchr (file_path, '/');
435
+ if (last_slash)
436
+ *last_slash = 0;
437
+
438
+ // Wipe symbolic link if that's what the file was
439
+ if (self->link) {
440
+ freen (self->link);
441
+ self->link = NULL;
442
+ }
443
+ rc = zsys_dir_create (file_path);
444
+ freen (file_path);
445
+ if (rc != 0)
446
+ return -1;
447
+
448
+ // Create file if it doesn't exist
449
+ if (self->handle)
450
+ zfile_close (self);
451
+
452
+ self->handle = fopen (self->fullname, "r+b");
453
+ if (!self->handle)
454
+ self->handle = fopen (self->fullname, "w+b");
455
+
456
+ return self->handle? 0: -1;
457
+ }
458
+
459
+
460
+ // --------------------------------------------------------------------------
461
+ // Read chunk from file at specified position. If this was the last chunk,
462
+ // sets the eof property. Returns a null chunk in case of error.
463
+
464
+ zchunk_t *
465
+ zfile_read (zfile_t *self, size_t bytes, off_t offset)
466
+ {
467
+ assert (self);
468
+ assert (self->handle);
469
+
470
+ self->eof = false;
471
+ // Calculate real number of bytes to read
472
+ if (offset > self->cursize) {
473
+ // if we tried to read 'after' the cursise, then we are at the end
474
+ bytes = 0;
475
+ self->eof = true;
476
+ }
477
+ else
478
+ if (bytes > (size_t) (self->cursize - offset)) {
479
+ // if we are trying to read more than there is, we are at the end
480
+ self->eof = true;
481
+ bytes = (size_t) (self->cursize - offset);
482
+ }
483
+
484
+ if (fseek (self->handle, (long) offset, SEEK_SET) == -1) {
485
+ return NULL;
486
+ }
487
+
488
+ return zchunk_read (self->handle, bytes);
489
+ }
490
+
491
+
492
+ // --------------------------------------------------------------------------
493
+ // Returns the eof property.
494
+
495
+ bool
496
+ zfile_eof (zfile_t *self)
497
+ {
498
+ assert (self);
499
+ return self->eof;
500
+ }
501
+
502
+
503
+ // --------------------------------------------------------------------------
504
+ // Write chunk to file at specified position
505
+ // Return 0 if OK, else -1
506
+
507
+ int
508
+ zfile_write (zfile_t *self, zchunk_t *chunk, off_t offset)
509
+ {
510
+ assert (self);
511
+ assert (self->handle);
512
+ int rc = fseek (self->handle, (long) offset, SEEK_SET);
513
+ if (rc >= 0)
514
+ rc = zchunk_write (chunk, self->handle);
515
+ return rc;
516
+ }
517
+
518
+
519
+ // --------------------------------------------------------------------------
520
+ // Read next line of text from file. Returns a pointer to the text line,
521
+ // or NULL if there was nothing more to read from the file.
522
+
523
+ const char *
524
+ zfile_readln (zfile_t *self)
525
+ {
526
+ assert (self);
527
+ assert (self->handle);
528
+
529
+ // Opportunistically allocate line buffer if needed; we'll grow this
530
+ // if needed, so the initial linemax is not a big deal
531
+ if (!self->curline) {
532
+ self->linemax = 512;
533
+ self->curline = (char *) malloc (self->linemax);
534
+ assert (self->curline);
535
+ }
536
+ uint char_nbr = 0;
537
+ while (true) {
538
+ int cur_char = fgetc (self->handle);
539
+ if (cur_char == '\r')
540
+ continue; // Skip CR in MS-DOS format files
541
+ else
542
+ if (cur_char == EOF && char_nbr == 0)
543
+ return NULL; // Signal end of file
544
+ else
545
+ if (cur_char == '\n' || cur_char == EOF)
546
+ cur_char = 0;
547
+ if (char_nbr == self->linemax - 1) {
548
+ self->linemax *= 2;
549
+ self->curline = (char *) realloc (self->curline, self->linemax);
550
+ }
551
+ self->curline [char_nbr++] = cur_char;
552
+ if (cur_char == 0)
553
+ break;
554
+ }
555
+ return self->curline;
556
+ }
557
+
558
+
559
+ // --------------------------------------------------------------------------
560
+ // Close file, if open
561
+
562
+ void
563
+ zfile_close (zfile_t *self)
564
+ {
565
+ assert (self);
566
+ if (self->handle) {
567
+ fclose (self->handle);
568
+ self->handle = 0;
569
+ zfile_restat (self);
570
+ self->eof = false;
571
+ }
572
+ if (self->close_fd)
573
+ close (self->fd);
574
+ }
575
+
576
+
577
+ // --------------------------------------------------------------------------
578
+ // Return file handle, if opened
579
+
580
+ FILE *
581
+ zfile_handle (zfile_t *self)
582
+ {
583
+ assert (self);
584
+ return self->handle;
585
+ }
586
+
587
+
588
+ // --------------------------------------------------------------------------
589
+ // Calculate SHA1 digest for file, using zdigest class.
590
+
591
+ const char *
592
+ zfile_digest (zfile_t *self)
593
+ {
594
+ assert (self);
595
+ if (!self->digest) {
596
+ if (zfile_input (self) == -1)
597
+ return NULL; // Problem reading file
598
+
599
+ // Now calculate hash for file data, chunk by chunk
600
+ long blocksz = 65535;
601
+ off_t offset = 0;
602
+
603
+ self->digest = zdigest_new ();
604
+ if (!self->digest)
605
+ return NULL;
606
+ zchunk_t *chunk = zfile_read (self, blocksz, offset);
607
+ while (zchunk_size (chunk)) {
608
+ zdigest_update (self->digest,
609
+ zchunk_data (chunk), zchunk_size (chunk));
610
+ zchunk_destroy (&chunk);
611
+
612
+ // off_t is defined as long (32 bit on Windows, 64 bit otherwise)
613
+ // This guards against overflow in both contexts.
614
+ if (blocksz > LONG_MAX - offset)
615
+ return NULL;
616
+
617
+ offset += blocksz;
618
+ chunk = zfile_read (self, (size_t) blocksz, offset);
619
+ }
620
+ zchunk_destroy (&chunk);
621
+ fclose (self->handle);
622
+ self->handle = 0;
623
+ }
624
+ return zdigest_string (self->digest);
625
+ }
626
+
627
+
628
+ // Deprecated API, moved to zsys class. The zfile class works with
629
+ // an object instance, which is more consistent with the CLASS style
630
+ // and lets us do more interesting things. These functions were
631
+ // essentially about portability, so now sit in zsys.
632
+
633
+ bool
634
+ zfile_exists (const char *filename)
635
+ {
636
+ return zsys_file_exists (filename);
637
+ }
638
+ ssize_t
639
+ zfile_size (const char *filename)
640
+ {
641
+ return zsys_file_size (filename);
642
+ }
643
+ mode_t
644
+ zfile_mode (const char *filename)
645
+ {
646
+ return zsys_file_mode (filename);
647
+ }
648
+ int
649
+ zfile_delete (const char *filename)
650
+ {
651
+ return zsys_file_delete (filename);
652
+ }
653
+ bool
654
+ zfile_stable (const char *filename)
655
+ {
656
+ return zsys_file_stable (filename);
657
+ }
658
+ int
659
+ zfile_mkdir (const char *pathname)
660
+ {
661
+ return zsys_dir_create (pathname);
662
+ }
663
+ int
664
+ zfile_rmdir (const char *pathname)
665
+ {
666
+ return zsys_dir_delete (pathname);
667
+ }
668
+ void
669
+ zfile_mode_private (void)
670
+ {
671
+ zsys_file_mode_private ();
672
+ }
673
+ void
674
+ zfile_mode_default (void)
675
+ {
676
+ zsys_file_mode_default ();
677
+ }
678
+
679
+
680
+ // --------------------------------------------------------------------------
681
+ // Self test of this class
682
+
683
+ void
684
+ zfile_test (bool verbose)
685
+ {
686
+ printf (" * zfile: ");
687
+
688
+ // @selftest
689
+
690
+ const char *SELFTEST_DIR_RW = "src/selftest-rw";
691
+
692
+ const char *testbasedir = "this";
693
+ const char *testsubdir = "is/a/test";
694
+ const char *testfile = "bilbo";
695
+ const char *testlink = "bilbo.ln";
696
+ char *basedirpath = NULL; // subdir in a test, under SELFTEST_DIR_RW
697
+ char *dirpath = NULL; // subdir in a test, under basedirpath
698
+ char *filepath = NULL; // pathname to testfile in a test, in dirpath
699
+ char *linkpath = NULL; // pathname to testlink in a test, in dirpath
700
+
701
+ basedirpath = zsys_sprintf ("%s/%s", SELFTEST_DIR_RW, testbasedir);
702
+ assert (basedirpath);
703
+ dirpath = zsys_sprintf ("%s/%s", basedirpath, testsubdir);
704
+ assert (dirpath);
705
+ filepath = zsys_sprintf ("%s/%s", dirpath, testfile);
706
+ assert (filepath);
707
+ linkpath = zsys_sprintf ("%s/%s", dirpath, testlink);
708
+ assert (linkpath);
709
+
710
+ // This subtest is specifically for NULL as current directory, so
711
+ // no SELFTEST_DIR_RW here; testfile should have no slashes inside.
712
+ // Normally tests clean up in zfile_destroy(), but if a selftest run
713
+ // dies e.g. on assert(), workspace remains dirty. Better clean it up.
714
+ if (zfile_exists (testfile) ) {
715
+ if (verbose)
716
+ zsys_debug ("zfile_test() has to remove ./%s that should not have been here", testfile);
717
+ zfile_delete (testfile);
718
+ }
719
+ zfile_t *file = zfile_new (NULL, testfile);
720
+ assert (file);
721
+ assert (streq (zfile_filename (file, "."), testfile));
722
+ assert (zfile_is_readable (file) == false);
723
+ zfile_destroy (&file);
724
+
725
+ // Create a test file in some random subdirectory
726
+ if (verbose)
727
+ zsys_debug ("zfile_test() at timestamp %" PRIi64 ": "
728
+ "Creating new zfile %s",
729
+ zclock_time(), filepath );
730
+
731
+ if (zfile_exists (filepath) ) {
732
+ if (verbose)
733
+ zsys_debug ("zfile_test() has to remove %s that should not have been here", filepath);
734
+ zfile_delete (filepath);
735
+ }
736
+
737
+ file = zfile_new (dirpath, testfile);
738
+ assert (file);
739
+ int rc = zfile_output (file);
740
+ assert (rc == 0);
741
+ zchunk_t *chunk = zchunk_new (NULL, 100);
742
+ assert (chunk);
743
+ zchunk_fill (chunk, 0, 100);
744
+
745
+ // Write 100 bytes at position 1,000,000 in the file
746
+ if (verbose)
747
+ zsys_debug ("zfile_test() at timestamp %" PRIi64 ": "
748
+ "Writing 100 bytes at position 1,000,000 in the file",
749
+ zclock_time() );
750
+ rc = zfile_write (file, chunk, 1000000);
751
+ if (verbose)
752
+ zsys_debug ("zfile_test() at timestamp %" PRIi64 ": "
753
+ "Wrote 100 bytes at position 1,000,000 in the file, result code %d",
754
+ zclock_time(), rc );
755
+ assert (rc == 0);
756
+ zchunk_destroy (&chunk);
757
+ zfile_close (file);
758
+ assert (zfile_is_readable (file));
759
+ assert (zfile_cursize (file) == 1000100);
760
+ if (verbose)
761
+ zsys_debug ("zfile_test() at timestamp %" PRIi64 ": "
762
+ "Testing if file is NOT stable (is younger than 1 sec)",
763
+ zclock_time() );
764
+ assert (!zfile_is_stable (file));
765
+ if (verbose)
766
+ zsys_debug ("zfile_test() at timestamp %" PRIi64 ": "
767
+ "Passed the lag-dependent tests",
768
+ zclock_time() );
769
+ assert (zfile_digest (file));
770
+
771
+ // Now truncate file from outside
772
+ int handle = open (filepath, O_WRONLY | O_TRUNC | O_BINARY, 0);
773
+ assert (handle >= 0);
774
+ rc = write (handle, "Hello, World\n", 13);
775
+ assert (rc == 13);
776
+ close (handle);
777
+ assert (zfile_has_changed (file));
778
+ #ifdef CZMQ_BUILD_DRAFT_API
779
+ zclock_sleep ((int)zsys_file_stable_age_msec() + 50);
780
+ #else
781
+ zclock_sleep (5050);
782
+ #endif
783
+ assert (zfile_has_changed (file));
784
+
785
+ assert (!zfile_is_stable (file));
786
+ zfile_restat (file);
787
+ assert (zfile_is_stable (file));
788
+ assert (streq (zfile_digest (file), "4AB299C8AD6ED14F31923DD94F8B5F5CB89DFB54"));
789
+
790
+ // Check we can read from file
791
+ rc = zfile_input (file);
792
+ assert (rc == 0);
793
+ chunk = zfile_read (file, 1000100, 0);
794
+ assert (chunk);
795
+ assert (zchunk_size (chunk) == 13);
796
+ zchunk_destroy (&chunk);
797
+ zfile_close (file);
798
+
799
+ // Check we can read lines from file
800
+ rc = zfile_input (file);
801
+ assert (rc == 0);
802
+ const char *line = zfile_readln (file);
803
+ assert (streq (line, "Hello, World"));
804
+ line = zfile_readln (file);
805
+ assert (line == NULL);
806
+ zfile_close (file);
807
+
808
+ // Try some fun with symbolic links
809
+ zfile_t *link = zfile_new (dirpath, testlink);
810
+ assert (link);
811
+ rc = zfile_output (link);
812
+ assert (rc == 0);
813
+ fprintf (zfile_handle (link), "%s\n", filepath);
814
+ zfile_destroy (&link);
815
+
816
+ link = zfile_new (dirpath, testlink);
817
+ assert (link);
818
+ rc = zfile_input (link);
819
+ assert (rc == 0);
820
+ chunk = zfile_read (link, 1000100, 0);
821
+ assert (chunk);
822
+ assert (zchunk_size (chunk) == 13);
823
+ zchunk_destroy (&chunk);
824
+ zfile_destroy (&link);
825
+
826
+ // Remove file and directory
827
+ zdir_t *dir = zdir_new (basedirpath, NULL);
828
+ assert (dir);
829
+ assert (zdir_cursize (dir) == 26);
830
+ zdir_remove (dir, true);
831
+ assert (zdir_cursize (dir) == 0);
832
+ zdir_destroy (&dir);
833
+
834
+ // Check we can no longer read from file
835
+ assert (zfile_is_readable (file));
836
+ zfile_restat (file);
837
+ assert (!zfile_is_readable (file));
838
+ rc = zfile_input (file);
839
+ assert (rc == -1);
840
+ zfile_destroy (&file);
841
+
842
+ // This set of tests is done, free the strings for reuse
843
+ zstr_free (&basedirpath);
844
+ zstr_free (&dirpath);
845
+ zstr_free (&filepath);
846
+ zstr_free (&linkpath);
847
+
848
+ const char *eof_checkfile = "eof_checkfile";
849
+ filepath = zsys_sprintf ("%s/%s", SELFTEST_DIR_RW, eof_checkfile);
850
+ assert (filepath);
851
+
852
+ if (zfile_exists (filepath) ) {
853
+ if (verbose)
854
+ zsys_debug ("zfile_test() has to remove %s that should not have been here", filepath);
855
+ zfile_delete (filepath);
856
+ }
857
+ zstr_free (&filepath);
858
+
859
+ file = zfile_new (SELFTEST_DIR_RW, eof_checkfile);
860
+ assert (file);
861
+
862
+ // 1. Write something first
863
+ rc = zfile_output (file);
864
+ assert (rc == 0);
865
+ chunk = zchunk_new ("123456789", 9);
866
+ assert (chunk);
867
+
868
+ rc = zfile_write (file, chunk, 0);
869
+ assert (rc == 0);
870
+ zchunk_destroy (&chunk);
871
+ zfile_close (file);
872
+ assert (zfile_cursize (file) == 9);
873
+
874
+ // 2. Read the written something
875
+ rc = zfile_input (file);
876
+ assert (rc != -1);
877
+ // try to read more bytes than there is in the file
878
+ chunk = zfile_read (file, 1000, 0);
879
+ assert (zfile_eof(file));
880
+ assert (zchunk_streq (chunk, "123456789"));
881
+ zchunk_destroy (&chunk);
882
+
883
+ // reading is ok
884
+ chunk = zfile_read (file, 5, 0);
885
+ assert (!zfile_eof(file));
886
+ assert (zchunk_streq (chunk, "12345"));
887
+ zchunk_destroy (&chunk);
888
+
889
+ // read from non zero offset until the end
890
+ chunk = zfile_read (file, 5, 5);
891
+ assert (zfile_eof(file));
892
+ assert (zchunk_streq (chunk, "6789"));
893
+ zchunk_destroy (&chunk);
894
+ zfile_remove (file);
895
+ zfile_close (file);
896
+ zfile_destroy (&file);
897
+
898
+ #ifdef CZMQ_BUILD_DRAFT_API
899
+ zfile_t *tempfile = zfile_tmp ();
900
+ assert (tempfile);
901
+ assert (zfile_filename (tempfile, NULL));
902
+ assert (zsys_file_exists (zfile_filename (tempfile, NULL)));
903
+ zchunk_t *tchunk = zchunk_new ("HELLO", 6);
904
+ assert (zfile_write (tempfile, tchunk, 0) == 0);
905
+ zchunk_destroy (&tchunk);
906
+
907
+ char *filename = strdup (zfile_filename (tempfile, NULL));
908
+ zfile_destroy (&tempfile);
909
+ assert (!zsys_file_exists (filename));
910
+ zstr_free (&filename);
911
+ #endif // CZMQ_BUILD_DRAFT_API
912
+
913
+ #if defined (__WINDOWS__)
914
+ zsys_shutdown();
915
+ #endif
916
+
917
+ // @end
918
+
919
+ printf ("OK\n");
920
+ }