laag-libczmq 4.1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (697) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +57 -0
  3. data/LICENSE.txt +373 -0
  4. data/README.org +34 -0
  5. data/ext/laag/libczmq/extconf.rb +24 -0
  6. data/laag-libczmq.gemspec +21 -0
  7. data/lib/laag/libczmq.rb +30 -0
  8. data/vendor/github.com/zeromq/czmq/.editorconfig +19 -0
  9. data/vendor/github.com/zeromq/czmq/.gitattributes +5 -0
  10. data/vendor/github.com/zeromq/czmq/.github/PULL_REQUEST_TEMPLATE.md +28 -0
  11. data/vendor/github.com/zeromq/czmq/.gitignore +137 -0
  12. data/vendor/github.com/zeromq/czmq/.travis.yml +126 -0
  13. data/vendor/github.com/zeromq/czmq/AUTHORS +69 -0
  14. data/vendor/github.com/zeromq/czmq/CMakeLists.txt +653 -0
  15. data/vendor/github.com/zeromq/czmq/CONTRIBUTING.md +19 -0
  16. data/vendor/github.com/zeromq/czmq/Dockerfile +29 -0
  17. data/vendor/github.com/zeromq/czmq/Findlibsodium.cmake +47 -0
  18. data/vendor/github.com/zeromq/czmq/Findlibzmq.cmake +49 -0
  19. data/vendor/github.com/zeromq/czmq/Findlz4.cmake +49 -0
  20. data/vendor/github.com/zeromq/czmq/Findsystemd.cmake +49 -0
  21. data/vendor/github.com/zeromq/czmq/Finduuid.cmake +49 -0
  22. data/vendor/github.com/zeromq/czmq/INSTALL.cygwin +13 -0
  23. data/vendor/github.com/zeromq/czmq/ISSUES.cygwin +6 -0
  24. data/vendor/github.com/zeromq/czmq/Jenkinsfile +439 -0
  25. data/vendor/github.com/zeromq/czmq/LICENSE +373 -0
  26. data/vendor/github.com/zeromq/czmq/Makefile.am +70 -0
  27. data/vendor/github.com/zeromq/czmq/NEWS +823 -0
  28. data/vendor/github.com/zeromq/czmq/README.cygwin +23 -0
  29. data/vendor/github.com/zeromq/czmq/README.md +9345 -0
  30. data/vendor/github.com/zeromq/czmq/README.txt +512 -0
  31. data/vendor/github.com/zeromq/czmq/Vagrantfile +49 -0
  32. data/vendor/github.com/zeromq/czmq/acinclude.m4 +7 -0
  33. data/vendor/github.com/zeromq/czmq/api/zactor.api +77 -0
  34. data/vendor/github.com/zeromq/czmq/api/zargs.api +110 -0
  35. data/vendor/github.com/zeromq/czmq/api/zarmour.api +103 -0
  36. data/vendor/github.com/zeromq/czmq/api/zcert.api +128 -0
  37. data/vendor/github.com/zeromq/czmq/api/zcertstore.api +80 -0
  38. data/vendor/github.com/zeromq/czmq/api/zchunk.api +171 -0
  39. data/vendor/github.com/zeromq/czmq/api/zclock.api +43 -0
  40. data/vendor/github.com/zeromq/czmq/api/zconfig.api +205 -0
  41. data/vendor/github.com/zeromq/czmq/api/zdigest.api +45 -0
  42. data/vendor/github.com/zeromq/czmq/api/zdir.api +124 -0
  43. data/vendor/github.com/zeromq/czmq/api/zdir_patch.api +62 -0
  44. data/vendor/github.com/zeromq/czmq/api/zfile.api +157 -0
  45. data/vendor/github.com/zeromq/czmq/api/zframe.api +157 -0
  46. data/vendor/github.com/zeromq/czmq/api/zgossip_msg.api +104 -0
  47. data/vendor/github.com/zeromq/czmq/api/zhash.api +184 -0
  48. data/vendor/github.com/zeromq/czmq/api/zhashx.api +295 -0
  49. data/vendor/github.com/zeromq/czmq/api/ziflist.api +73 -0
  50. data/vendor/github.com/zeromq/czmq/api/zlist.api +158 -0
  51. data/vendor/github.com/zeromq/czmq/api/zlistx.api +220 -0
  52. data/vendor/github.com/zeromq/czmq/api/zloop.api +176 -0
  53. data/vendor/github.com/zeromq/czmq/api/zmsg.api +250 -0
  54. data/vendor/github.com/zeromq/czmq/api/zpoller.api +71 -0
  55. data/vendor/github.com/zeromq/czmq/api/zproc.api +247 -0
  56. data/vendor/github.com/zeromq/czmq/api/zsock.api +412 -0
  57. data/vendor/github.com/zeromq/czmq/api/zsock_option.api +847 -0
  58. data/vendor/github.com/zeromq/czmq/api/zstr.api +119 -0
  59. data/vendor/github.com/zeromq/czmq/api/zsys.api +490 -0
  60. data/vendor/github.com/zeromq/czmq/api/ztimerset.api +69 -0
  61. data/vendor/github.com/zeromq/czmq/api/ztrie.api +80 -0
  62. data/vendor/github.com/zeromq/czmq/api/zuuid.api +82 -0
  63. data/vendor/github.com/zeromq/czmq/appveyor.yml +73 -0
  64. data/vendor/github.com/zeromq/czmq/autogen.sh +52 -0
  65. data/vendor/github.com/zeromq/czmq/bindings/jni/.gitignore +8 -0
  66. data/vendor/github.com/zeromq/czmq/bindings/jni/CMakeLists.txt +79 -0
  67. data/vendor/github.com/zeromq/czmq/bindings/jni/Findczmq.cmake +47 -0
  68. data/vendor/github.com/zeromq/czmq/bindings/jni/README.md +130 -0
  69. data/vendor/github.com/zeromq/czmq/bindings/jni/android/CMakeLists.txt +79 -0
  70. data/vendor/github.com/zeromq/czmq/bindings/jni/android/android_toolchain.cmake +52 -0
  71. data/vendor/github.com/zeromq/czmq/bindings/jni/android/build.sh +68 -0
  72. data/vendor/github.com/zeromq/czmq/bindings/jni/build.gradle +151 -0
  73. data/vendor/github.com/zeromq/czmq/bindings/jni/ci_build.sh +96 -0
  74. data/vendor/github.com/zeromq/czmq/bindings/jni/gradle/wrapper/gradle-wrapper.jar +0 -0
  75. data/vendor/github.com/zeromq/czmq/bindings/jni/gradle/wrapper/gradle-wrapper.properties +6 -0
  76. data/vendor/github.com/zeromq/czmq/bindings/jni/gradlew +164 -0
  77. data/vendor/github.com/zeromq/czmq/bindings/jni/gradlew.bat +90 -0
  78. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/.gitignore +8 -0
  79. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/configure.bat +93 -0
  80. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/platform.h +1 -0
  81. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Common.props +21 -0
  82. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DLL.props +16 -0
  83. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Debug.props +29 -0
  84. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugDEXE.props +21 -0
  85. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugDLL.props +20 -0
  86. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugLEXE.props +20 -0
  87. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugLIB.props +21 -0
  88. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugLTCG.props +20 -0
  89. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugSEXE.props +21 -0
  90. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/EXE.props +17 -0
  91. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/LIB.props +16 -0
  92. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/LTCG.props +13 -0
  93. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Link.props +21 -0
  94. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Messages.props +15 -0
  95. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Output.props +30 -0
  96. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Release.props +41 -0
  97. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseDEXE.props +20 -0
  98. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseDLL.props +19 -0
  99. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseLEXE.props +20 -0
  100. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseLIB.props +19 -0
  101. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseLTCG.props +19 -0
  102. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseSEXE.props +20 -0
  103. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Win32.props +20 -0
  104. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/x64.props +23 -0
  105. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/resource.h +14 -0
  106. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/resource.rc +94 -0
  107. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/build.bat +48 -0
  108. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/call_javah.bat +84 -0
  109. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/czmq.sln +25 -0
  110. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/libczmqjni/libczmqjni.props +69 -0
  111. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/libczmqjni/libczmqjni.vcxproj +165 -0
  112. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  113. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/build.bat +48 -0
  114. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/call_javah.bat +84 -0
  115. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/czmq.sln +25 -0
  116. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/libczmqjni/libczmqjni.props +69 -0
  117. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/libczmqjni/libczmqjni.vcxproj +165 -0
  118. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  119. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/build.bat +48 -0
  120. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/call_javah.bat +84 -0
  121. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/czmq.sln +25 -0
  122. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/libczmqjni/libczmqjni.props +69 -0
  123. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/libczmqjni/libczmqjni.vcxproj +165 -0
  124. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  125. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/build.bat +48 -0
  126. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/call_javah.bat +84 -0
  127. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/czmq.sln +25 -0
  128. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/libczmqjni/libczmqjni.props +69 -0
  129. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/libczmqjni/libczmqjni.vcxproj +165 -0
  130. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  131. data/vendor/github.com/zeromq/czmq/bindings/jni/settings.gradle +1 -0
  132. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zarmour.c +132 -0
  133. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zcert.c +188 -0
  134. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zcertstore.c +69 -0
  135. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zchunk.c +191 -0
  136. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zclock.c +54 -0
  137. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zconfig.c +252 -0
  138. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zdigest.c +66 -0
  139. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zdir.c +116 -0
  140. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_ZdirPatch.c +88 -0
  141. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zfile.c +186 -0
  142. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zframe.c +199 -0
  143. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zhash.c +174 -0
  144. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zhashx.c +175 -0
  145. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Ziflist.c +112 -0
  146. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zlist.c +135 -0
  147. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zlistx.c +189 -0
  148. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zloop.c +95 -0
  149. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zmsg.c +261 -0
  150. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zpoller.c +74 -0
  151. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zproc.c +278 -0
  152. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zsock.c +1310 -0
  153. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zstr.c +108 -0
  154. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zsys.c +445 -0
  155. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Ztimerset.c +68 -0
  156. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Ztrie.c +86 -0
  157. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zuuid.c +125 -0
  158. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zarmour.java +148 -0
  159. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zcert.java +178 -0
  160. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zcertstore.java +94 -0
  161. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zchunk.java +204 -0
  162. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zclock.java +67 -0
  163. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zconfig.java +253 -0
  164. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zdigest.java +78 -0
  165. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zdir.java +159 -0
  166. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/ZdirPatch.java +96 -0
  167. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zfile.java +217 -0
  168. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zframe.java +212 -0
  169. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zhash.java +223 -0
  170. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zhashx.java +248 -0
  171. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Ziflist.java +124 -0
  172. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zlist.java +171 -0
  173. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zlistx.java +247 -0
  174. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zloop.java +134 -0
  175. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zmsg.java +308 -0
  176. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zpoller.java +105 -0
  177. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zproc.java +331 -0
  178. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zsock.java +1556 -0
  179. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zstr.java +117 -0
  180. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zsys.java +534 -0
  181. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Ztimerset.java +87 -0
  182. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Ztrie.java +102 -0
  183. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zuuid.java +127 -0
  184. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZarmourTest.java +25 -0
  185. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZcertTest.java +25 -0
  186. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZcertstoreTest.java +25 -0
  187. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZchunkTest.java +25 -0
  188. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZclockTest.java +25 -0
  189. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZconfigTest.java +25 -0
  190. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZdigestTest.java +25 -0
  191. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZdirPatchTest.java +25 -0
  192. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZdirTest.java +25 -0
  193. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZfileTest.java +25 -0
  194. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZframeTest.java +25 -0
  195. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZhashTest.java +25 -0
  196. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZhashxTest.java +25 -0
  197. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZiflistTest.java +25 -0
  198. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZlistTest.java +25 -0
  199. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZlistxTest.java +25 -0
  200. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZloopTest.java +25 -0
  201. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZmsgTest.java +25 -0
  202. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZpollerTest.java +25 -0
  203. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZprocTest.java +25 -0
  204. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZsockTest.java +25 -0
  205. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZstrTest.java +25 -0
  206. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZsysTest.java +25 -0
  207. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZtimersetTest.java +25 -0
  208. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZtrieTest.java +25 -0
  209. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZuuidTest.java +25 -0
  210. data/vendor/github.com/zeromq/czmq/bindings/lua_ffi/czmq_ffi.lua +4079 -0
  211. data/vendor/github.com/zeromq/czmq/bindings/nodejs/.gitignore +10 -0
  212. data/vendor/github.com/zeromq/czmq/bindings/nodejs/.prebuildrc +2 -0
  213. data/vendor/github.com/zeromq/czmq/bindings/nodejs/README.md +4373 -0
  214. data/vendor/github.com/zeromq/czmq/bindings/nodejs/binding.cc +8324 -0
  215. data/vendor/github.com/zeromq/czmq/bindings/nodejs/binding.gyp +49 -0
  216. data/vendor/github.com/zeromq/czmq/bindings/nodejs/binding.h +952 -0
  217. data/vendor/github.com/zeromq/czmq/bindings/nodejs/build.sh +79 -0
  218. data/vendor/github.com/zeromq/czmq/bindings/nodejs/index.js +39 -0
  219. data/vendor/github.com/zeromq/czmq/bindings/nodejs/package.json +26 -0
  220. data/vendor/github.com/zeromq/czmq/bindings/nodejs/test_binding.js +32 -0
  221. data/vendor/github.com/zeromq/czmq/bindings/python/ci_build.sh +59 -0
  222. data/vendor/github.com/zeromq/czmq/bindings/python/czmq/__init__.py +3 -0
  223. data/vendor/github.com/zeromq/czmq/bindings/python/czmq/_czmq_ctypes.py +8344 -0
  224. data/vendor/github.com/zeromq/czmq/bindings/python/test.py +1078 -0
  225. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/README.md +28 -0
  226. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zactor.py +78 -0
  227. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zargs.py +133 -0
  228. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zarmour.py +124 -0
  229. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zcert.py +132 -0
  230. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zcertstore.py +84 -0
  231. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zchunk.py +192 -0
  232. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zclock.py +59 -0
  233. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zconfig.py +211 -0
  234. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zdigest.py +64 -0
  235. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zdir.py +144 -0
  236. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/ZdirPatch.py +79 -0
  237. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zfile.py +185 -0
  238. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zframe.py +160 -0
  239. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zhash.py +197 -0
  240. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zhashx.py +271 -0
  241. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Ziflist.py +103 -0
  242. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zlist.py +176 -0
  243. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zlistx.py +235 -0
  244. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zloop.py +171 -0
  245. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zmsg.py +250 -0
  246. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zpoller.py +89 -0
  247. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zproc.py +287 -0
  248. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zsock.py +1283 -0
  249. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zstr.py +123 -0
  250. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zsys.py +532 -0
  251. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Ztimerset.py +78 -0
  252. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Ztrie.py +93 -0
  253. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zuuid.py +100 -0
  254. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/__init__.py +33 -0
  255. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/_cdefs.inc +4081 -0
  256. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/build.py +345 -0
  257. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/cdefs.py +4086 -0
  258. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/dlopen.py +33 -0
  259. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/utils.py +50 -0
  260. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/setup.py +23 -0
  261. data/vendor/github.com/zeromq/czmq/bindings/qml/.gitignore +1 -0
  262. data/vendor/github.com/zeromq/czmq/bindings/qml/README.md +157 -0
  263. data/vendor/github.com/zeromq/czmq/bindings/qml/Rakefile +34 -0
  264. data/vendor/github.com/zeromq/czmq/bindings/qml/qml_czmq_bindings.pro +136 -0
  265. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZactor.cpp +88 -0
  266. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZactor.h +86 -0
  267. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZargs.cpp +121 -0
  268. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZargs.h +105 -0
  269. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZarmour.cpp +135 -0
  270. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZarmour.h +108 -0
  271. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcert.cpp +166 -0
  272. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcert.h +122 -0
  273. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcertstore.cpp +95 -0
  274. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcertstore.h +93 -0
  275. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZchunk.cpp +214 -0
  276. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZchunk.h +149 -0
  277. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZclock.cpp +67 -0
  278. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZclock.h +77 -0
  279. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZconfig.cpp +255 -0
  280. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZconfig.h +165 -0
  281. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdigest.cpp +70 -0
  282. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdigest.h +78 -0
  283. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdir.cpp +158 -0
  284. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdir.h +134 -0
  285. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdirPatch.cpp +89 -0
  286. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdirPatch.h +84 -0
  287. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZfile.cpp +204 -0
  288. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZfile.h +152 -0
  289. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZframe.cpp +200 -0
  290. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZframe.h +143 -0
  291. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhash.cpp +219 -0
  292. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhash.h +174 -0
  293. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhashx.cpp +308 -0
  294. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhashx.h +225 -0
  295. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZiflist.cpp +111 -0
  296. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZiflist.h +96 -0
  297. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlist.cpp +184 -0
  298. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlist.h +148 -0
  299. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlistx.cpp +244 -0
  300. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlistx.h +184 -0
  301. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZloop.cpp +177 -0
  302. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZloop.h +149 -0
  303. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZmsg.cpp +313 -0
  304. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZmsg.h +209 -0
  305. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZpoller.cpp +95 -0
  306. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZpoller.h +97 -0
  307. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZproc.cpp +296 -0
  308. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZproc.h +211 -0
  309. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsock.cpp +1471 -0
  310. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsock.h +882 -0
  311. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZstr.cpp +137 -0
  312. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZstr.h +120 -0
  313. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsys.cpp +541 -0
  314. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsys.h +373 -0
  315. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtimerset.cpp +84 -0
  316. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtimerset.h +86 -0
  317. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtrie.cpp +101 -0
  318. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtrie.h +95 -0
  319. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZuuid.cpp +116 -0
  320. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZuuid.h +99 -0
  321. data/vendor/github.com/zeromq/czmq/bindings/qml/src/qml_czmq_plugin.h +174 -0
  322. data/vendor/github.com/zeromq/czmq/bindings/qml/src/qmldir +2 -0
  323. data/vendor/github.com/zeromq/czmq/bindings/qml/test/tst_QmlCZMQ.qml +16 -0
  324. data/vendor/github.com/zeromq/czmq/bindings/qt/README.md +87 -0
  325. data/vendor/github.com/zeromq/czmq/bindings/qt/buildlib/buildlib.pro +36 -0
  326. data/vendor/github.com/zeromq/czmq/bindings/qt/common.pri +20 -0
  327. data/vendor/github.com/zeromq/czmq/bindings/qt/config.pri +1 -0
  328. data/vendor/github.com/zeromq/czmq/bindings/qt/qczmq.pro +13 -0
  329. data/vendor/github.com/zeromq/czmq/bindings/qt/selftest/main.cpp +57 -0
  330. data/vendor/github.com/zeromq/czmq/bindings/qt/selftest/selftest.pro +19 -0
  331. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qczmq.h +96 -0
  332. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qczmq.pri +81 -0
  333. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzactor.cpp +98 -0
  334. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzactor.h +61 -0
  335. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzargs.cpp +130 -0
  336. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzargs.h +72 -0
  337. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzarmour.cpp +162 -0
  338. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzarmour.h +83 -0
  339. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcert.cpp +191 -0
  340. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcert.h +97 -0
  341. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcertstore.cpp +105 -0
  342. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcertstore.h +68 -0
  343. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzchunk.cpp +250 -0
  344. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzchunk.h +124 -0
  345. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzclock.cpp +78 -0
  346. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzclock.h +52 -0
  347. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzconfig.cpp +292 -0
  348. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzconfig.h +140 -0
  349. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdigest.cpp +80 -0
  350. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdigest.h +53 -0
  351. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdir.cpp +176 -0
  352. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdir.h +109 -0
  353. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdirpatch.cpp +101 -0
  354. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdirpatch.h +59 -0
  355. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzfile.cpp +243 -0
  356. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzfile.h +127 -0
  357. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzframe.cpp +231 -0
  358. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzframe.h +118 -0
  359. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhash.cpp +250 -0
  360. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhash.h +149 -0
  361. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhashx.cpp +350 -0
  362. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhashx.h +200 -0
  363. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qziflist.cpp +133 -0
  364. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qziflist.h +71 -0
  365. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlist.cpp +220 -0
  366. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlist.h +123 -0
  367. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlistx.cpp +296 -0
  368. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlistx.h +159 -0
  369. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzloop.cpp +211 -0
  370. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzloop.h +124 -0
  371. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzmsg.cpp +354 -0
  372. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzmsg.h +184 -0
  373. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzpoller.cpp +100 -0
  374. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzpoller.h +67 -0
  375. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzproc.cpp +365 -0
  376. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzproc.h +186 -0
  377. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsock.cpp +1719 -0
  378. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsock.h +815 -0
  379. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzstr.cpp +128 -0
  380. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzstr.h +78 -0
  381. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsys.cpp +600 -0
  382. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsys.h +321 -0
  383. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztimerset.cpp +98 -0
  384. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztimerset.h +61 -0
  385. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztrie.cpp +117 -0
  386. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztrie.h +70 -0
  387. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzuuid.cpp +135 -0
  388. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzuuid.h +74 -0
  389. data/vendor/github.com/zeromq/czmq/bindings/ruby/Rakefile +8 -0
  390. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi.rb +875 -0
  391. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/version.rb +15 -0
  392. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zactor.rb +219 -0
  393. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zargs.rb +259 -0
  394. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zarmour.rb +286 -0
  395. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zcert.rb +304 -0
  396. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zcertstore.rb +224 -0
  397. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zchunk.rb +388 -0
  398. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zclock.rb +140 -0
  399. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zconfig.rb +462 -0
  400. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zdigest.rb +156 -0
  401. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zdir.rb +283 -0
  402. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zdir_patch.rb +194 -0
  403. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zfile.rb +361 -0
  404. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zframe.rb +360 -0
  405. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zhash.rb +386 -0
  406. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zhashx.rb +617 -0
  407. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/ziflist.rb +219 -0
  408. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zlist.rb +365 -0
  409. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zlistx.rb +478 -0
  410. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zloop.rb +396 -0
  411. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zmsg.rb +515 -0
  412. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zpoller.rb +194 -0
  413. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zproc.rb +497 -0
  414. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zsock.rb +4673 -0
  415. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zstr.rb +242 -0
  416. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zsys.rb +836 -0
  417. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/ztimerset.rb +203 -0
  418. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/ztrie.rb +221 -0
  419. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zuuid.rb +227 -0
  420. data/vendor/github.com/zeromq/czmq/bindings/ruby/spec/ffi_spec.rb +15 -0
  421. data/vendor/github.com/zeromq/czmq/bindings/ruby/spec/spec_helper.rb +8 -0
  422. data/vendor/github.com/zeromq/czmq/builds/android/android_build_helper.sh +298 -0
  423. data/vendor/github.com/zeromq/czmq/builds/android/build.sh +94 -0
  424. data/vendor/github.com/zeromq/czmq/builds/android/ci_build.sh +41 -0
  425. data/vendor/github.com/zeromq/czmq/builds/check_zproject/ci_build.sh +52 -0
  426. data/vendor/github.com/zeromq/czmq/builds/check_zproto/ci_build.sh +23 -0
  427. data/vendor/github.com/zeromq/czmq/builds/cmake/ci_build.sh +93 -0
  428. data/vendor/github.com/zeromq/czmq/builds/cygwin/Makefile.cygwin +32 -0
  429. data/vendor/github.com/zeromq/czmq/builds/docs/ci_build.sh +24 -0
  430. data/vendor/github.com/zeromq/czmq/builds/gyp/.gitignore +5 -0
  431. data/vendor/github.com/zeromq/czmq/builds/gyp/README.md +33 -0
  432. data/vendor/github.com/zeromq/czmq/builds/gyp/platform.h +46 -0
  433. data/vendor/github.com/zeromq/czmq/builds/gyp/project.gyp +195 -0
  434. data/vendor/github.com/zeromq/czmq/builds/mingw32/Makefile.mingw32 +33 -0
  435. data/vendor/github.com/zeromq/czmq/builds/mingw32/platform.h +0 -0
  436. data/vendor/github.com/zeromq/czmq/builds/msvc/.gitignore +8 -0
  437. data/vendor/github.com/zeromq/czmq/builds/msvc/configure.bat +93 -0
  438. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.bat +14 -0
  439. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.nuspec +92 -0
  440. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.targets +128 -0
  441. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.xml +29 -0
  442. data/vendor/github.com/zeromq/czmq/builds/msvc/platform.h +1 -0
  443. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Common.props +21 -0
  444. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DLL.props +16 -0
  445. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Debug.props +29 -0
  446. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugDEXE.props +21 -0
  447. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugDLL.props +20 -0
  448. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugLEXE.props +20 -0
  449. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugLIB.props +21 -0
  450. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugLTCG.props +20 -0
  451. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugSEXE.props +21 -0
  452. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/EXE.props +17 -0
  453. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/LIB.props +16 -0
  454. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/LTCG.props +13 -0
  455. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Link.props +21 -0
  456. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Messages.props +15 -0
  457. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Output.props +30 -0
  458. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Release.props +41 -0
  459. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseDEXE.props +20 -0
  460. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseDLL.props +19 -0
  461. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseLEXE.props +20 -0
  462. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseLIB.props +19 -0
  463. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseLTCG.props +19 -0
  464. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseSEXE.props +20 -0
  465. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Win32.props +20 -0
  466. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/x64.props +23 -0
  467. data/vendor/github.com/zeromq/czmq/builds/msvc/resource.h +14 -0
  468. data/vendor/github.com/zeromq/czmq/builds/msvc/resource.rc +94 -0
  469. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2008/czmq/czmq.sln +65 -0
  470. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2008/czmq/czmq.vcproj +1411 -0
  471. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/.gitignore +1 -0
  472. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/build.bat +129 -0
  473. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq.import.props +59 -0
  474. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq.sln +81 -0
  475. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq_selftest/czmq_selftest.props +75 -0
  476. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq_selftest/czmq_selftest.vcxproj +146 -0
  477. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.import.xml +29 -0
  478. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.props +81 -0
  479. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.vcxproj +215 -0
  480. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.vcxproj.filters +203 -0
  481. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/test_randof/test_randof.props +75 -0
  482. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/test_randof/test_randof.vcxproj +146 -0
  483. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zmakecert/zmakecert.props +75 -0
  484. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zmakecert/zmakecert.vcxproj +146 -0
  485. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zsp/zsp.props +75 -0
  486. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zsp/zsp.vcxproj +146 -0
  487. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/.gitignore +1 -0
  488. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/build.bat +129 -0
  489. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq.import.props +59 -0
  490. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq.sln +81 -0
  491. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq_selftest/czmq_selftest.props +75 -0
  492. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq_selftest/czmq_selftest.vcxproj +146 -0
  493. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.import.xml +29 -0
  494. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.props +81 -0
  495. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.vcxproj +215 -0
  496. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.vcxproj.filters +203 -0
  497. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/test_randof/test_randof.props +75 -0
  498. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/test_randof/test_randof.vcxproj +146 -0
  499. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zmakecert/zmakecert.props +75 -0
  500. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zmakecert/zmakecert.vcxproj +146 -0
  501. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zsp/zsp.props +75 -0
  502. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zsp/zsp.vcxproj +146 -0
  503. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/build.bat +129 -0
  504. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq.import.props +59 -0
  505. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq.sln +81 -0
  506. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq_selftest/czmq_selftest.props +75 -0
  507. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq_selftest/czmq_selftest.vcxproj +146 -0
  508. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.import.xml +29 -0
  509. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.props +81 -0
  510. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.vcxproj +215 -0
  511. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.vcxproj.filters +203 -0
  512. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/test_randof/test_randof.props +75 -0
  513. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/test_randof/test_randof.vcxproj +146 -0
  514. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zmakecert/zmakecert.props +75 -0
  515. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zmakecert/zmakecert.vcxproj +146 -0
  516. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zsp/zsp.props +75 -0
  517. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zsp/zsp.vcxproj +146 -0
  518. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/build.bat +129 -0
  519. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq.import.props +59 -0
  520. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq.sln +81 -0
  521. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq_selftest/czmq_selftest.props +75 -0
  522. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq_selftest/czmq_selftest.vcxproj +146 -0
  523. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.import.xml +29 -0
  524. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.props +81 -0
  525. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.vcxproj +215 -0
  526. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.vcxproj.filters +203 -0
  527. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/test_randof/test_randof.props +75 -0
  528. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/test_randof/test_randof.vcxproj +146 -0
  529. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zmakecert/zmakecert.props +75 -0
  530. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zmakecert/zmakecert.vcxproj +146 -0
  531. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zsp/zsp.props +75 -0
  532. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zsp/zsp.vcxproj +146 -0
  533. data/vendor/github.com/zeromq/czmq/builds/nuget/czmq.autobuild +49 -0
  534. data/vendor/github.com/zeromq/czmq/builds/nuget/readme.nuget +18 -0
  535. data/vendor/github.com/zeromq/czmq/builds/rpi/.gitignore +8 -0
  536. data/vendor/github.com/zeromq/czmq/builds/rpi/README.md +62 -0
  537. data/vendor/github.com/zeromq/czmq/builds/rpi/build.sh +142 -0
  538. data/vendor/github.com/zeromq/czmq/builds/rpi/build_image.sh +32 -0
  539. data/vendor/github.com/zeromq/czmq/builds/rpi/prepare_img.sh +111 -0
  540. data/vendor/github.com/zeromq/czmq/builds/stable_zmq/ci_build.sh +62 -0
  541. data/vendor/github.com/zeromq/czmq/builds/valgrind/ci_build.sh +43 -0
  542. data/vendor/github.com/zeromq/czmq/ci_build.sh +317 -0
  543. data/vendor/github.com/zeromq/czmq/ci_deploy.sh +29 -0
  544. data/vendor/github.com/zeromq/czmq/ci_deploy_obs.sh +23 -0
  545. data/vendor/github.com/zeromq/czmq/configure.ac +856 -0
  546. data/vendor/github.com/zeromq/czmq/doc/.gitignore +91 -0
  547. data/vendor/github.com/zeromq/czmq/doc/Makefile.am +222 -0
  548. data/vendor/github.com/zeromq/czmq/doc/asciidoc.conf +64 -0
  549. data/vendor/github.com/zeromq/czmq/doc/czmq.adoc +51 -0
  550. data/vendor/github.com/zeromq/czmq/doc/czmq.txt +380 -0
  551. data/vendor/github.com/zeromq/czmq/doc/mkman +217 -0
  552. data/vendor/github.com/zeromq/czmq/doc/mkmans +15 -0
  553. data/vendor/github.com/zeromq/czmq/doc/wdput +43 -0
  554. data/vendor/github.com/zeromq/czmq/examples/security/LICENSE +18 -0
  555. data/vendor/github.com/zeromq/czmq/examples/security/README.txt +9 -0
  556. data/vendor/github.com/zeromq/czmq/examples/security/grasslands.c +32 -0
  557. data/vendor/github.com/zeromq/czmq/examples/security/hello.c +13 -0
  558. data/vendor/github.com/zeromq/czmq/examples/security/ironhouse.c +64 -0
  559. data/vendor/github.com/zeromq/czmq/examples/security/ironhouse2.c +123 -0
  560. data/vendor/github.com/zeromq/czmq/examples/security/ironhouse2_v2.c +107 -0
  561. data/vendor/github.com/zeromq/czmq/examples/security/passwords +2 -0
  562. data/vendor/github.com/zeromq/czmq/examples/security/stonehouse.c +59 -0
  563. data/vendor/github.com/zeromq/czmq/examples/security/strawhouse.c +49 -0
  564. data/vendor/github.com/zeromq/czmq/examples/security/woodhouse.c +47 -0
  565. data/vendor/github.com/zeromq/czmq/images/README_1.png +0 -0
  566. data/vendor/github.com/zeromq/czmq/include/.gitignore +1 -0
  567. data/vendor/github.com/zeromq/czmq/include/czmq.h +39 -0
  568. data/vendor/github.com/zeromq/czmq/include/czmq_library.h +190 -0
  569. data/vendor/github.com/zeromq/czmq/include/czmq_prelude.h +735 -0
  570. data/vendor/github.com/zeromq/czmq/include/test_zgossip.h +44 -0
  571. data/vendor/github.com/zeromq/czmq/include/zactor.h +94 -0
  572. data/vendor/github.com/zeromq/czmq/include/zargs.h +134 -0
  573. data/vendor/github.com/zeromq/czmq/include/zarmour.h +114 -0
  574. data/vendor/github.com/zeromq/czmq/include/zauth.h +100 -0
  575. data/vendor/github.com/zeromq/czmq/include/zbeacon.h +86 -0
  576. data/vendor/github.com/zeromq/czmq/include/zcert.h +133 -0
  577. data/vendor/github.com/zeromq/czmq/include/zcertstore.h +101 -0
  578. data/vendor/github.com/zeromq/czmq/include/zchunk.h +163 -0
  579. data/vendor/github.com/zeromq/czmq/include/zclock.h +73 -0
  580. data/vendor/github.com/zeromq/czmq/include/zconfig.h +199 -0
  581. data/vendor/github.com/zeromq/czmq/include/zdigest.h +65 -0
  582. data/vendor/github.com/zeromq/czmq/include/zdir.h +149 -0
  583. data/vendor/github.com/zeromq/czmq/include/zdir_patch.h +82 -0
  584. data/vendor/github.com/zeromq/czmq/include/zfile.h +185 -0
  585. data/vendor/github.com/zeromq/czmq/include/zframe.h +177 -0
  586. data/vendor/github.com/zeromq/czmq/include/zgossip.h +95 -0
  587. data/vendor/github.com/zeromq/czmq/include/zhash.h +183 -0
  588. data/vendor/github.com/zeromq/czmq/include/zhashx.h +279 -0
  589. data/vendor/github.com/zeromq/czmq/include/ziflist.h +98 -0
  590. data/vendor/github.com/zeromq/czmq/include/zlist.h +158 -0
  591. data/vendor/github.com/zeromq/czmq/include/zlistx.h +205 -0
  592. data/vendor/github.com/zeromq/czmq/include/zloop.h +163 -0
  593. data/vendor/github.com/zeromq/czmq/include/zmonitor.h +73 -0
  594. data/vendor/github.com/zeromq/czmq/include/zmsg.h +280 -0
  595. data/vendor/github.com/zeromq/czmq/include/zpoller.h +87 -0
  596. data/vendor/github.com/zeromq/czmq/include/zproc.h +270 -0
  597. data/vendor/github.com/zeromq/czmq/include/zproxy.h +111 -0
  598. data/vendor/github.com/zeromq/czmq/include/zrex.h +82 -0
  599. data/vendor/github.com/zeromq/czmq/include/zsock.h +1209 -0
  600. data/vendor/github.com/zeromq/czmq/include/zstr.h +135 -0
  601. data/vendor/github.com/zeromq/czmq/include/zsys.h +439 -0
  602. data/vendor/github.com/zeromq/czmq/include/ztimerset.h +90 -0
  603. data/vendor/github.com/zeromq/czmq/include/ztrie.h +106 -0
  604. data/vendor/github.com/zeromq/czmq/include/zuuid.h +96 -0
  605. data/vendor/github.com/zeromq/czmq/issues/README.md +6 -0
  606. data/vendor/github.com/zeromq/czmq/issues/c +520 -0
  607. data/vendor/github.com/zeromq/czmq/issues/issue-407.c +146 -0
  608. data/vendor/github.com/zeromq/czmq/license.xml +9 -0
  609. data/vendor/github.com/zeromq/czmq/mkdoc +7 -0
  610. data/vendor/github.com/zeromq/czmq/model/chkopts.pl +47 -0
  611. data/vendor/github.com/zeromq/czmq/model/rename_class +42 -0
  612. data/vendor/github.com/zeromq/czmq/packaging/debian/changelog +5 -0
  613. data/vendor/github.com/zeromq/czmq/packaging/debian/compat +1 -0
  614. data/vendor/github.com/zeromq/czmq/packaging/debian/control +86 -0
  615. data/vendor/github.com/zeromq/czmq/packaging/debian/copyright +13 -0
  616. data/vendor/github.com/zeromq/czmq/packaging/debian/czmq.dsc.obs +20 -0
  617. data/vendor/github.com/zeromq/czmq/packaging/debian/czmq.install +2 -0
  618. data/vendor/github.com/zeromq/czmq/packaging/debian/czmq.manpages +1 -0
  619. data/vendor/github.com/zeromq/czmq/packaging/debian/format +1 -0
  620. data/vendor/github.com/zeromq/czmq/packaging/debian/libczmq-dev.install +4 -0
  621. data/vendor/github.com/zeromq/czmq/packaging/debian/libczmq-dev.manpages +2 -0
  622. data/vendor/github.com/zeromq/czmq/packaging/debian/libczmq4.install +1 -0
  623. data/vendor/github.com/zeromq/czmq/packaging/debian/rules +96 -0
  624. data/vendor/github.com/zeromq/czmq/packaging/dist/gitlog2changelog.py +125 -0
  625. data/vendor/github.com/zeromq/czmq/packaging/obs/_service +91 -0
  626. data/vendor/github.com/zeromq/czmq/packaging/redhat/czmq.spec +202 -0
  627. data/vendor/github.com/zeromq/czmq/project.gyp +121 -0
  628. data/vendor/github.com/zeromq/czmq/project.xml +99 -0
  629. data/vendor/github.com/zeromq/czmq/setup.py +9 -0
  630. data/vendor/github.com/zeromq/czmq/src/.gitignore +20 -0
  631. data/vendor/github.com/zeromq/czmq/src/.valgrind.supp +33 -0
  632. data/vendor/github.com/zeromq/czmq/src/CMakeLists-local.txt +22 -0
  633. data/vendor/github.com/zeromq/czmq/src/Makemodule-local.am +15 -0
  634. data/vendor/github.com/zeromq/czmq/src/Makemodule.am +353 -0
  635. data/vendor/github.com/zeromq/czmq/src/czmq_classes.h +388 -0
  636. data/vendor/github.com/zeromq/czmq/src/czmq_private_selftest.c +40 -0
  637. data/vendor/github.com/zeromq/czmq/src/czmq_selftest.c +220 -0
  638. data/vendor/github.com/zeromq/czmq/src/foreign/sha1/sha1.h +76 -0
  639. data/vendor/github.com/zeromq/czmq/src/foreign/sha1/sha1.inc_c +335 -0
  640. data/vendor/github.com/zeromq/czmq/src/foreign/slre/readme.txt +83 -0
  641. data/vendor/github.com/zeromq/czmq/src/foreign/slre/slre.h +92 -0
  642. data/vendor/github.com/zeromq/czmq/src/foreign/slre/slre.inc_c +660 -0
  643. data/vendor/github.com/zeromq/czmq/src/libczmq.pc.in +24 -0
  644. data/vendor/github.com/zeromq/czmq/src/python_cffi.inc +17 -0
  645. data/vendor/github.com/zeromq/czmq/src/selftest-ro/.gitkeep +0 -0
  646. data/vendor/github.com/zeromq/czmq/src/selftest.cfg +5 -0
  647. data/vendor/github.com/zeromq/czmq/src/sockopts.gsl +36 -0
  648. data/vendor/github.com/zeromq/czmq/src/sockopts.xml +193 -0
  649. data/vendor/github.com/zeromq/czmq/src/test_randof.c +182 -0
  650. data/vendor/github.com/zeromq/czmq/src/test_zgossip.c +188 -0
  651. data/vendor/github.com/zeromq/czmq/src/valgrind.supp +14 -0
  652. data/vendor/github.com/zeromq/czmq/src/zactor.c +338 -0
  653. data/vendor/github.com/zeromq/czmq/src/zargs.c +289 -0
  654. data/vendor/github.com/zeromq/czmq/src/zarmour.c +941 -0
  655. data/vendor/github.com/zeromq/czmq/src/zauth.c +821 -0
  656. data/vendor/github.com/zeromq/czmq/src/zbeacon.c +651 -0
  657. data/vendor/github.com/zeromq/czmq/src/zcert.c +557 -0
  658. data/vendor/github.com/zeromq/czmq/src/zcertstore.c +407 -0
  659. data/vendor/github.com/zeromq/czmq/src/zchunk.c +609 -0
  660. data/vendor/github.com/zeromq/czmq/src/zclock.c +237 -0
  661. data/vendor/github.com/zeromq/czmq/src/zconfig.c +1369 -0
  662. data/vendor/github.com/zeromq/czmq/src/zdigest.c +163 -0
  663. data/vendor/github.com/zeromq/czmq/src/zdir.c +1138 -0
  664. data/vendor/github.com/zeromq/czmq/src/zdir_patch.c +227 -0
  665. data/vendor/github.com/zeromq/czmq/src/zfile.c +920 -0
  666. data/vendor/github.com/zeromq/czmq/src/zframe.c +756 -0
  667. data/vendor/github.com/zeromq/czmq/src/zgossip.c +689 -0
  668. data/vendor/github.com/zeromq/czmq/src/zgossip.xml +57 -0
  669. data/vendor/github.com/zeromq/czmq/src/zgossip_engine.inc +1008 -0
  670. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.bnf +43 -0
  671. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.c +688 -0
  672. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.h +127 -0
  673. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.xml +46 -0
  674. data/vendor/github.com/zeromq/czmq/src/zhash.c +956 -0
  675. data/vendor/github.com/zeromq/czmq/src/zhash_primes.inc +329 -0
  676. data/vendor/github.com/zeromq/czmq/src/zhashx.c +1369 -0
  677. data/vendor/github.com/zeromq/czmq/src/ziflist.c +517 -0
  678. data/vendor/github.com/zeromq/czmq/src/zlist.c +634 -0
  679. data/vendor/github.com/zeromq/czmq/src/zlistx.c +753 -0
  680. data/vendor/github.com/zeromq/czmq/src/zloop.c +1000 -0
  681. data/vendor/github.com/zeromq/czmq/src/zmakecert.c +64 -0
  682. data/vendor/github.com/zeromq/czmq/src/zmonitor.c +447 -0
  683. data/vendor/github.com/zeromq/czmq/src/zmsg.c +1258 -0
  684. data/vendor/github.com/zeromq/czmq/src/zpoller.c +397 -0
  685. data/vendor/github.com/zeromq/czmq/src/zproc.c +1160 -0
  686. data/vendor/github.com/zeromq/czmq/src/zproxy.c +791 -0
  687. data/vendor/github.com/zeromq/czmq/src/zrex.c +310 -0
  688. data/vendor/github.com/zeromq/czmq/src/zsock.c +2207 -0
  689. data/vendor/github.com/zeromq/czmq/src/zsock_option.gsl +404 -0
  690. data/vendor/github.com/zeromq/czmq/src/zsock_option.inc +3946 -0
  691. data/vendor/github.com/zeromq/czmq/src/zsp.c +118 -0
  692. data/vendor/github.com/zeromq/czmq/src/zstr.c +548 -0
  693. data/vendor/github.com/zeromq/czmq/src/zsys.c +2225 -0
  694. data/vendor/github.com/zeromq/czmq/src/ztimerset.c +227 -0
  695. data/vendor/github.com/zeromq/czmq/src/ztrie.c +809 -0
  696. data/vendor/github.com/zeromq/czmq/src/zuuid.c +344 -0
  697. metadata +780 -0
@@ -0,0 +1,163 @@
1
+ /* =========================================================================
2
+ zdigest - provides hashing functions (SHA-1 at present)
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 zdigest class generates a hash from zchunks of data. The current
17
+ algorithm is SHA-1, chosen for speed. We are aiming to generate a
18
+ unique digest for a file, and there are no security issues in this
19
+ use case.
20
+ @discuss
21
+ The current code depends on OpenSSL, which might be replaced by hard
22
+ coded SHA-1 implementation to reduce build dependencies.
23
+ @end
24
+ */
25
+
26
+ #include "czmq_classes.h"
27
+ #include "foreign/sha1/sha1.inc_c"
28
+
29
+
30
+ // Structure of our class
31
+
32
+ struct _zdigest_t {
33
+ SHA_CTX context; // Digest context
34
+ // Binary hash
35
+ byte hash [SHA_DIGEST_LENGTH];
36
+ // ASCII representation (hex)
37
+ char string [SHA_DIGEST_LENGTH * 2 + 1];
38
+ bool final; // Finished calculating
39
+ };
40
+
41
+
42
+ // --------------------------------------------------------------------------
43
+ // Constructor - creates new digest object, which you use to build up a
44
+ // digest by repeatedly calling zdigest_update() on chunks of data.
45
+
46
+ zdigest_t *
47
+ zdigest_new (void)
48
+ {
49
+ zdigest_t *self = (zdigest_t *) zmalloc (sizeof (zdigest_t));
50
+ assert (self);
51
+ SHA1_Init (&self->context);
52
+ return self;
53
+ }
54
+
55
+
56
+ // --------------------------------------------------------------------------
57
+ // Destroy a digest object
58
+
59
+ void
60
+ zdigest_destroy (zdigest_t **self_p)
61
+ {
62
+ assert (self_p);
63
+ if (*self_p) {
64
+ zdigest_t *self = *self_p;
65
+ freen (self);
66
+ *self_p = NULL;
67
+ }
68
+ }
69
+
70
+
71
+ // --------------------------------------------------------------------------
72
+ // Add buffer into digest calculation
73
+
74
+ void
75
+ zdigest_update (zdigest_t *self, const byte *buffer, size_t length)
76
+ {
77
+ // Calling this after zdigest_data() is illegal use of the API
78
+ assert (self);
79
+ assert (!self->final);
80
+ SHA1_Update (&self->context, buffer, length);
81
+ }
82
+
83
+
84
+ // --------------------------------------------------------------------------
85
+ // Return final digest hash data. If built without crypto support, returns
86
+ // NULL.
87
+
88
+ const byte *
89
+ zdigest_data (zdigest_t *self)
90
+ {
91
+ assert (self);
92
+ if (!self->final) {
93
+ SHA1_Final (self->hash, &self->context);
94
+ self->final = true;
95
+ }
96
+ return self->hash;
97
+ }
98
+
99
+
100
+ // --------------------------------------------------------------------------
101
+ // Return final digest hash size
102
+
103
+ size_t
104
+ zdigest_size (zdigest_t *self)
105
+ {
106
+ assert (self);
107
+ return SHA_DIGEST_LENGTH;
108
+ }
109
+
110
+
111
+ // --------------------------------------------------------------------------
112
+ // Return digest as printable hex string; caller should not modify nor
113
+ // free this string. After calling this, you may not use zdigest_update()
114
+ // on the same digest. If built without crypto support, returns NULL.
115
+
116
+ char *
117
+ zdigest_string (zdigest_t *self)
118
+ {
119
+ assert (self);
120
+ const byte *data = zdigest_data (self);
121
+ char hex_char [] = "0123456789ABCDEF";
122
+ int byte_nbr;
123
+ for (byte_nbr = 0; byte_nbr < SHA_DIGEST_LENGTH; byte_nbr++) {
124
+ self->string [byte_nbr * 2 + 0] = hex_char [data [byte_nbr] >> 4];
125
+ self->string [byte_nbr * 2 + 1] = hex_char [data [byte_nbr] & 15];
126
+ }
127
+ self->string [SHA_DIGEST_LENGTH * 2] = 0;
128
+ return self->string;
129
+ }
130
+
131
+
132
+ // --------------------------------------------------------------------------
133
+ // Self test of this class
134
+
135
+ void
136
+ zdigest_test (bool verbose)
137
+ {
138
+ printf (" * zdigest: ");
139
+
140
+ // @selftest
141
+ byte *buffer = (byte *) zmalloc (1024);
142
+ memset (buffer, 0xAA, 1024);
143
+
144
+ zdigest_t *digest = zdigest_new ();
145
+ assert (digest);
146
+ zdigest_update (digest, buffer, 1024);
147
+ const byte *data = zdigest_data (digest);
148
+ assert (data [0] == 0xDE);
149
+ assert (data [1] == 0xB2);
150
+ assert (data [2] == 0x38);
151
+ assert (data [3] == 0x07);
152
+ assert (streq (zdigest_string (digest),
153
+ "DEB23807D4FE025E900FE9A9C7D8410C3DDE9671"));
154
+ zdigest_destroy (&digest);
155
+ freen (buffer);
156
+
157
+ #if defined (__WINDOWS__)
158
+ zsys_shutdown();
159
+ #endif
160
+ // @end
161
+
162
+ printf ("OK\n");
163
+ }
@@ -0,0 +1,1138 @@
1
+ /* =========================================================================
2
+ zdir - work with file-system directories
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 zdir class gives access to the file system index. It will load
16
+ a directory tree (a directory plus all child directories) into a
17
+ zdir structure and then let you navigate that structure. It exists
18
+ mainly to wrap non-portable OS functions to do this.
19
+ @discuss
20
+ @end
21
+ */
22
+
23
+ #include "czmq_classes.h"
24
+
25
+ // Structure of our class
26
+
27
+ struct _zdir_t {
28
+ char *path; // Directory name + separator
29
+ zlist_t *files; // List of files in directory
30
+ zlist_t *subdirs; // List of subdirectories
31
+ time_t modified; // Most recent file including subdirs
32
+ off_t cursize; // Total file size including subdirs
33
+ size_t count; // Total file count including subdirs
34
+ bool trimmed; // Load only top level directory
35
+ };
36
+
37
+ #if (defined (WIN32))
38
+ static void
39
+ s_win32_populate_entry (zdir_t *self, WIN32_FIND_DATAA *entry)
40
+ {
41
+ if (entry->cFileName [0] == '.')
42
+ ; // Skip hidden files
43
+ else
44
+ // If we have a subdirectory, go load that
45
+ if (entry->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
46
+ if (!self->trimmed) {
47
+ zdir_t *subdir = zdir_new (entry->cFileName, self->path);
48
+ zlist_append (self->subdirs, subdir);
49
+ }
50
+ }
51
+ else {
52
+ // Add file entry to directory list
53
+ zfile_t *file = zfile_new (self->path, entry->cFileName);
54
+ assert (file);
55
+ zlist_append (self->files, file);
56
+ }
57
+ }
58
+
59
+ #else
60
+ static void
61
+ s_posix_populate_entry (zdir_t *self, struct dirent *entry)
62
+ {
63
+ // Skip . and ..
64
+ if (streq (entry->d_name, ".")
65
+ || streq (entry->d_name, ".."))
66
+ return;
67
+
68
+ char fullpath [1024 + 1];
69
+ snprintf (fullpath, 1024, "%s/%s", self->path, entry->d_name);
70
+ struct stat stat_buf;
71
+ if (stat (fullpath, &stat_buf))
72
+ return;
73
+
74
+ if (entry->d_name [0] == '.')
75
+ ; // Skip hidden files
76
+ else
77
+ // If we have a subdirectory, go load that
78
+ if (S_ISDIR (stat_buf.st_mode)) {
79
+ if (!self->trimmed) {
80
+ zdir_t *subdir = zdir_new (entry->d_name, self->path);
81
+ assert (subdir);
82
+ zlist_append (self->subdirs, subdir);
83
+ }
84
+ }
85
+ else {
86
+ // Add file entry to directory list
87
+ zfile_t *file = zfile_new (self->path, entry->d_name);
88
+ assert (file);
89
+ zlist_append (self->files, file);
90
+ }
91
+ }
92
+ #endif
93
+
94
+ #ifndef WIN32
95
+ static pthread_mutex_t s_readdir_mutex = PTHREAD_MUTEX_INITIALIZER;
96
+ #endif
97
+
98
+ // --------------------------------------------------------------------------
99
+ // Create a new directory item that loads in the full tree of the specified
100
+ // path, optionally located under some parent path. If parent is "-", then
101
+ // loads only the top-level directory, and does not use parent as a path.
102
+
103
+ zdir_t *
104
+ zdir_new (const char *path, const char *parent)
105
+ {
106
+ zdir_t *self = (zdir_t *) zmalloc (sizeof (zdir_t));
107
+ assert (self);
108
+
109
+ if (parent) {
110
+ if (streq (parent, "-")) {
111
+ self->trimmed = true;
112
+ self->path = strdup (path);
113
+ if (!self->path) {
114
+ zdir_destroy (&self);
115
+ return NULL;
116
+ }
117
+ }
118
+ else {
119
+ self->path = (char *) zmalloc (strlen (path) + strlen (parent) + 2);
120
+ if (self->path)
121
+ sprintf (self->path, "%s/%s", parent, path);
122
+ else {
123
+ zdir_destroy (&self);
124
+ return NULL;
125
+ }
126
+ }
127
+ }
128
+ else {
129
+ self->path = strdup (path);
130
+ if (!self->path) {
131
+ zdir_destroy (&self);
132
+ return NULL;
133
+ }
134
+ }
135
+ if (self->path)
136
+ self->files = zlist_new ();
137
+ if (self->files)
138
+ self->subdirs = zlist_new ();
139
+ if (!self->subdirs) {
140
+ zdir_destroy (&self);
141
+ return NULL;
142
+ }
143
+
144
+ #if (defined (WIN32))
145
+ // On Windows, replace backslashes by normal slashes
146
+ char *path_clean_ptr = self->path;
147
+ while (*path_clean_ptr) {
148
+ if (*path_clean_ptr == '\\')
149
+ *path_clean_ptr = '/';
150
+ path_clean_ptr++;
151
+ }
152
+ // Remove any trailing slash
153
+ if (self->path [strlen (self->path) - 1] == '/')
154
+ self->path [strlen (self->path) - 1] = 0;
155
+
156
+ // Win32 wants a wildcard at the end of the path
157
+ char *wildcard = (char *) zmalloc (strlen (self->path) + 3);
158
+ if (!wildcard) {
159
+ zdir_destroy (&self);
160
+ return NULL;
161
+ }
162
+ sprintf (wildcard, "%s/*", self->path);
163
+ WIN32_FIND_DATAA entry;
164
+ HANDLE handle = FindFirstFileA (wildcard, &entry);
165
+ freen (wildcard);
166
+
167
+ if (handle != INVALID_HANDLE_VALUE) {
168
+ // We have read an entry, so return those values
169
+ s_win32_populate_entry (self, &entry);
170
+ while (FindNextFileA (handle, &entry))
171
+ s_win32_populate_entry (self, &entry);
172
+ FindClose (handle);
173
+ }
174
+ #else
175
+ // Remove any trailing slash
176
+ if (self->path [strlen (self->path) - 1] == '/')
177
+ self->path [strlen (self->path) - 1] = 0;
178
+
179
+ DIR *handle = opendir (self->path);
180
+ if (handle) {
181
+ // readdir_r is deprecated in glibc 2.24, but readdir is still not
182
+ // guaranteed to be thread safe if the same directory is accessed
183
+ // by different threads at the same time. Unfortunately given it was
184
+ // not a constraint before we cannot change it now as it would be an
185
+ // API breakage. Use a global lock when scanning the directory to
186
+ // work around it.
187
+ pthread_mutex_lock (&s_readdir_mutex);
188
+ struct dirent *entry = readdir (handle);
189
+ pthread_mutex_unlock (&s_readdir_mutex);
190
+ while (entry != NULL) {
191
+ // Beware of recursion. Lock only around readdir calls.
192
+ s_posix_populate_entry (self, entry);
193
+ pthread_mutex_lock (&s_readdir_mutex);
194
+ entry = readdir (handle);
195
+ pthread_mutex_unlock (&s_readdir_mutex);
196
+ }
197
+ closedir (handle);
198
+ }
199
+ #endif
200
+ else {
201
+ zdir_destroy (&self);
202
+ return NULL;
203
+ }
204
+ // Update directory signatures
205
+ zdir_t *subdir = (zdir_t *) zlist_first (self->subdirs);
206
+ while (subdir) {
207
+ if (self->modified < subdir->modified)
208
+ self->modified = subdir->modified;
209
+ self->cursize += subdir->cursize;
210
+ self->count += subdir->count;
211
+ subdir = (zdir_t *) zlist_next (self->subdirs);
212
+ }
213
+ zfile_t *file = (zfile_t *) zlist_first (self->files);
214
+ while (file) {
215
+ if (self->modified < zfile_modified (file))
216
+ self->modified = zfile_modified (file);
217
+ self->cursize += zfile_cursize (file);
218
+ self->count += 1;
219
+ file = (zfile_t *) zlist_next (self->files);
220
+ }
221
+ return self;
222
+ }
223
+
224
+
225
+ // --------------------------------------------------------------------------
226
+ // Destroy a directory item
227
+
228
+ void
229
+ zdir_destroy (zdir_t **self_p)
230
+ {
231
+ assert (self_p);
232
+ if (*self_p) {
233
+ zdir_t *self = *self_p;
234
+ if (self->subdirs)
235
+ while (zlist_size (self->subdirs)) {
236
+ zdir_t *subdir = (zdir_t *) zlist_pop (self->subdirs);
237
+ zdir_destroy (&subdir);
238
+ }
239
+ if (self->files)
240
+ while (zlist_size (self->files)) {
241
+ zfile_t *file = (zfile_t *) zlist_pop (self->files);
242
+ zfile_destroy (&file);
243
+ }
244
+ zlist_destroy (&self->subdirs);
245
+ zlist_destroy (&self->files);
246
+ freen (self->path);
247
+ freen (self);
248
+ *self_p = NULL;
249
+ }
250
+ }
251
+
252
+
253
+ // --------------------------------------------------------------------------
254
+ // Return directory path
255
+
256
+ const char *
257
+ zdir_path (zdir_t *self)
258
+ {
259
+ return self->path;
260
+ }
261
+
262
+
263
+ // --------------------------------------------------------------------------
264
+ // Return last modification time for directory.
265
+
266
+ time_t
267
+ zdir_modified (zdir_t *self)
268
+ {
269
+ assert (self);
270
+ return self->modified;
271
+ }
272
+
273
+
274
+ // --------------------------------------------------------------------------
275
+ // Return total hierarchy size, in bytes of data contained in all files
276
+ // in the directory tree.
277
+
278
+ off_t
279
+ zdir_cursize (zdir_t *self)
280
+ {
281
+ assert (self);
282
+ return self->cursize;
283
+ }
284
+
285
+
286
+ // --------------------------------------------------------------------------
287
+ // Return directory count
288
+
289
+ size_t
290
+ zdir_count (zdir_t *self)
291
+ {
292
+ assert (self);
293
+ return self->count;
294
+ }
295
+
296
+
297
+ // --------------------------------------------------------------------------
298
+ // Returns a sorted array of zfile objects; returns a single block of memory,
299
+ // that you destroy by calling zdir_flatten_free(). Each entry in the array
300
+ // is a pointer to a zfile_t item already allocated in the zdir tree. The
301
+ // array ends with a null pointer. Do not destroy the original zdir tree
302
+ // until you are done with this array.
303
+
304
+ static int s_dir_flatten (zdir_t *self, zfile_t **files, int index);
305
+ static int s_dir_compare (void *item1, void *item2);
306
+ static int s_file_compare (void *item1, void *item2);
307
+
308
+ zfile_t **
309
+ zdir_flatten (zdir_t *self)
310
+ {
311
+ size_t flat_size;
312
+ if (self)
313
+ flat_size = self->count + 1;
314
+ else
315
+ flat_size = 1; // Just null terminator
316
+
317
+ zfile_t **files = (zfile_t **) zmalloc (sizeof (zfile_t *) * flat_size);
318
+ uint index = 0;
319
+ if (self)
320
+ index = s_dir_flatten (self, files, index);
321
+ return files;
322
+ }
323
+
324
+ // Flatten one directory, calls itself recursively
325
+
326
+ static int
327
+ s_dir_flatten (zdir_t *self, zfile_t **files, int index)
328
+ {
329
+ // First flatten the normal files
330
+ zlist_sort (self->files, s_file_compare);
331
+ zfile_t *file = (zfile_t *) zlist_first (self->files);
332
+ while (file) {
333
+ files [index++] = file;
334
+ file = (zfile_t *) zlist_next (self->files);
335
+ }
336
+ // Now flatten subdirectories, recursively
337
+ zlist_sort (self->subdirs, s_dir_compare);
338
+ zdir_t *subdir = (zdir_t *) zlist_first (self->subdirs);
339
+ while (subdir) {
340
+ index = s_dir_flatten (subdir, files, index);
341
+ subdir = (zdir_t *) zlist_next (self->subdirs);
342
+ }
343
+ return index;
344
+ }
345
+
346
+ // Compare two subdirs, true if they need swapping
347
+
348
+ static int
349
+ s_dir_compare (void *item1, void *item2)
350
+ {
351
+ assert (item1);
352
+ assert (item2);
353
+
354
+ return strcmp (zdir_path ((zdir_t *) item1),
355
+ zdir_path ((zdir_t *) item2));
356
+ }
357
+
358
+ // Compare two files, true if they need swapping. We sort by ascending name.
359
+
360
+ static int
361
+ s_file_compare (void *item1, void *item2)
362
+ {
363
+ assert (item1);
364
+ assert (item2);
365
+
366
+ return strcmp (zfile_filename ((zfile_t *) item1, NULL),
367
+ zfile_filename ((zfile_t *) item2, NULL));
368
+ }
369
+
370
+
371
+ // --------------------------------------------------------------------------
372
+ // Free a provided string, and nullify the parent pointer. Safe to call on
373
+ // a null pointer.
374
+
375
+ void
376
+ zdir_flatten_free (zfile_t ***files_p)
377
+ {
378
+ assert (files_p);
379
+ freen (*files_p);
380
+ *files_p = NULL;
381
+ }
382
+
383
+ // --------------------------------------------------------------------------
384
+ // Returns a sorted list of zfile objects; Each entry in the list is a pointer
385
+ // to a zfile_t item already allocated in the zdir tree. Do not destroy the
386
+ // original zdir tree until you are done with this list.
387
+
388
+ zlist_t *
389
+ zdir_list (zdir_t *self)
390
+ {
391
+ zfile_t **files = zdir_flatten (self);
392
+ zlist_t *list = zlist_new ();
393
+ size_t index;
394
+
395
+ if (files)
396
+ {
397
+ for (index = 0 ; files[index] ; index++)
398
+ {
399
+ zlist_append (list, files[index]);
400
+ }
401
+ }
402
+
403
+ zdir_flatten_free (&files);
404
+ return list;
405
+ }
406
+
407
+ // --------------------------------------------------------------------------
408
+ // Remove directory, optionally including all files that it contains, at
409
+ // all levels. If force is false, will only remove the directory if empty.
410
+ // If force is true, will remove all files and all subdirectories.
411
+
412
+ void
413
+ zdir_remove (zdir_t *self, bool force)
414
+ {
415
+ // If forced, remove all subdirectories and files
416
+ if (force) {
417
+ zfile_t *file = (zfile_t *) zlist_pop (self->files);
418
+ while (file) {
419
+ zfile_remove (file);
420
+ zfile_destroy (&file);
421
+ file = (zfile_t *) zlist_pop (self->files);
422
+ }
423
+ zdir_t *subdir = (zdir_t *) zlist_pop (self->subdirs);
424
+ while (subdir) {
425
+ zdir_remove (subdir, force);
426
+ zdir_destroy (&subdir);
427
+ subdir = (zdir_t *) zlist_pop (self->subdirs);
428
+ }
429
+ self->cursize = 0;
430
+ self->count = 0;
431
+ }
432
+ // Remove if empty
433
+ if (zlist_size (self->files) == 0
434
+ && zlist_size (self->subdirs) == 0)
435
+ zsys_dir_delete (self->path);
436
+ }
437
+
438
+
439
+ // --------------------------------------------------------------------------
440
+ // Calculate differences between two versions of a directory tree.
441
+ // Returns a list of zdir_patch_t patches. Either older or newer may
442
+ // be null, indicating the directory is empty/absent. If alias is set,
443
+ // generates virtual filename (minus path, plus alias).
444
+
445
+ zlist_t *
446
+ zdir_diff (zdir_t *older, zdir_t *newer, const char *alias)
447
+ {
448
+ zlist_t *patches = zlist_new ();
449
+ if (!patches)
450
+ return NULL;
451
+
452
+ zfile_t **old_files = zdir_flatten (older);
453
+ zfile_t **new_files = zdir_flatten (newer);
454
+
455
+ int old_index = 0;
456
+ int new_index = 0;
457
+
458
+ // Note that both lists are sorted, so detecting differences
459
+ // is rather trivial
460
+ while (old_files [old_index] || new_files [new_index]) {
461
+ zfile_t *old_file = old_files [old_index];
462
+ zfile_t *new_file = new_files [new_index];
463
+
464
+ int cmp;
465
+ if (!old_file)
466
+ cmp = 1; // Old file was deleted at end of list
467
+ else
468
+ if (!new_file)
469
+ cmp = -1; // New file was added at end of list
470
+ else
471
+ cmp = strcmp (zfile_filename (old_file, NULL), zfile_filename (new_file, NULL));
472
+
473
+ if (cmp > 0) {
474
+ // New file was created
475
+ if (zfile_is_stable (new_file)) {
476
+ int rc = zlist_append (patches, zdir_patch_new (newer->path, new_file, patch_create, alias));
477
+ if (rc != 0) {
478
+ zlist_destroy (&patches);
479
+ break;
480
+ }
481
+ }
482
+ old_index--;
483
+ }
484
+ else
485
+ if (cmp < 0) {
486
+ // Old file was deleted
487
+ if (zfile_is_stable (old_file)) {
488
+ int rc = zlist_append (patches, zdir_patch_new (older->path, old_file, patch_delete, alias));
489
+ if (rc != 0) {
490
+ zlist_destroy (&patches);
491
+ break;
492
+ }
493
+ }
494
+ new_index--;
495
+ }
496
+ else
497
+ if (cmp == 0 && zfile_is_stable (new_file)) {
498
+ if (zfile_is_stable (old_file)) {
499
+ // Old file was modified or replaced
500
+ // Since we don't check file contents, treat as created
501
+ // Could better do SHA check on file here
502
+ if (zfile_modified (new_file) != zfile_modified (old_file)
503
+ || zfile_cursize (new_file) != zfile_cursize (old_file)) {
504
+ int rc = zlist_append (patches, zdir_patch_new (newer->path, new_file, patch_create, alias));
505
+ if (rc != 0) {
506
+ zlist_destroy (&patches);
507
+ break;
508
+ }
509
+ }
510
+ }
511
+ else {
512
+ // File was created over some period of time
513
+ int rc = zlist_append (patches, zdir_patch_new (newer->path, new_file, patch_create, alias));
514
+ if (rc != 0) {
515
+ zlist_destroy (&patches);
516
+ break;
517
+ }
518
+ }
519
+ }
520
+ old_index++;
521
+ new_index++;
522
+ }
523
+ freen (old_files);
524
+ freen (new_files);
525
+
526
+ return patches;
527
+ }
528
+
529
+
530
+ // --------------------------------------------------------------------------
531
+ // Return full contents of directory as a patch list. If alias is set,
532
+ // generates virtual filename (minus path, plus alias).
533
+
534
+ zlist_t *
535
+ zdir_resync (zdir_t *self, const char *alias)
536
+ {
537
+ zlist_t *patches = zlist_new ();
538
+ if (!patches)
539
+ return NULL;
540
+
541
+ zfile_t **files = zdir_flatten (self);
542
+ uint index;
543
+ for (index = 0;; index++) {
544
+ zfile_t *file = files [index];
545
+ if (!file)
546
+ break;
547
+ if (zlist_append (patches, zdir_patch_new (
548
+ self->path, file, patch_create, alias))) {
549
+ zlist_destroy (&patches);
550
+ break;
551
+ }
552
+ }
553
+ freen (files);
554
+ return patches;
555
+ }
556
+
557
+
558
+ // --------------------------------------------------------------------------
559
+ // Load directory cache; returns a hash table containing the SHA-1 digests
560
+ // of every file in the tree. The cache is saved between runs in .cache.
561
+ // The caller must destroy the hash table when done with it.
562
+
563
+ zhash_t *
564
+ zdir_cache (zdir_t *self)
565
+ {
566
+ assert (self);
567
+
568
+ // Load any previous cache from disk
569
+ zhash_t *cache = zhash_new ();
570
+ if (!cache)
571
+ return NULL;
572
+ zhash_autofree (cache);
573
+ char *cache_file = (char *) zmalloc (strlen (self->path) + strlen ("/.cache") + 1);
574
+ if (!cache_file) {
575
+ zhash_destroy (&cache);
576
+ return NULL;
577
+ }
578
+ sprintf (cache_file, "%s/.cache", self->path);
579
+ zhash_load (cache, cache_file);
580
+
581
+ // Recalculate digest for any new files
582
+ zfile_t **files = zdir_flatten (self);
583
+ uint index;
584
+ for (index = 0;; index++) {
585
+ zfile_t *file = files [index];
586
+ if (!file)
587
+ break;
588
+ const char *filename = zfile_filename (file, self->path);
589
+ if (zhash_lookup (cache, zfile_filename (file, self->path)) == NULL) {
590
+ int rc = zhash_insert (cache, filename, (void *) zfile_digest (file));
591
+ if (rc != 0) {
592
+ zhash_destroy (&cache);
593
+ break;
594
+ }
595
+ }
596
+ }
597
+ freen (files);
598
+
599
+ // Save cache to disk for future reference
600
+ if (cache)
601
+ zhash_save (cache, cache_file);
602
+ freen (cache_file);
603
+ return cache;
604
+ }
605
+
606
+
607
+ // --------------------------------------------------------------------------
608
+ // Print contents of directory to open stream
609
+
610
+ void
611
+ zdir_fprint (zdir_t *self, FILE *stream, int indent)
612
+ {
613
+ assert (self);
614
+
615
+ zfile_t **files = zdir_flatten (self);
616
+ uint index;
617
+ for (index = 0;; index++) {
618
+ zfile_t *file = files [index];
619
+ if (!file)
620
+ break;
621
+ fprintf (stream, "%s\n", zfile_filename (file, NULL));
622
+ }
623
+ zdir_flatten_free (&files);
624
+ }
625
+
626
+
627
+ // --------------------------------------------------------------------------
628
+ // Print contents of directory to stdout
629
+
630
+ void
631
+ zdir_print (zdir_t *self, int indent)
632
+ {
633
+ zdir_fprint (self, stdout, indent);
634
+ }
635
+
636
+ // --------------------------------------------------------------------------
637
+ // Watch a directory for changes
638
+
639
+ typedef struct _zdir_watch_t {
640
+ zsock_t *pipe; // actor command channel
641
+ zloop_t *loop; // event reactor
642
+ int read_timer_id; // the zloop timer id to signal directory updating
643
+
644
+ bool verbose; // extra logging to be printed
645
+ zhash_t *subs; // path -> zdir_watch_sub_t instance hashtable for each active subscription
646
+ } zdir_watch_t;
647
+
648
+ typedef struct _zdir_watch_sub_t {
649
+ zdir_t *dir;
650
+ } zdir_watch_sub_t;
651
+
652
+ static int
653
+ s_on_read_timer (zloop_t *loop, int timer_id, void *arg)
654
+ {
655
+ zdir_watch_t *watch = (zdir_watch_t *) arg;
656
+
657
+ void *data;
658
+ for (data = zhash_first (watch->subs); data != NULL; data = zhash_next (watch->subs))
659
+ {
660
+ zdir_watch_sub_t *sub = (zdir_watch_sub_t *) data;
661
+
662
+ zdir_t *new_dir = zdir_new (zdir_path (sub->dir), NULL);
663
+ if (!new_dir) {
664
+ if (watch->verbose)
665
+ zsys_error ("zdir_watch: Unable to create new zdir for path %s", zdir_path (sub->dir));
666
+ continue;
667
+ }
668
+
669
+ // Determine if anything has changed.
670
+ zlist_t *diff = zdir_diff (sub->dir, new_dir, "");
671
+
672
+ // Do memory management before error handling...
673
+ zdir_destroy (&sub->dir);
674
+ sub->dir = new_dir;
675
+
676
+ if (!diff) {
677
+ if (watch->verbose)
678
+ zsys_error ("zdir_watch: Unable to create diff for path %s", zdir_path (sub->dir));
679
+ continue;
680
+ }
681
+
682
+ if (zlist_size (diff) > 0) {
683
+ if (watch->verbose) {
684
+ zdir_patch_t *patch = (zdir_patch_t *) zlist_first (diff);
685
+
686
+ zsys_info ("zdir_watch: Found %d changes in %s:", zlist_size (diff), zdir_path (sub->dir));
687
+ while (patch)
688
+ {
689
+ zsys_info ("zdir_watch: %s %s", zfile_filename (zdir_patch_file (patch), NULL), zdir_patch_op (patch) == ZDIR_PATCH_CREATE? "created": "deleted");
690
+ patch = (zdir_patch_t *) zlist_next (diff);
691
+ }
692
+ }
693
+
694
+ if (zsock_send (watch->pipe, "sp", zdir_path (sub->dir), diff) != 0) {
695
+ if (watch->verbose)
696
+ zsys_error ("zdir_watch: Unable to send patch list for path %s", zdir_path (sub->dir));
697
+ zlist_destroy (&diff);
698
+ }
699
+
700
+ // Successfully sent `diff` list - now owned by receiver
701
+ }
702
+ else {
703
+ zlist_destroy (&diff);
704
+ }
705
+ }
706
+
707
+ return 0;
708
+ }
709
+
710
+
711
+ static void
712
+ s_zdir_watch_destroy (zdir_watch_t **watch_p)
713
+ {
714
+ assert (watch_p);
715
+ if (*watch_p) {
716
+ zdir_watch_t *watch = *watch_p;
717
+
718
+ zloop_destroy (&watch->loop);
719
+ zhash_destroy (&watch->subs);
720
+
721
+ freen (watch);
722
+ *watch_p = NULL;
723
+ }
724
+ }
725
+
726
+ static void
727
+ s_sub_free (void *data)
728
+ {
729
+ zdir_watch_sub_t *sub = (zdir_watch_sub_t *) data;
730
+ zdir_destroy (&sub->dir);
731
+
732
+ freen (sub);
733
+ }
734
+
735
+ static void
736
+ s_zdir_watch_subscribe (zdir_watch_t *watch, const char *path)
737
+ {
738
+ if (watch->verbose)
739
+ zsys_info ("zdir_watch: Subscribing to directory path: %s", path);
740
+
741
+ zdir_watch_sub_t *sub = (zdir_watch_sub_t *) zmalloc (sizeof (zdir_watch_sub_t));
742
+ sub->dir = zdir_new (path, NULL);
743
+ if (!sub->dir) {
744
+ if (watch->verbose)
745
+ zsys_error ("zdir_watch: Unable to create zdir for path: %s", path);
746
+ zsock_signal (watch->pipe, 1);
747
+ return;
748
+ }
749
+
750
+ int rc = zhash_insert (watch->subs, path, sub);
751
+ if (rc) {
752
+ if (watch->verbose)
753
+ zsys_error ("zdir_watch: Unable to insert path '%s' into subscription list", path);
754
+ zsock_signal (watch->pipe, 1);
755
+ return;
756
+ }
757
+
758
+ void *item = zhash_freefn (watch->subs, path, s_sub_free);
759
+ if (item != sub) {
760
+ if (watch->verbose)
761
+ zsys_error ("zdir_watch: Unable to set free fn for path %s", path);
762
+ zsock_signal (watch->pipe, 1);
763
+ return;
764
+ }
765
+
766
+ if (watch->verbose)
767
+ zsys_info ("zdir_watch: Successfully subscribed to %s", path);
768
+ zsock_signal (watch->pipe, 0);
769
+ }
770
+
771
+ static void
772
+ s_zdir_watch_unsubscribe (zdir_watch_t *watch, const char *path)
773
+ {
774
+ if (watch->verbose)
775
+ zsys_info ("zdir_watch: Unsubscribing from directory path: %s", path);
776
+
777
+ zhash_delete (watch->subs, path);
778
+ if (watch->verbose)
779
+ zsys_info ("zdir_watch: Successfully unsubscribed from %s", path);
780
+ zsock_signal (watch->pipe, 0);
781
+ }
782
+
783
+ static int
784
+ s_zdir_watch_timeout (zdir_watch_t *watch, int timeout)
785
+ {
786
+ if (watch->verbose)
787
+ zsys_info ("zdir_watch: Setting directory poll timeout to %d", timeout);
788
+
789
+ if (watch->read_timer_id != -1) {
790
+ zloop_timer_end (watch->loop, watch->read_timer_id);
791
+ watch->read_timer_id = -1;
792
+ }
793
+
794
+ watch->read_timer_id = zloop_timer (watch->loop, timeout, 0, s_on_read_timer, watch);
795
+
796
+ if (watch->verbose)
797
+ zsys_info ("zdir_watch: Successfully set directory poll timeout to %d", timeout);
798
+ return 0;
799
+ }
800
+
801
+ static zdir_watch_t *
802
+ s_zdir_watch_new (zsock_t *pipe)
803
+ {
804
+ zdir_watch_t *watch = (zdir_watch_t *) zmalloc (sizeof (zdir_watch_t));
805
+ if (!watch)
806
+ return NULL;
807
+ watch->pipe = pipe;
808
+ watch->read_timer_id = -1;
809
+ watch->verbose = false;
810
+ return watch;
811
+ }
812
+
813
+ static int
814
+ s_on_command (zloop_t *loop, zsock_t *reader, void *arg)
815
+ {
816
+ zdir_watch_t *watch = (zdir_watch_t *) arg;
817
+
818
+ zmsg_t *msg = zmsg_recv (watch->pipe);
819
+ assert (msg);
820
+ char *command = zmsg_popstr (msg);
821
+ assert (command);
822
+
823
+ if (watch->verbose)
824
+ zsys_info ("zdir_watch: Command received: %s", command);
825
+
826
+ if (streq (command, "$TERM")) {
827
+ zstr_free (&command);
828
+ zmsg_destroy (&msg);
829
+ return -1;
830
+ }
831
+ else
832
+ if (streq (command, "VERBOSE")) {
833
+ watch->verbose = true;
834
+ zsock_signal (watch->pipe, 0);
835
+ }
836
+ else
837
+ if (streq (command, "SUBSCRIBE")) {
838
+ char *path = zmsg_popstr (msg);
839
+ if (path) {
840
+ s_zdir_watch_subscribe (watch, path);
841
+ freen (path);
842
+ }
843
+ else {
844
+ if (watch->verbose)
845
+ zsys_error ("zdir_watch: Unable to extract path from SUBSCRIBE message");
846
+ zsock_signal (watch->pipe, 1);
847
+ }
848
+ }
849
+ else
850
+ if (streq (command, "UNSUBSCRIBE")) {
851
+ char *path = zmsg_popstr (msg);
852
+ if (path) {
853
+ assert (path);
854
+ s_zdir_watch_unsubscribe (watch, path);
855
+ freen (path);
856
+ }
857
+ else {
858
+ if (watch->verbose)
859
+ zsys_error ("zdir_watch: Unable to extract path from UNSUBSCRIBE message");
860
+ zsock_signal (watch->pipe, 1);
861
+ }
862
+ }
863
+ else
864
+ if (streq (command, "TIMEOUT")) {
865
+ char *timeout_string = zmsg_popstr (msg);
866
+ if (timeout_string) {
867
+ int timeout = atoi (timeout_string);
868
+ zsock_signal (watch->pipe, s_zdir_watch_timeout (watch, timeout));
869
+ freen (timeout_string);
870
+ }
871
+ else {
872
+ if (watch->verbose)
873
+ zsys_error ("zdir_watch: Unable to extract time from TIMEOUT message");
874
+ zsock_signal (watch->pipe, 1);
875
+ }
876
+ }
877
+ else {
878
+ if (watch->verbose)
879
+ zsys_warning ("zdir_watch: Unknown command '%s'", command);
880
+ zsock_signal (watch->pipe, 1);
881
+ }
882
+
883
+ freen (command);
884
+ zmsg_destroy (&msg);
885
+ return 0;
886
+ }
887
+
888
+ // --------------------------------------------------------------------------
889
+ // Create a new zdir_watch actor instance
890
+
891
+ void
892
+ zdir_watch (zsock_t *pipe, void *unused)
893
+ {
894
+ zdir_watch_t *watch = s_zdir_watch_new (pipe);
895
+ assert (watch);
896
+
897
+ watch->loop = zloop_new ();
898
+ assert (watch->loop);
899
+
900
+ watch->subs = zhash_new ();
901
+ assert (watch->subs);
902
+
903
+ zloop_reader (watch->loop, pipe, s_on_command, watch);
904
+ zloop_reader_set_tolerant (watch->loop, pipe); // command pipe needs to be tolerant, otherwise we'd have a hard time shutting down
905
+
906
+ s_zdir_watch_timeout (watch, 250); // default poll time of 250ms
907
+
908
+ // Signal initialization
909
+ zsock_signal (pipe, 0);
910
+
911
+ // Dispatch above handlers
912
+ zloop_start (watch->loop);
913
+ if (watch->verbose)
914
+ zsys_info ("zdir_watch: Complete");
915
+
916
+ // signal destruction
917
+ zsock_signal (watch->pipe, 0);
918
+
919
+ // Done - cleanup and exit
920
+ s_zdir_watch_destroy (&watch);
921
+ }
922
+
923
+
924
+ // --------------------------------------------------------------------------
925
+ // Self test of this class
926
+
927
+ void
928
+ zdir_test (bool verbose)
929
+ {
930
+ printf (" * zdir: ");
931
+
932
+ // @selftest
933
+
934
+ const char *SELFTEST_DIR_RW = "src/selftest-rw";
935
+
936
+ const char *testbasedir = "zdir-test-dir";
937
+ const char *testfile1 = "initial_file";
938
+ const char *testfile2 = "test_abc";
939
+ char *basedirpath = NULL; // subdir in a test, under SELFTEST_DIR_RW
940
+ char *filepath1 = NULL; // pathname to testfile in a test, in dirpath
941
+ char *filepath2 = NULL; // pathname to testfile in a test, in dirpath
942
+
943
+ basedirpath = zsys_sprintf ("%s/%s", SELFTEST_DIR_RW, testbasedir);
944
+ assert (basedirpath);
945
+ filepath1 = zsys_sprintf ("%s/%s", basedirpath, testfile1);
946
+ assert (filepath1);
947
+ filepath2 = zsys_sprintf ("%s/%s", basedirpath, testfile2);
948
+ assert (filepath2);
949
+
950
+ /*
951
+ char *relfilepath2 = NULL; // pathname to testfile in a test, in dirpath
952
+ relfilepath2 = zsys_sprintf ("%s/%s", testbasedir, testfile2);
953
+ assert (relfilepath2);
954
+ */
955
+
956
+ // Make sure old aborted tests do not hinder us
957
+ zdir_t *dir = zdir_new (basedirpath, NULL);
958
+ if (dir) {
959
+ zdir_remove (dir, true);
960
+ zdir_destroy (&dir);
961
+ }
962
+ zsys_file_delete (filepath1);
963
+ zsys_file_delete (filepath2);
964
+ zsys_dir_delete (basedirpath);
965
+
966
+ dir = zdir_new ("does-not-exist", NULL);
967
+ if (dir) {
968
+ zdir_remove (dir, true);
969
+ zdir_destroy (&dir);
970
+ }
971
+
972
+ // need to create a file in the test directory we're watching
973
+ // in order to ensure the directory exists
974
+ zfile_t *initfile = zfile_new (basedirpath, testfile1);
975
+ assert (initfile);
976
+ zfile_output (initfile);
977
+ fprintf (zfile_handle (initfile), "initial file\n");
978
+ zfile_close (initfile);
979
+ zfile_destroy (&initfile);
980
+
981
+ zdir_t *older = zdir_new (basedirpath, NULL);
982
+ assert (older);
983
+ if (verbose) {
984
+ printf ("\n");
985
+ zdir_dump (older, 0);
986
+ }
987
+ zdir_t *newer = zdir_new (SELFTEST_DIR_RW, NULL);
988
+ assert (newer);
989
+ zlist_t *patches = zdir_diff (older, newer, "/");
990
+ assert (patches);
991
+ while (zlist_size (patches)) {
992
+ zdir_patch_t *patch = (zdir_patch_t *) zlist_pop (patches);
993
+ zdir_patch_destroy (&patch);
994
+ }
995
+ zlist_destroy (&patches);
996
+ zdir_destroy (&older);
997
+ zdir_destroy (&newer);
998
+
999
+ zdir_t *nosuch = zdir_new ("does-not-exist", NULL);
1000
+ assert (nosuch == NULL);
1001
+
1002
+ // zdir_watch test:
1003
+ zactor_t *watch = zactor_new (zdir_watch, NULL);
1004
+ assert (watch);
1005
+
1006
+ int synced;
1007
+ if (verbose) {
1008
+ zsock_send (watch, "s", "VERBOSE");
1009
+ synced = zsock_wait(watch);
1010
+ assert ( synced == 0);
1011
+ }
1012
+
1013
+ // wait for initial file to become 'stable'
1014
+ #ifdef CZMQ_BUILD_DRAFT_API
1015
+ zclock_sleep ((int)zsys_file_stable_age_msec() + 50);
1016
+ #else
1017
+ zclock_sleep (5050);
1018
+ #endif
1019
+
1020
+ zsock_send (watch, "si", "TIMEOUT", 100);
1021
+ synced = zsock_wait(watch);
1022
+ assert (synced == 0);
1023
+
1024
+ zsock_send (watch, "ss", "SUBSCRIBE", basedirpath);
1025
+ synced = zsock_wait(watch);
1026
+ assert(synced == 0);
1027
+
1028
+ zsock_send (watch, "ss", "UNSUBSCRIBE", basedirpath);
1029
+ synced = zsock_wait(watch);
1030
+ assert(synced == 0);
1031
+
1032
+ zsock_send (watch, "ss", "SUBSCRIBE", basedirpath);
1033
+ synced = zsock_wait(watch);
1034
+ assert(synced == 0);
1035
+
1036
+ zfile_t *newfile = zfile_new (basedirpath, testfile2);
1037
+ zfile_output (newfile);
1038
+ fprintf (zfile_handle (newfile), "test file\n");
1039
+ zfile_close (newfile);
1040
+
1041
+ zpoller_t *watch_poll = zpoller_new (watch, NULL);
1042
+
1043
+ // poll for a certain timeout before giving up and failing the test
1044
+ void* polled = NULL;
1045
+ #ifdef CZMQ_BUILD_DRAFT_API
1046
+ polled = zpoller_wait(watch_poll, (int)zsys_file_stable_age_msec() + 150);
1047
+ #else
1048
+ polled = zpoller_wait(watch_poll, 5150);
1049
+ #endif
1050
+ assert (polled == watch);
1051
+
1052
+ // wait for notification of the file being added
1053
+ char *path;
1054
+ int rc = zsock_recv (watch, "sp", &path, &patches);
1055
+ assert (rc == 0);
1056
+
1057
+ assert (streq (path, basedirpath));
1058
+ freen (path);
1059
+
1060
+ if (verbose)
1061
+ zsys_debug("zdir_test() : added : zlist_size (patches)=%d",
1062
+ zlist_size (patches) );
1063
+ assert (zlist_size (patches) == 1);
1064
+
1065
+ zdir_patch_t *patch = (zdir_patch_t *) zlist_pop (patches);
1066
+ if (verbose)
1067
+ zsys_debug("zdir_test() : added : zdir_patch_path (patch)='%s'",
1068
+ zdir_patch_path (patch) );
1069
+ assert (streq (zdir_patch_path (patch), basedirpath));
1070
+
1071
+ zfile_t *patch_file = zdir_patch_file (patch);
1072
+ if (verbose)
1073
+ zsys_debug("zdir_test() : added : zfile_filename (patch_file, \"\")='%s'",
1074
+ zfile_filename (patch_file, "") );
1075
+ assert (streq (zfile_filename (patch_file, ""), filepath2));
1076
+
1077
+ zdir_patch_destroy (&patch);
1078
+ zlist_destroy (&patches);
1079
+
1080
+ // remove the file
1081
+ zfile_remove (newfile);
1082
+ zfile_destroy (&newfile);
1083
+
1084
+ // poll for a certain timeout before giving up and failing the test.
1085
+ #ifdef CZMQ_BUILD_DRAFT_API
1086
+ polled = zpoller_wait(watch_poll, (int)zsys_file_stable_age_msec() + 150);
1087
+ #else
1088
+ polled = zpoller_wait(watch_poll, 5150);
1089
+ #endif
1090
+ assert (polled == watch);
1091
+
1092
+ // wait for notification of the file being removed
1093
+ rc = zsock_recv (watch, "sp", &path, &patches);
1094
+ assert (rc == 0);
1095
+
1096
+ assert (streq (path, basedirpath));
1097
+ freen (path);
1098
+
1099
+ if (verbose)
1100
+ zsys_debug("zdir_test() : removed : zlist_size (patches)=%d",
1101
+ zlist_size (patches) );
1102
+ assert (zlist_size (patches) == 1);
1103
+
1104
+ patch = (zdir_patch_t *) zlist_pop (patches);
1105
+ if (verbose)
1106
+ zsys_debug("zdir_test() : removed : zdir_patch_path (patch)='%s'",
1107
+ zdir_patch_path (patch) );
1108
+ assert (streq (zdir_patch_path (patch), basedirpath));
1109
+
1110
+ patch_file = zdir_patch_file (patch);
1111
+ if (verbose)
1112
+ zsys_debug("zdir_test() : removed : zfile_filename (patch_file, \"\")='%s'",
1113
+ zfile_filename (patch_file, "") );
1114
+ assert (streq (zfile_filename (patch_file, ""), filepath2));
1115
+
1116
+ zdir_patch_destroy (&patch);
1117
+ zlist_destroy (&patches);
1118
+
1119
+ zpoller_destroy (&watch_poll);
1120
+ zactor_destroy (&watch);
1121
+
1122
+ // clean up by removing the test directory.
1123
+ dir = zdir_new (basedirpath, NULL);
1124
+ assert (dir);
1125
+ zdir_remove (dir, true);
1126
+ zdir_destroy (&dir);
1127
+
1128
+ zstr_free (&basedirpath);
1129
+ zstr_free (&filepath1);
1130
+ zstr_free (&filepath2);
1131
+
1132
+ #if defined (__WINDOWS__)
1133
+ zsys_shutdown();
1134
+ #endif
1135
+ // @end
1136
+
1137
+ printf ("OK\n");
1138
+ }