laag-libczmq 4.1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (697) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +57 -0
  3. data/LICENSE.txt +373 -0
  4. data/README.org +34 -0
  5. data/ext/laag/libczmq/extconf.rb +24 -0
  6. data/laag-libczmq.gemspec +21 -0
  7. data/lib/laag/libczmq.rb +30 -0
  8. data/vendor/github.com/zeromq/czmq/.editorconfig +19 -0
  9. data/vendor/github.com/zeromq/czmq/.gitattributes +5 -0
  10. data/vendor/github.com/zeromq/czmq/.github/PULL_REQUEST_TEMPLATE.md +28 -0
  11. data/vendor/github.com/zeromq/czmq/.gitignore +137 -0
  12. data/vendor/github.com/zeromq/czmq/.travis.yml +126 -0
  13. data/vendor/github.com/zeromq/czmq/AUTHORS +69 -0
  14. data/vendor/github.com/zeromq/czmq/CMakeLists.txt +653 -0
  15. data/vendor/github.com/zeromq/czmq/CONTRIBUTING.md +19 -0
  16. data/vendor/github.com/zeromq/czmq/Dockerfile +29 -0
  17. data/vendor/github.com/zeromq/czmq/Findlibsodium.cmake +47 -0
  18. data/vendor/github.com/zeromq/czmq/Findlibzmq.cmake +49 -0
  19. data/vendor/github.com/zeromq/czmq/Findlz4.cmake +49 -0
  20. data/vendor/github.com/zeromq/czmq/Findsystemd.cmake +49 -0
  21. data/vendor/github.com/zeromq/czmq/Finduuid.cmake +49 -0
  22. data/vendor/github.com/zeromq/czmq/INSTALL.cygwin +13 -0
  23. data/vendor/github.com/zeromq/czmq/ISSUES.cygwin +6 -0
  24. data/vendor/github.com/zeromq/czmq/Jenkinsfile +439 -0
  25. data/vendor/github.com/zeromq/czmq/LICENSE +373 -0
  26. data/vendor/github.com/zeromq/czmq/Makefile.am +70 -0
  27. data/vendor/github.com/zeromq/czmq/NEWS +823 -0
  28. data/vendor/github.com/zeromq/czmq/README.cygwin +23 -0
  29. data/vendor/github.com/zeromq/czmq/README.md +9345 -0
  30. data/vendor/github.com/zeromq/czmq/README.txt +512 -0
  31. data/vendor/github.com/zeromq/czmq/Vagrantfile +49 -0
  32. data/vendor/github.com/zeromq/czmq/acinclude.m4 +7 -0
  33. data/vendor/github.com/zeromq/czmq/api/zactor.api +77 -0
  34. data/vendor/github.com/zeromq/czmq/api/zargs.api +110 -0
  35. data/vendor/github.com/zeromq/czmq/api/zarmour.api +103 -0
  36. data/vendor/github.com/zeromq/czmq/api/zcert.api +128 -0
  37. data/vendor/github.com/zeromq/czmq/api/zcertstore.api +80 -0
  38. data/vendor/github.com/zeromq/czmq/api/zchunk.api +171 -0
  39. data/vendor/github.com/zeromq/czmq/api/zclock.api +43 -0
  40. data/vendor/github.com/zeromq/czmq/api/zconfig.api +205 -0
  41. data/vendor/github.com/zeromq/czmq/api/zdigest.api +45 -0
  42. data/vendor/github.com/zeromq/czmq/api/zdir.api +124 -0
  43. data/vendor/github.com/zeromq/czmq/api/zdir_patch.api +62 -0
  44. data/vendor/github.com/zeromq/czmq/api/zfile.api +157 -0
  45. data/vendor/github.com/zeromq/czmq/api/zframe.api +157 -0
  46. data/vendor/github.com/zeromq/czmq/api/zgossip_msg.api +104 -0
  47. data/vendor/github.com/zeromq/czmq/api/zhash.api +184 -0
  48. data/vendor/github.com/zeromq/czmq/api/zhashx.api +295 -0
  49. data/vendor/github.com/zeromq/czmq/api/ziflist.api +73 -0
  50. data/vendor/github.com/zeromq/czmq/api/zlist.api +158 -0
  51. data/vendor/github.com/zeromq/czmq/api/zlistx.api +220 -0
  52. data/vendor/github.com/zeromq/czmq/api/zloop.api +176 -0
  53. data/vendor/github.com/zeromq/czmq/api/zmsg.api +250 -0
  54. data/vendor/github.com/zeromq/czmq/api/zpoller.api +71 -0
  55. data/vendor/github.com/zeromq/czmq/api/zproc.api +247 -0
  56. data/vendor/github.com/zeromq/czmq/api/zsock.api +412 -0
  57. data/vendor/github.com/zeromq/czmq/api/zsock_option.api +847 -0
  58. data/vendor/github.com/zeromq/czmq/api/zstr.api +119 -0
  59. data/vendor/github.com/zeromq/czmq/api/zsys.api +490 -0
  60. data/vendor/github.com/zeromq/czmq/api/ztimerset.api +69 -0
  61. data/vendor/github.com/zeromq/czmq/api/ztrie.api +80 -0
  62. data/vendor/github.com/zeromq/czmq/api/zuuid.api +82 -0
  63. data/vendor/github.com/zeromq/czmq/appveyor.yml +73 -0
  64. data/vendor/github.com/zeromq/czmq/autogen.sh +52 -0
  65. data/vendor/github.com/zeromq/czmq/bindings/jni/.gitignore +8 -0
  66. data/vendor/github.com/zeromq/czmq/bindings/jni/CMakeLists.txt +79 -0
  67. data/vendor/github.com/zeromq/czmq/bindings/jni/Findczmq.cmake +47 -0
  68. data/vendor/github.com/zeromq/czmq/bindings/jni/README.md +130 -0
  69. data/vendor/github.com/zeromq/czmq/bindings/jni/android/CMakeLists.txt +79 -0
  70. data/vendor/github.com/zeromq/czmq/bindings/jni/android/android_toolchain.cmake +52 -0
  71. data/vendor/github.com/zeromq/czmq/bindings/jni/android/build.sh +68 -0
  72. data/vendor/github.com/zeromq/czmq/bindings/jni/build.gradle +151 -0
  73. data/vendor/github.com/zeromq/czmq/bindings/jni/ci_build.sh +96 -0
  74. data/vendor/github.com/zeromq/czmq/bindings/jni/gradle/wrapper/gradle-wrapper.jar +0 -0
  75. data/vendor/github.com/zeromq/czmq/bindings/jni/gradle/wrapper/gradle-wrapper.properties +6 -0
  76. data/vendor/github.com/zeromq/czmq/bindings/jni/gradlew +164 -0
  77. data/vendor/github.com/zeromq/czmq/bindings/jni/gradlew.bat +90 -0
  78. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/.gitignore +8 -0
  79. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/configure.bat +93 -0
  80. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/platform.h +1 -0
  81. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Common.props +21 -0
  82. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DLL.props +16 -0
  83. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Debug.props +29 -0
  84. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugDEXE.props +21 -0
  85. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugDLL.props +20 -0
  86. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugLEXE.props +20 -0
  87. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugLIB.props +21 -0
  88. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugLTCG.props +20 -0
  89. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/DebugSEXE.props +21 -0
  90. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/EXE.props +17 -0
  91. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/LIB.props +16 -0
  92. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/LTCG.props +13 -0
  93. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Link.props +21 -0
  94. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Messages.props +15 -0
  95. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Output.props +30 -0
  96. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Release.props +41 -0
  97. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseDEXE.props +20 -0
  98. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseDLL.props +19 -0
  99. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseLEXE.props +20 -0
  100. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseLIB.props +19 -0
  101. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseLTCG.props +19 -0
  102. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/ReleaseSEXE.props +20 -0
  103. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/Win32.props +20 -0
  104. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/properties/x64.props +23 -0
  105. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/resource.h +14 -0
  106. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/resource.rc +94 -0
  107. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/build.bat +48 -0
  108. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/call_javah.bat +84 -0
  109. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/czmq.sln +25 -0
  110. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/libczmqjni/libczmqjni.props +69 -0
  111. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/libczmqjni/libczmqjni.vcxproj +165 -0
  112. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2010/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  113. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/build.bat +48 -0
  114. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/call_javah.bat +84 -0
  115. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/czmq.sln +25 -0
  116. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/libczmqjni/libczmqjni.props +69 -0
  117. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/libczmqjni/libczmqjni.vcxproj +165 -0
  118. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2012/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  119. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/build.bat +48 -0
  120. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/call_javah.bat +84 -0
  121. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/czmq.sln +25 -0
  122. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/libczmqjni/libczmqjni.props +69 -0
  123. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/libczmqjni/libczmqjni.vcxproj +165 -0
  124. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2013/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  125. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/build.bat +48 -0
  126. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/call_javah.bat +84 -0
  127. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/czmq.sln +25 -0
  128. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/libczmqjni/libczmqjni.props +69 -0
  129. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/libczmqjni/libczmqjni.vcxproj +165 -0
  130. data/vendor/github.com/zeromq/czmq/bindings/jni/msvc/vs2015/libczmqjni/libczmqjni.vcxproj.filters +210 -0
  131. data/vendor/github.com/zeromq/czmq/bindings/jni/settings.gradle +1 -0
  132. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zarmour.c +132 -0
  133. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zcert.c +188 -0
  134. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zcertstore.c +69 -0
  135. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zchunk.c +191 -0
  136. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zclock.c +54 -0
  137. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zconfig.c +252 -0
  138. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zdigest.c +66 -0
  139. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zdir.c +116 -0
  140. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_ZdirPatch.c +88 -0
  141. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zfile.c +186 -0
  142. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zframe.c +199 -0
  143. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zhash.c +174 -0
  144. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zhashx.c +175 -0
  145. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Ziflist.c +112 -0
  146. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zlist.c +135 -0
  147. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zlistx.c +189 -0
  148. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zloop.c +95 -0
  149. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zmsg.c +261 -0
  150. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zpoller.c +74 -0
  151. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zproc.c +278 -0
  152. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zsock.c +1310 -0
  153. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zstr.c +108 -0
  154. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zsys.c +445 -0
  155. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Ztimerset.c +68 -0
  156. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Ztrie.c +86 -0
  157. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/c/org_zeromq_czmq_Zuuid.c +125 -0
  158. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zarmour.java +148 -0
  159. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zcert.java +178 -0
  160. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zcertstore.java +94 -0
  161. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zchunk.java +204 -0
  162. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zclock.java +67 -0
  163. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zconfig.java +253 -0
  164. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zdigest.java +78 -0
  165. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zdir.java +159 -0
  166. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/ZdirPatch.java +96 -0
  167. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zfile.java +217 -0
  168. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zframe.java +212 -0
  169. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zhash.java +223 -0
  170. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zhashx.java +248 -0
  171. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Ziflist.java +124 -0
  172. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zlist.java +171 -0
  173. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zlistx.java +247 -0
  174. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zloop.java +134 -0
  175. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zmsg.java +308 -0
  176. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zpoller.java +105 -0
  177. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zproc.java +331 -0
  178. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zsock.java +1556 -0
  179. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zstr.java +117 -0
  180. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zsys.java +534 -0
  181. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Ztimerset.java +87 -0
  182. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Ztrie.java +102 -0
  183. data/vendor/github.com/zeromq/czmq/bindings/jni/src/main/java/org/zeromq/czmq/Zuuid.java +127 -0
  184. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZarmourTest.java +25 -0
  185. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZcertTest.java +25 -0
  186. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZcertstoreTest.java +25 -0
  187. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZchunkTest.java +25 -0
  188. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZclockTest.java +25 -0
  189. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZconfigTest.java +25 -0
  190. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZdigestTest.java +25 -0
  191. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZdirPatchTest.java +25 -0
  192. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZdirTest.java +25 -0
  193. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZfileTest.java +25 -0
  194. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZframeTest.java +25 -0
  195. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZhashTest.java +25 -0
  196. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZhashxTest.java +25 -0
  197. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZiflistTest.java +25 -0
  198. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZlistTest.java +25 -0
  199. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZlistxTest.java +25 -0
  200. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZloopTest.java +25 -0
  201. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZmsgTest.java +25 -0
  202. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZpollerTest.java +25 -0
  203. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZprocTest.java +25 -0
  204. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZsockTest.java +25 -0
  205. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZstrTest.java +25 -0
  206. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZsysTest.java +25 -0
  207. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZtimersetTest.java +25 -0
  208. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZtrieTest.java +25 -0
  209. data/vendor/github.com/zeromq/czmq/bindings/jni/src/test/java/org/zeromq/czmq/ZuuidTest.java +25 -0
  210. data/vendor/github.com/zeromq/czmq/bindings/lua_ffi/czmq_ffi.lua +4079 -0
  211. data/vendor/github.com/zeromq/czmq/bindings/nodejs/.gitignore +10 -0
  212. data/vendor/github.com/zeromq/czmq/bindings/nodejs/.prebuildrc +2 -0
  213. data/vendor/github.com/zeromq/czmq/bindings/nodejs/README.md +4373 -0
  214. data/vendor/github.com/zeromq/czmq/bindings/nodejs/binding.cc +8324 -0
  215. data/vendor/github.com/zeromq/czmq/bindings/nodejs/binding.gyp +49 -0
  216. data/vendor/github.com/zeromq/czmq/bindings/nodejs/binding.h +952 -0
  217. data/vendor/github.com/zeromq/czmq/bindings/nodejs/build.sh +79 -0
  218. data/vendor/github.com/zeromq/czmq/bindings/nodejs/index.js +39 -0
  219. data/vendor/github.com/zeromq/czmq/bindings/nodejs/package.json +26 -0
  220. data/vendor/github.com/zeromq/czmq/bindings/nodejs/test_binding.js +32 -0
  221. data/vendor/github.com/zeromq/czmq/bindings/python/ci_build.sh +59 -0
  222. data/vendor/github.com/zeromq/czmq/bindings/python/czmq/__init__.py +3 -0
  223. data/vendor/github.com/zeromq/czmq/bindings/python/czmq/_czmq_ctypes.py +8344 -0
  224. data/vendor/github.com/zeromq/czmq/bindings/python/test.py +1078 -0
  225. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/README.md +28 -0
  226. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zactor.py +78 -0
  227. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zargs.py +133 -0
  228. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zarmour.py +124 -0
  229. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zcert.py +132 -0
  230. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zcertstore.py +84 -0
  231. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zchunk.py +192 -0
  232. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zclock.py +59 -0
  233. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zconfig.py +211 -0
  234. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zdigest.py +64 -0
  235. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zdir.py +144 -0
  236. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/ZdirPatch.py +79 -0
  237. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zfile.py +185 -0
  238. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zframe.py +160 -0
  239. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zhash.py +197 -0
  240. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zhashx.py +271 -0
  241. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Ziflist.py +103 -0
  242. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zlist.py +176 -0
  243. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zlistx.py +235 -0
  244. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zloop.py +171 -0
  245. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zmsg.py +250 -0
  246. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zpoller.py +89 -0
  247. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zproc.py +287 -0
  248. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zsock.py +1283 -0
  249. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zstr.py +123 -0
  250. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zsys.py +532 -0
  251. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Ztimerset.py +78 -0
  252. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Ztrie.py +93 -0
  253. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/Zuuid.py +100 -0
  254. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/__init__.py +33 -0
  255. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/_cdefs.inc +4081 -0
  256. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/build.py +345 -0
  257. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/cdefs.py +4086 -0
  258. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/dlopen.py +33 -0
  259. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/czmq_cffi/utils.py +50 -0
  260. data/vendor/github.com/zeromq/czmq/bindings/python_cffi/setup.py +23 -0
  261. data/vendor/github.com/zeromq/czmq/bindings/qml/.gitignore +1 -0
  262. data/vendor/github.com/zeromq/czmq/bindings/qml/README.md +157 -0
  263. data/vendor/github.com/zeromq/czmq/bindings/qml/Rakefile +34 -0
  264. data/vendor/github.com/zeromq/czmq/bindings/qml/qml_czmq_bindings.pro +136 -0
  265. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZactor.cpp +88 -0
  266. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZactor.h +86 -0
  267. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZargs.cpp +121 -0
  268. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZargs.h +105 -0
  269. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZarmour.cpp +135 -0
  270. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZarmour.h +108 -0
  271. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcert.cpp +166 -0
  272. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcert.h +122 -0
  273. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcertstore.cpp +95 -0
  274. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZcertstore.h +93 -0
  275. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZchunk.cpp +214 -0
  276. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZchunk.h +149 -0
  277. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZclock.cpp +67 -0
  278. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZclock.h +77 -0
  279. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZconfig.cpp +255 -0
  280. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZconfig.h +165 -0
  281. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdigest.cpp +70 -0
  282. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdigest.h +78 -0
  283. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdir.cpp +158 -0
  284. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdir.h +134 -0
  285. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdirPatch.cpp +89 -0
  286. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZdirPatch.h +84 -0
  287. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZfile.cpp +204 -0
  288. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZfile.h +152 -0
  289. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZframe.cpp +200 -0
  290. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZframe.h +143 -0
  291. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhash.cpp +219 -0
  292. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhash.h +174 -0
  293. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhashx.cpp +308 -0
  294. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZhashx.h +225 -0
  295. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZiflist.cpp +111 -0
  296. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZiflist.h +96 -0
  297. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlist.cpp +184 -0
  298. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlist.h +148 -0
  299. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlistx.cpp +244 -0
  300. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZlistx.h +184 -0
  301. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZloop.cpp +177 -0
  302. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZloop.h +149 -0
  303. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZmsg.cpp +313 -0
  304. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZmsg.h +209 -0
  305. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZpoller.cpp +95 -0
  306. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZpoller.h +97 -0
  307. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZproc.cpp +296 -0
  308. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZproc.h +211 -0
  309. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsock.cpp +1471 -0
  310. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsock.h +882 -0
  311. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZstr.cpp +137 -0
  312. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZstr.h +120 -0
  313. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsys.cpp +541 -0
  314. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZsys.h +373 -0
  315. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtimerset.cpp +84 -0
  316. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtimerset.h +86 -0
  317. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtrie.cpp +101 -0
  318. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZtrie.h +95 -0
  319. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZuuid.cpp +116 -0
  320. data/vendor/github.com/zeromq/czmq/bindings/qml/src/QmlZuuid.h +99 -0
  321. data/vendor/github.com/zeromq/czmq/bindings/qml/src/qml_czmq_plugin.h +174 -0
  322. data/vendor/github.com/zeromq/czmq/bindings/qml/src/qmldir +2 -0
  323. data/vendor/github.com/zeromq/czmq/bindings/qml/test/tst_QmlCZMQ.qml +16 -0
  324. data/vendor/github.com/zeromq/czmq/bindings/qt/README.md +87 -0
  325. data/vendor/github.com/zeromq/czmq/bindings/qt/buildlib/buildlib.pro +36 -0
  326. data/vendor/github.com/zeromq/czmq/bindings/qt/common.pri +20 -0
  327. data/vendor/github.com/zeromq/czmq/bindings/qt/config.pri +1 -0
  328. data/vendor/github.com/zeromq/czmq/bindings/qt/qczmq.pro +13 -0
  329. data/vendor/github.com/zeromq/czmq/bindings/qt/selftest/main.cpp +57 -0
  330. data/vendor/github.com/zeromq/czmq/bindings/qt/selftest/selftest.pro +19 -0
  331. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qczmq.h +96 -0
  332. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qczmq.pri +81 -0
  333. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzactor.cpp +98 -0
  334. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzactor.h +61 -0
  335. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzargs.cpp +130 -0
  336. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzargs.h +72 -0
  337. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzarmour.cpp +162 -0
  338. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzarmour.h +83 -0
  339. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcert.cpp +191 -0
  340. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcert.h +97 -0
  341. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcertstore.cpp +105 -0
  342. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzcertstore.h +68 -0
  343. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzchunk.cpp +250 -0
  344. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzchunk.h +124 -0
  345. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzclock.cpp +78 -0
  346. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzclock.h +52 -0
  347. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzconfig.cpp +292 -0
  348. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzconfig.h +140 -0
  349. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdigest.cpp +80 -0
  350. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdigest.h +53 -0
  351. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdir.cpp +176 -0
  352. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdir.h +109 -0
  353. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdirpatch.cpp +101 -0
  354. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzdirpatch.h +59 -0
  355. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzfile.cpp +243 -0
  356. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzfile.h +127 -0
  357. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzframe.cpp +231 -0
  358. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzframe.h +118 -0
  359. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhash.cpp +250 -0
  360. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhash.h +149 -0
  361. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhashx.cpp +350 -0
  362. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzhashx.h +200 -0
  363. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qziflist.cpp +133 -0
  364. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qziflist.h +71 -0
  365. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlist.cpp +220 -0
  366. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlist.h +123 -0
  367. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlistx.cpp +296 -0
  368. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzlistx.h +159 -0
  369. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzloop.cpp +211 -0
  370. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzloop.h +124 -0
  371. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzmsg.cpp +354 -0
  372. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzmsg.h +184 -0
  373. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzpoller.cpp +100 -0
  374. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzpoller.h +67 -0
  375. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzproc.cpp +365 -0
  376. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzproc.h +186 -0
  377. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsock.cpp +1719 -0
  378. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsock.h +815 -0
  379. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzstr.cpp +128 -0
  380. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzstr.h +78 -0
  381. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsys.cpp +600 -0
  382. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzsys.h +321 -0
  383. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztimerset.cpp +98 -0
  384. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztimerset.h +61 -0
  385. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztrie.cpp +117 -0
  386. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qztrie.h +70 -0
  387. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzuuid.cpp +135 -0
  388. data/vendor/github.com/zeromq/czmq/bindings/qt/src/qzuuid.h +74 -0
  389. data/vendor/github.com/zeromq/czmq/bindings/ruby/Rakefile +8 -0
  390. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi.rb +875 -0
  391. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/version.rb +15 -0
  392. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zactor.rb +219 -0
  393. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zargs.rb +259 -0
  394. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zarmour.rb +286 -0
  395. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zcert.rb +304 -0
  396. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zcertstore.rb +224 -0
  397. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zchunk.rb +388 -0
  398. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zclock.rb +140 -0
  399. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zconfig.rb +462 -0
  400. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zdigest.rb +156 -0
  401. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zdir.rb +283 -0
  402. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zdir_patch.rb +194 -0
  403. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zfile.rb +361 -0
  404. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zframe.rb +360 -0
  405. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zhash.rb +386 -0
  406. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zhashx.rb +617 -0
  407. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/ziflist.rb +219 -0
  408. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zlist.rb +365 -0
  409. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zlistx.rb +478 -0
  410. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zloop.rb +396 -0
  411. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zmsg.rb +515 -0
  412. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zpoller.rb +194 -0
  413. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zproc.rb +497 -0
  414. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zsock.rb +4673 -0
  415. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zstr.rb +242 -0
  416. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zsys.rb +836 -0
  417. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/ztimerset.rb +203 -0
  418. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/ztrie.rb +221 -0
  419. data/vendor/github.com/zeromq/czmq/bindings/ruby/lib/czmq/ffi/zuuid.rb +227 -0
  420. data/vendor/github.com/zeromq/czmq/bindings/ruby/spec/ffi_spec.rb +15 -0
  421. data/vendor/github.com/zeromq/czmq/bindings/ruby/spec/spec_helper.rb +8 -0
  422. data/vendor/github.com/zeromq/czmq/builds/android/android_build_helper.sh +298 -0
  423. data/vendor/github.com/zeromq/czmq/builds/android/build.sh +94 -0
  424. data/vendor/github.com/zeromq/czmq/builds/android/ci_build.sh +41 -0
  425. data/vendor/github.com/zeromq/czmq/builds/check_zproject/ci_build.sh +52 -0
  426. data/vendor/github.com/zeromq/czmq/builds/check_zproto/ci_build.sh +23 -0
  427. data/vendor/github.com/zeromq/czmq/builds/cmake/ci_build.sh +93 -0
  428. data/vendor/github.com/zeromq/czmq/builds/cygwin/Makefile.cygwin +32 -0
  429. data/vendor/github.com/zeromq/czmq/builds/docs/ci_build.sh +24 -0
  430. data/vendor/github.com/zeromq/czmq/builds/gyp/.gitignore +5 -0
  431. data/vendor/github.com/zeromq/czmq/builds/gyp/README.md +33 -0
  432. data/vendor/github.com/zeromq/czmq/builds/gyp/platform.h +46 -0
  433. data/vendor/github.com/zeromq/czmq/builds/gyp/project.gyp +195 -0
  434. data/vendor/github.com/zeromq/czmq/builds/mingw32/Makefile.mingw32 +33 -0
  435. data/vendor/github.com/zeromq/czmq/builds/mingw32/platform.h +0 -0
  436. data/vendor/github.com/zeromq/czmq/builds/msvc/.gitignore +8 -0
  437. data/vendor/github.com/zeromq/czmq/builds/msvc/configure.bat +93 -0
  438. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.bat +14 -0
  439. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.nuspec +92 -0
  440. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.targets +128 -0
  441. data/vendor/github.com/zeromq/czmq/builds/msvc/nuget/package.xml +29 -0
  442. data/vendor/github.com/zeromq/czmq/builds/msvc/platform.h +1 -0
  443. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Common.props +21 -0
  444. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DLL.props +16 -0
  445. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Debug.props +29 -0
  446. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugDEXE.props +21 -0
  447. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugDLL.props +20 -0
  448. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugLEXE.props +20 -0
  449. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugLIB.props +21 -0
  450. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugLTCG.props +20 -0
  451. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/DebugSEXE.props +21 -0
  452. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/EXE.props +17 -0
  453. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/LIB.props +16 -0
  454. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/LTCG.props +13 -0
  455. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Link.props +21 -0
  456. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Messages.props +15 -0
  457. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Output.props +30 -0
  458. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Release.props +41 -0
  459. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseDEXE.props +20 -0
  460. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseDLL.props +19 -0
  461. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseLEXE.props +20 -0
  462. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseLIB.props +19 -0
  463. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseLTCG.props +19 -0
  464. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/ReleaseSEXE.props +20 -0
  465. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/Win32.props +20 -0
  466. data/vendor/github.com/zeromq/czmq/builds/msvc/properties/x64.props +23 -0
  467. data/vendor/github.com/zeromq/czmq/builds/msvc/resource.h +14 -0
  468. data/vendor/github.com/zeromq/czmq/builds/msvc/resource.rc +94 -0
  469. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2008/czmq/czmq.sln +65 -0
  470. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2008/czmq/czmq.vcproj +1411 -0
  471. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/.gitignore +1 -0
  472. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/build.bat +129 -0
  473. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq.import.props +59 -0
  474. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq.sln +81 -0
  475. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq_selftest/czmq_selftest.props +75 -0
  476. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/czmq_selftest/czmq_selftest.vcxproj +146 -0
  477. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.import.xml +29 -0
  478. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.props +81 -0
  479. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.vcxproj +215 -0
  480. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/libczmq/libczmq.vcxproj.filters +203 -0
  481. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/test_randof/test_randof.props +75 -0
  482. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/test_randof/test_randof.vcxproj +146 -0
  483. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zmakecert/zmakecert.props +75 -0
  484. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zmakecert/zmakecert.vcxproj +146 -0
  485. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zsp/zsp.props +75 -0
  486. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2010/zsp/zsp.vcxproj +146 -0
  487. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/.gitignore +1 -0
  488. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/build.bat +129 -0
  489. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq.import.props +59 -0
  490. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq.sln +81 -0
  491. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq_selftest/czmq_selftest.props +75 -0
  492. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/czmq_selftest/czmq_selftest.vcxproj +146 -0
  493. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.import.xml +29 -0
  494. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.props +81 -0
  495. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.vcxproj +215 -0
  496. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/libczmq/libczmq.vcxproj.filters +203 -0
  497. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/test_randof/test_randof.props +75 -0
  498. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/test_randof/test_randof.vcxproj +146 -0
  499. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zmakecert/zmakecert.props +75 -0
  500. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zmakecert/zmakecert.vcxproj +146 -0
  501. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zsp/zsp.props +75 -0
  502. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2012/zsp/zsp.vcxproj +146 -0
  503. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/build.bat +129 -0
  504. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq.import.props +59 -0
  505. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq.sln +81 -0
  506. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq_selftest/czmq_selftest.props +75 -0
  507. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/czmq_selftest/czmq_selftest.vcxproj +146 -0
  508. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.import.xml +29 -0
  509. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.props +81 -0
  510. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.vcxproj +215 -0
  511. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/libczmq/libczmq.vcxproj.filters +203 -0
  512. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/test_randof/test_randof.props +75 -0
  513. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/test_randof/test_randof.vcxproj +146 -0
  514. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zmakecert/zmakecert.props +75 -0
  515. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zmakecert/zmakecert.vcxproj +146 -0
  516. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zsp/zsp.props +75 -0
  517. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2013/zsp/zsp.vcxproj +146 -0
  518. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/build.bat +129 -0
  519. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq.import.props +59 -0
  520. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq.sln +81 -0
  521. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq_selftest/czmq_selftest.props +75 -0
  522. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/czmq_selftest/czmq_selftest.vcxproj +146 -0
  523. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.import.xml +29 -0
  524. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.props +81 -0
  525. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.vcxproj +215 -0
  526. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/libczmq/libczmq.vcxproj.filters +203 -0
  527. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/test_randof/test_randof.props +75 -0
  528. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/test_randof/test_randof.vcxproj +146 -0
  529. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zmakecert/zmakecert.props +75 -0
  530. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zmakecert/zmakecert.vcxproj +146 -0
  531. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zsp/zsp.props +75 -0
  532. data/vendor/github.com/zeromq/czmq/builds/msvc/vs2015/zsp/zsp.vcxproj +146 -0
  533. data/vendor/github.com/zeromq/czmq/builds/nuget/czmq.autobuild +49 -0
  534. data/vendor/github.com/zeromq/czmq/builds/nuget/readme.nuget +18 -0
  535. data/vendor/github.com/zeromq/czmq/builds/rpi/.gitignore +8 -0
  536. data/vendor/github.com/zeromq/czmq/builds/rpi/README.md +62 -0
  537. data/vendor/github.com/zeromq/czmq/builds/rpi/build.sh +142 -0
  538. data/vendor/github.com/zeromq/czmq/builds/rpi/build_image.sh +32 -0
  539. data/vendor/github.com/zeromq/czmq/builds/rpi/prepare_img.sh +111 -0
  540. data/vendor/github.com/zeromq/czmq/builds/stable_zmq/ci_build.sh +62 -0
  541. data/vendor/github.com/zeromq/czmq/builds/valgrind/ci_build.sh +43 -0
  542. data/vendor/github.com/zeromq/czmq/ci_build.sh +317 -0
  543. data/vendor/github.com/zeromq/czmq/ci_deploy.sh +29 -0
  544. data/vendor/github.com/zeromq/czmq/ci_deploy_obs.sh +23 -0
  545. data/vendor/github.com/zeromq/czmq/configure.ac +856 -0
  546. data/vendor/github.com/zeromq/czmq/doc/.gitignore +91 -0
  547. data/vendor/github.com/zeromq/czmq/doc/Makefile.am +222 -0
  548. data/vendor/github.com/zeromq/czmq/doc/asciidoc.conf +64 -0
  549. data/vendor/github.com/zeromq/czmq/doc/czmq.adoc +51 -0
  550. data/vendor/github.com/zeromq/czmq/doc/czmq.txt +380 -0
  551. data/vendor/github.com/zeromq/czmq/doc/mkman +217 -0
  552. data/vendor/github.com/zeromq/czmq/doc/mkmans +15 -0
  553. data/vendor/github.com/zeromq/czmq/doc/wdput +43 -0
  554. data/vendor/github.com/zeromq/czmq/examples/security/LICENSE +18 -0
  555. data/vendor/github.com/zeromq/czmq/examples/security/README.txt +9 -0
  556. data/vendor/github.com/zeromq/czmq/examples/security/grasslands.c +32 -0
  557. data/vendor/github.com/zeromq/czmq/examples/security/hello.c +13 -0
  558. data/vendor/github.com/zeromq/czmq/examples/security/ironhouse.c +64 -0
  559. data/vendor/github.com/zeromq/czmq/examples/security/ironhouse2.c +123 -0
  560. data/vendor/github.com/zeromq/czmq/examples/security/ironhouse2_v2.c +107 -0
  561. data/vendor/github.com/zeromq/czmq/examples/security/passwords +2 -0
  562. data/vendor/github.com/zeromq/czmq/examples/security/stonehouse.c +59 -0
  563. data/vendor/github.com/zeromq/czmq/examples/security/strawhouse.c +49 -0
  564. data/vendor/github.com/zeromq/czmq/examples/security/woodhouse.c +47 -0
  565. data/vendor/github.com/zeromq/czmq/images/README_1.png +0 -0
  566. data/vendor/github.com/zeromq/czmq/include/.gitignore +1 -0
  567. data/vendor/github.com/zeromq/czmq/include/czmq.h +39 -0
  568. data/vendor/github.com/zeromq/czmq/include/czmq_library.h +190 -0
  569. data/vendor/github.com/zeromq/czmq/include/czmq_prelude.h +735 -0
  570. data/vendor/github.com/zeromq/czmq/include/test_zgossip.h +44 -0
  571. data/vendor/github.com/zeromq/czmq/include/zactor.h +94 -0
  572. data/vendor/github.com/zeromq/czmq/include/zargs.h +134 -0
  573. data/vendor/github.com/zeromq/czmq/include/zarmour.h +114 -0
  574. data/vendor/github.com/zeromq/czmq/include/zauth.h +100 -0
  575. data/vendor/github.com/zeromq/czmq/include/zbeacon.h +86 -0
  576. data/vendor/github.com/zeromq/czmq/include/zcert.h +133 -0
  577. data/vendor/github.com/zeromq/czmq/include/zcertstore.h +101 -0
  578. data/vendor/github.com/zeromq/czmq/include/zchunk.h +163 -0
  579. data/vendor/github.com/zeromq/czmq/include/zclock.h +73 -0
  580. data/vendor/github.com/zeromq/czmq/include/zconfig.h +199 -0
  581. data/vendor/github.com/zeromq/czmq/include/zdigest.h +65 -0
  582. data/vendor/github.com/zeromq/czmq/include/zdir.h +149 -0
  583. data/vendor/github.com/zeromq/czmq/include/zdir_patch.h +82 -0
  584. data/vendor/github.com/zeromq/czmq/include/zfile.h +185 -0
  585. data/vendor/github.com/zeromq/czmq/include/zframe.h +177 -0
  586. data/vendor/github.com/zeromq/czmq/include/zgossip.h +95 -0
  587. data/vendor/github.com/zeromq/czmq/include/zhash.h +183 -0
  588. data/vendor/github.com/zeromq/czmq/include/zhashx.h +279 -0
  589. data/vendor/github.com/zeromq/czmq/include/ziflist.h +98 -0
  590. data/vendor/github.com/zeromq/czmq/include/zlist.h +158 -0
  591. data/vendor/github.com/zeromq/czmq/include/zlistx.h +205 -0
  592. data/vendor/github.com/zeromq/czmq/include/zloop.h +163 -0
  593. data/vendor/github.com/zeromq/czmq/include/zmonitor.h +73 -0
  594. data/vendor/github.com/zeromq/czmq/include/zmsg.h +280 -0
  595. data/vendor/github.com/zeromq/czmq/include/zpoller.h +87 -0
  596. data/vendor/github.com/zeromq/czmq/include/zproc.h +270 -0
  597. data/vendor/github.com/zeromq/czmq/include/zproxy.h +111 -0
  598. data/vendor/github.com/zeromq/czmq/include/zrex.h +82 -0
  599. data/vendor/github.com/zeromq/czmq/include/zsock.h +1209 -0
  600. data/vendor/github.com/zeromq/czmq/include/zstr.h +135 -0
  601. data/vendor/github.com/zeromq/czmq/include/zsys.h +439 -0
  602. data/vendor/github.com/zeromq/czmq/include/ztimerset.h +90 -0
  603. data/vendor/github.com/zeromq/czmq/include/ztrie.h +106 -0
  604. data/vendor/github.com/zeromq/czmq/include/zuuid.h +96 -0
  605. data/vendor/github.com/zeromq/czmq/issues/README.md +6 -0
  606. data/vendor/github.com/zeromq/czmq/issues/c +520 -0
  607. data/vendor/github.com/zeromq/czmq/issues/issue-407.c +146 -0
  608. data/vendor/github.com/zeromq/czmq/license.xml +9 -0
  609. data/vendor/github.com/zeromq/czmq/mkdoc +7 -0
  610. data/vendor/github.com/zeromq/czmq/model/chkopts.pl +47 -0
  611. data/vendor/github.com/zeromq/czmq/model/rename_class +42 -0
  612. data/vendor/github.com/zeromq/czmq/packaging/debian/changelog +5 -0
  613. data/vendor/github.com/zeromq/czmq/packaging/debian/compat +1 -0
  614. data/vendor/github.com/zeromq/czmq/packaging/debian/control +86 -0
  615. data/vendor/github.com/zeromq/czmq/packaging/debian/copyright +13 -0
  616. data/vendor/github.com/zeromq/czmq/packaging/debian/czmq.dsc.obs +20 -0
  617. data/vendor/github.com/zeromq/czmq/packaging/debian/czmq.install +2 -0
  618. data/vendor/github.com/zeromq/czmq/packaging/debian/czmq.manpages +1 -0
  619. data/vendor/github.com/zeromq/czmq/packaging/debian/format +1 -0
  620. data/vendor/github.com/zeromq/czmq/packaging/debian/libczmq-dev.install +4 -0
  621. data/vendor/github.com/zeromq/czmq/packaging/debian/libczmq-dev.manpages +2 -0
  622. data/vendor/github.com/zeromq/czmq/packaging/debian/libczmq4.install +1 -0
  623. data/vendor/github.com/zeromq/czmq/packaging/debian/rules +96 -0
  624. data/vendor/github.com/zeromq/czmq/packaging/dist/gitlog2changelog.py +125 -0
  625. data/vendor/github.com/zeromq/czmq/packaging/obs/_service +91 -0
  626. data/vendor/github.com/zeromq/czmq/packaging/redhat/czmq.spec +202 -0
  627. data/vendor/github.com/zeromq/czmq/project.gyp +121 -0
  628. data/vendor/github.com/zeromq/czmq/project.xml +99 -0
  629. data/vendor/github.com/zeromq/czmq/setup.py +9 -0
  630. data/vendor/github.com/zeromq/czmq/src/.gitignore +20 -0
  631. data/vendor/github.com/zeromq/czmq/src/.valgrind.supp +33 -0
  632. data/vendor/github.com/zeromq/czmq/src/CMakeLists-local.txt +22 -0
  633. data/vendor/github.com/zeromq/czmq/src/Makemodule-local.am +15 -0
  634. data/vendor/github.com/zeromq/czmq/src/Makemodule.am +353 -0
  635. data/vendor/github.com/zeromq/czmq/src/czmq_classes.h +388 -0
  636. data/vendor/github.com/zeromq/czmq/src/czmq_private_selftest.c +40 -0
  637. data/vendor/github.com/zeromq/czmq/src/czmq_selftest.c +220 -0
  638. data/vendor/github.com/zeromq/czmq/src/foreign/sha1/sha1.h +76 -0
  639. data/vendor/github.com/zeromq/czmq/src/foreign/sha1/sha1.inc_c +335 -0
  640. data/vendor/github.com/zeromq/czmq/src/foreign/slre/readme.txt +83 -0
  641. data/vendor/github.com/zeromq/czmq/src/foreign/slre/slre.h +92 -0
  642. data/vendor/github.com/zeromq/czmq/src/foreign/slre/slre.inc_c +660 -0
  643. data/vendor/github.com/zeromq/czmq/src/libczmq.pc.in +24 -0
  644. data/vendor/github.com/zeromq/czmq/src/python_cffi.inc +17 -0
  645. data/vendor/github.com/zeromq/czmq/src/selftest-ro/.gitkeep +0 -0
  646. data/vendor/github.com/zeromq/czmq/src/selftest.cfg +5 -0
  647. data/vendor/github.com/zeromq/czmq/src/sockopts.gsl +36 -0
  648. data/vendor/github.com/zeromq/czmq/src/sockopts.xml +193 -0
  649. data/vendor/github.com/zeromq/czmq/src/test_randof.c +182 -0
  650. data/vendor/github.com/zeromq/czmq/src/test_zgossip.c +188 -0
  651. data/vendor/github.com/zeromq/czmq/src/valgrind.supp +14 -0
  652. data/vendor/github.com/zeromq/czmq/src/zactor.c +338 -0
  653. data/vendor/github.com/zeromq/czmq/src/zargs.c +289 -0
  654. data/vendor/github.com/zeromq/czmq/src/zarmour.c +941 -0
  655. data/vendor/github.com/zeromq/czmq/src/zauth.c +821 -0
  656. data/vendor/github.com/zeromq/czmq/src/zbeacon.c +651 -0
  657. data/vendor/github.com/zeromq/czmq/src/zcert.c +557 -0
  658. data/vendor/github.com/zeromq/czmq/src/zcertstore.c +407 -0
  659. data/vendor/github.com/zeromq/czmq/src/zchunk.c +609 -0
  660. data/vendor/github.com/zeromq/czmq/src/zclock.c +237 -0
  661. data/vendor/github.com/zeromq/czmq/src/zconfig.c +1369 -0
  662. data/vendor/github.com/zeromq/czmq/src/zdigest.c +163 -0
  663. data/vendor/github.com/zeromq/czmq/src/zdir.c +1138 -0
  664. data/vendor/github.com/zeromq/czmq/src/zdir_patch.c +227 -0
  665. data/vendor/github.com/zeromq/czmq/src/zfile.c +920 -0
  666. data/vendor/github.com/zeromq/czmq/src/zframe.c +756 -0
  667. data/vendor/github.com/zeromq/czmq/src/zgossip.c +689 -0
  668. data/vendor/github.com/zeromq/czmq/src/zgossip.xml +57 -0
  669. data/vendor/github.com/zeromq/czmq/src/zgossip_engine.inc +1008 -0
  670. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.bnf +43 -0
  671. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.c +688 -0
  672. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.h +127 -0
  673. data/vendor/github.com/zeromq/czmq/src/zgossip_msg.xml +46 -0
  674. data/vendor/github.com/zeromq/czmq/src/zhash.c +956 -0
  675. data/vendor/github.com/zeromq/czmq/src/zhash_primes.inc +329 -0
  676. data/vendor/github.com/zeromq/czmq/src/zhashx.c +1369 -0
  677. data/vendor/github.com/zeromq/czmq/src/ziflist.c +517 -0
  678. data/vendor/github.com/zeromq/czmq/src/zlist.c +634 -0
  679. data/vendor/github.com/zeromq/czmq/src/zlistx.c +753 -0
  680. data/vendor/github.com/zeromq/czmq/src/zloop.c +1000 -0
  681. data/vendor/github.com/zeromq/czmq/src/zmakecert.c +64 -0
  682. data/vendor/github.com/zeromq/czmq/src/zmonitor.c +447 -0
  683. data/vendor/github.com/zeromq/czmq/src/zmsg.c +1258 -0
  684. data/vendor/github.com/zeromq/czmq/src/zpoller.c +397 -0
  685. data/vendor/github.com/zeromq/czmq/src/zproc.c +1160 -0
  686. data/vendor/github.com/zeromq/czmq/src/zproxy.c +791 -0
  687. data/vendor/github.com/zeromq/czmq/src/zrex.c +310 -0
  688. data/vendor/github.com/zeromq/czmq/src/zsock.c +2207 -0
  689. data/vendor/github.com/zeromq/czmq/src/zsock_option.gsl +404 -0
  690. data/vendor/github.com/zeromq/czmq/src/zsock_option.inc +3946 -0
  691. data/vendor/github.com/zeromq/czmq/src/zsp.c +118 -0
  692. data/vendor/github.com/zeromq/czmq/src/zstr.c +548 -0
  693. data/vendor/github.com/zeromq/czmq/src/zsys.c +2225 -0
  694. data/vendor/github.com/zeromq/czmq/src/ztimerset.c +227 -0
  695. data/vendor/github.com/zeromq/czmq/src/ztrie.c +809 -0
  696. data/vendor/github.com/zeromq/czmq/src/zuuid.c +344 -0
  697. metadata +780 -0
@@ -0,0 +1,227 @@
1
+ /* =========================================================================
2
+ ztimerset - timer set
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
+ ztimerset - timer set
17
+ @discuss
18
+ @end
19
+ */
20
+
21
+ #include "czmq_classes.h"
22
+
23
+ // Structure of our class
24
+
25
+ struct _ztimerset_t {
26
+ void* zmq_timers;
27
+ };
28
+
29
+
30
+ // --------------------------------------------------------------------------
31
+ // Create a new ztimerset
32
+
33
+ ztimerset_t *
34
+ ztimerset_new (void)
35
+ {
36
+ #ifdef ZMQ_HAVE_TIMERS
37
+ ztimerset_t *self = (ztimerset_t *) zmalloc (sizeof (ztimerset_t));
38
+ assert (self);
39
+
40
+ self->zmq_timers = zmq_timers_new ();
41
+ assert (self->zmq_timers);
42
+
43
+ return self;
44
+ #else
45
+ return NULL;
46
+ #endif
47
+ }
48
+
49
+
50
+ // --------------------------------------------------------------------------
51
+ // Destroy the ztimerset
52
+
53
+ void
54
+ ztimerset_destroy (ztimerset_t **self_p)
55
+ {
56
+ #ifdef ZMQ_HAVE_TIMERS
57
+ assert (self_p);
58
+ if (*self_p) {
59
+ ztimerset_t *self = *self_p;
60
+ zmq_timers_destroy (&self->zmq_timers);
61
+ freen (self);
62
+ *self_p = NULL;
63
+ }
64
+ #endif
65
+ }
66
+
67
+
68
+ // --------------------------------------------------------------------------
69
+ // Add a timer to the set. Returns timer id if OK, -1 on failure.
70
+ int
71
+ ztimerset_add (ztimerset_t *self, size_t interval, ztimerset_fn handler, void *arg)
72
+ {
73
+ #ifdef ZMQ_HAVE_TIMERS
74
+ return zmq_timers_add (self->zmq_timers, interval, handler, arg);
75
+ #else
76
+ return -1;
77
+ #endif
78
+ }
79
+
80
+
81
+ // --------------------------------------------------------------------------
82
+ // Cancel a timer. Returns 0 if OK, -1 on failure.
83
+ int
84
+ ztimerset_cancel (ztimerset_t *self, int timer_id)
85
+ {
86
+ #ifdef ZMQ_HAVE_TIMERS
87
+ return zmq_timers_cancel (self->zmq_timers, timer_id);
88
+ #else
89
+ return -1;
90
+ #endif
91
+ }
92
+
93
+
94
+ // --------------------------------------------------------------------------
95
+ // Set timer interval. Returns 0 if OK, -1 on failure.
96
+ // This method is slow, canceling the timer and adding a new one yield better performance.
97
+ int
98
+ ztimerset_set_interval (ztimerset_t *self, int timer_id, size_t interval)
99
+ {
100
+ #ifdef ZMQ_HAVE_TIMERS
101
+ return zmq_timers_set_interval (self->zmq_timers, timer_id, interval);
102
+ #else
103
+ return -1;
104
+ #endif
105
+ }
106
+
107
+
108
+ // --------------------------------------------------------------------------
109
+ // Reset timer to start interval counting from current time. Returns 0 if OK, -1 on failure.
110
+ // This method is slow, canceling the timer and adding a new one yield better performance.
111
+ int
112
+ ztimerset_reset (ztimerset_t *self, int timer_id)
113
+ {
114
+ #ifdef ZMQ_HAVE_TIMERS
115
+ return zmq_timers_reset (self->zmq_timers, timer_id);
116
+ #else
117
+ return -1;
118
+ #endif
119
+ }
120
+
121
+
122
+ // --------------------------------------------------------------------------
123
+ // Return the time until the next interval.
124
+ // Should be used as timeout parameter for the zpoller wait method.
125
+ // The timeout is in msec.
126
+ int
127
+ ztimerset_timeout (ztimerset_t *self)
128
+ {
129
+ #ifdef ZMQ_HAVE_TIMERS
130
+ return zmq_timers_timeout (self->zmq_timers);
131
+ #else
132
+ return -1;
133
+ #endif
134
+ }
135
+
136
+
137
+ // --------------------------------------------------------------------------
138
+ // Invoke callback function of all timers which their interval has elapsed.
139
+ // Should be call after zpoller wait method.
140
+ // Returns 0 if OK, -1 on failure.
141
+ int
142
+ ztimerset_execute (ztimerset_t *self)
143
+ {
144
+ #ifdef ZMQ_HAVE_TIMERS
145
+ return zmq_timers_execute (self->zmq_timers);
146
+ #else
147
+ return -1;
148
+ #endif
149
+ }
150
+
151
+
152
+ // --------------------------------------------------------------------------
153
+ // Self test of this class
154
+
155
+ // Avoid -Werror=unused-function
156
+ #ifdef ZMQ_HAVE_TIMERS
157
+ static void
158
+ handler (int timer_id, void *arg)
159
+ {
160
+ *((bool*)arg) = true;
161
+ }
162
+ #endif
163
+
164
+ void
165
+ ztimerset_test (bool verbose)
166
+ {
167
+ #ifdef ZMQ_HAVE_TIMERS
168
+ printf (" * ztimerset: ");
169
+
170
+ // @selftest
171
+ // Simple create/destroy test
172
+ ztimerset_t *self = ztimerset_new ();
173
+ assert (self);
174
+
175
+ // Adding timer
176
+ bool timer_invoked = false;
177
+ int timer_id = ztimerset_add (self, 100, handler, &timer_invoked);
178
+ assert (timer_id != -1);
179
+ int rc = ztimerset_execute (self);
180
+ assert (rc == 0);
181
+ assert (!timer_invoked);
182
+ int timeout = ztimerset_timeout (self);
183
+ assert (timeout > 0);
184
+ zclock_sleep (timeout);
185
+ rc = ztimerset_execute (self);
186
+ assert (rc == 0);
187
+ assert (timer_invoked);
188
+
189
+ // Cancel timer
190
+ timeout = ztimerset_timeout (self);
191
+ assert (timeout > 0);
192
+ rc = ztimerset_cancel (self, timer_id);
193
+ assert (rc == 0);
194
+ timeout = ztimerset_timeout (self);
195
+ assert(timeout == -1);
196
+
197
+ // Reset a timer
198
+ timer_id = ztimerset_add (self, 100, handler, &timer_invoked);
199
+ assert (timer_id != -1);
200
+ timeout = ztimerset_timeout (self);
201
+ assert (timeout > 0);
202
+ zclock_sleep (timeout / 2);
203
+ timeout = ztimerset_timeout (self);
204
+ rc = ztimerset_reset(self, timer_id);
205
+ assert (rc == 0);
206
+ int timeout2 = ztimerset_timeout (self);
207
+ assert (timeout2 > timeout);
208
+ rc = ztimerset_cancel (self, timer_id);
209
+ assert (rc == 0);
210
+
211
+ // Set interval
212
+ timer_id = ztimerset_add (self, 100, handler, &timer_invoked);
213
+ assert (timer_id != -1);
214
+ timeout = ztimerset_timeout (self);
215
+ rc = ztimerset_set_interval(self, timer_id, 200);
216
+ timeout2 = ztimerset_timeout (self);
217
+ assert (timeout2 > timeout);
218
+
219
+ ztimerset_destroy (&self);
220
+
221
+ #if defined (__WINDOWS__)
222
+ zsys_shutdown();
223
+ #endif
224
+ // @end
225
+ printf ("OK\n");
226
+ #endif
227
+ }
@@ -0,0 +1,809 @@
1
+ /* =========================================================================
2
+ ztrie - simple trie for tokenizable strings
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
+ This is a variant of a trie or prefix tree where all the descendants of a
17
+ node have a common prefix of the string associated with that node. This
18
+ implementation is specialized for strings that can be tokenized by a delimiter
19
+ like a URL, URI or URN. Routes in the tree can be matched by regular expressions
20
+ and by using capturing groups parts of a matched route can be easily obtained.
21
+ @discuss
22
+ Note that the performance for pure string based matching is okay but on short
23
+ strings zhash and zhashx are 3-4 times faster.
24
+ @end
25
+ */
26
+
27
+ #include "czmq_classes.h"
28
+
29
+ #define MODE_INSERT 0
30
+ #define MODE_LOOKUP 1
31
+ #define MODE_MATCH 2
32
+
33
+ #define NODE_TYPE_STRING 0 // Node with string token
34
+ #define NODE_TYPE_REGEX 1 // Node with regex token
35
+ #define NODE_TYPE_PARAM 2 // Node with named regex token and capturing group(s)
36
+ #define NODE_TYPE_ASTERISK 3 // Node with an asterisk, to match routes of variable length
37
+
38
+ #define MIN_LEN(x,y) \
39
+ y + ((x - y) & ((x - y) >>(sizeof(int) * CHAR_BIT - 1)))
40
+
41
+
42
+ // TODO: Move to a more appropriate location:
43
+ static char *
44
+ s_strndup (const char *s, size_t size) {
45
+ char *dup;
46
+ char *end = (char *) memchr (s, '\0', size);
47
+ if (end)
48
+ size = end - 1 - s; // -1 to get the last char before '\0'
49
+ dup = (char *) zmalloc (sizeof (char) * size + 1); // +1 for trailing '\0'
50
+ if (size) {
51
+ memcpy (dup, s, size);
52
+ dup [size] = '\0';
53
+ }
54
+ return dup;
55
+ }
56
+
57
+ // Trie node, used internally only
58
+
59
+ typedef struct _ztrie_node_t {
60
+ char *token; // Part of a path between to delemiters e.g. '/{token}/'
61
+ int token_type; // Type of the token, string, regex, asterisk
62
+ int token_len; // Number of characters of the token
63
+ size_t path_len; // Length of the path/route including this token
64
+ bool endpoint; // Has a path been added that routes to this node?
65
+ size_t parameter_count; // How many regex parameters does this token contain?
66
+ char **parameter_names; // Names of the regex parameters for easy access at matching time
67
+ char **parameter_values; // Values of the parameters
68
+ char *asterisk_match; // Matched asterisk route
69
+ zrex_t *regex; // Compiled regex
70
+ void *data; // Custom arbitrary data assoziated with a route
71
+ ztrie_destroy_data_fn *destroy_data_fn; // Callback to destroy custom data
72
+ zlistx_t *children; // List of all children to this route
73
+ struct _ztrie_node_t *parent; // Parent of this node
74
+ } ztrie_node_t;
75
+
76
+ // --------------------------------------------------------------------------
77
+ // Structure of our class
78
+
79
+ struct _ztrie_t {
80
+ char delimiter; // Character that seperates the tokens of a route
81
+ ztrie_node_t *root; // Root node of this tree
82
+ ztrie_node_t *match; // Last match made by ztrie_matches
83
+ zlistx_t *params; // List of regex parameters found during parsing
84
+ // The list is kept globally to optimize performance.
85
+ };
86
+
87
+ // Internal helper functions
88
+
89
+ static int
90
+ s_ztrie_node_compare (const void *item1, const void *item2) {
91
+ assert (item1);
92
+ assert (item2);
93
+ ztrie_node_t *node1 = (ztrie_node_t *) item1;
94
+ ztrie_node_t *node2 = (ztrie_node_t *) item2;
95
+
96
+ int same = node1->token_type - node2->token_type;
97
+ if (same == 0) {
98
+ if (*node1->token == *node2->token // This achieves a small performance boost
99
+ && node1->token_len == node2->token_len
100
+ && strncmp (node1->token, node2->token, MIN_LEN (node1->token_len, node2->token_len)) == 0)
101
+ return 0;
102
+ else
103
+ return -1;
104
+ }
105
+ else
106
+ return same;
107
+ }
108
+
109
+
110
+ // Create a new ztrie_node. If parent is not NULL the child will add itself
111
+ // to the parents children.
112
+
113
+ static ztrie_node_t *
114
+ s_ztrie_node_new (ztrie_node_t *parent, char *token, int token_len, zlistx_t *param_keys, int token_type)
115
+ {
116
+ ztrie_node_t *self = (ztrie_node_t *) zmalloc (sizeof (ztrie_node_t));
117
+ assert (self);
118
+
119
+ // Initialize properties
120
+ self->token = s_strndup (token, token_len);
121
+ self->token_type = token_type;
122
+ self->token_len = token_len;
123
+ self->endpoint = false;
124
+ self->parameter_count = 0;
125
+ self->parameter_names = NULL;
126
+ self->parameter_values = NULL;
127
+ if (param_keys && zlistx_size (param_keys) > 0) {
128
+ self->parameter_count = zlistx_size (param_keys);
129
+ self->parameter_names = (char **) malloc (sizeof (char *) * self->parameter_count);
130
+ self->parameter_values = (char **) malloc (sizeof (char *) * self->parameter_count);
131
+ char *key = (char *) zlistx_first (param_keys);
132
+ size_t index;
133
+ for (index = 0; index < zlistx_size (param_keys); index++) {
134
+ self->parameter_names [index] = key;
135
+ self->parameter_values [index] = NULL;
136
+ key = (char *) zlistx_next (param_keys);
137
+ }
138
+ }
139
+ if (self->token_type == NODE_TYPE_REGEX || self->token_type == NODE_TYPE_PARAM)
140
+ self->regex = zrex_new (self->token);
141
+ self->data = NULL;
142
+ // Initialize relationships
143
+ self->parent = parent;
144
+ if (self->parent) {
145
+ zlistx_add_end (self->parent->children, self);
146
+ // Sort regexes to the end to avoid conlficts
147
+ zlistx_sort (self->parent->children);
148
+ }
149
+ size_t parent_path_len = self->parent? self->parent->path_len: 0;
150
+ self->path_len = parent_path_len + strlen (self->token) + 1; // +1 path delimiter
151
+ self->children = zlistx_new ();
152
+ zlistx_set_comparator (self->children, s_ztrie_node_compare);
153
+
154
+ return self;
155
+ }
156
+
157
+
158
+ // Destroy the ztrie_node.
159
+
160
+ static void
161
+ s_ztrie_node_destroy (ztrie_node_t **self_p)
162
+ {
163
+ assert (self_p);
164
+ if (*self_p) {
165
+ ztrie_node_t *self = *self_p;
166
+
167
+ // Free class properties
168
+ zstr_free (&self->token);
169
+ zstr_free (&self->asterisk_match);
170
+ if (self->parameter_count > 0) {
171
+ size_t index;
172
+ for (index = 0; index < self->parameter_count; index++) {
173
+ freen (self->parameter_names [index]);
174
+ if (self->parameter_values [index])
175
+ freen (self->parameter_values [index]);
176
+ }
177
+ freen (self->parameter_names);
178
+ freen (self->parameter_values);
179
+ }
180
+ if (self->token_type == NODE_TYPE_REGEX || self->token_type == NODE_TYPE_PARAM)
181
+ zrex_destroy (&self->regex);
182
+ zlistx_destroy (&self->children);
183
+ if (self->data && self->destroy_data_fn)
184
+ (self->destroy_data_fn) (&self->data);
185
+
186
+ // Free object itself
187
+ freen (self);
188
+ *self_p = NULL;
189
+ }
190
+ }
191
+
192
+
193
+ // Update the value of a regex parameter at position.
194
+
195
+ static void
196
+ s_ztrie_node_update_param (ztrie_node_t *self, int pos, const char *value)
197
+ {
198
+ assert (self);
199
+ zstr_free (&self->parameter_values [pos - 1]);
200
+ self->parameter_values [pos - 1] = strdup (value);
201
+ }
202
+
203
+
204
+ // --------------------------------------------------------------------------
205
+ // Creates a new ztrie.
206
+
207
+ ztrie_t *
208
+ ztrie_new (char delimiter)
209
+ {
210
+ ztrie_t *self = (ztrie_t *) zmalloc (sizeof (ztrie_t));
211
+ assert (self);
212
+
213
+ // Initialize properties
214
+ if (delimiter)
215
+ self->delimiter = delimiter;
216
+ else
217
+ self->delimiter = '/';
218
+ self->root = s_ztrie_node_new (NULL, "", 0, NULL, NODE_TYPE_STRING);
219
+ self->match = NULL;
220
+ self->params = zlistx_new ();
221
+
222
+ return self;
223
+ }
224
+
225
+ // Destroy all children of a node
226
+
227
+ static void
228
+ s_ztrie_destroy_children (ztrie_node_t *node)
229
+ {
230
+ ztrie_node_t *child = (ztrie_node_t *) zlistx_first (node->children);
231
+ while (child) {
232
+ s_ztrie_destroy_children (child);
233
+ s_ztrie_node_destroy (&child);
234
+ child = (ztrie_node_t *) zlistx_next (node->children);
235
+ }
236
+ }
237
+
238
+ // --------------------------------------------------------------------------
239
+ // Destroy the ztrie.
240
+
241
+ void
242
+ ztrie_destroy (ztrie_t **self_p)
243
+ {
244
+ assert (self_p);
245
+ if (*self_p) {
246
+ ztrie_t *self = *self_p;
247
+
248
+ // Free class properties
249
+ s_ztrie_destroy_children (self->root);
250
+ s_ztrie_node_destroy (&self->root);
251
+ zlistx_destroy (&self->params);
252
+
253
+ // Free object itself
254
+ freen (self);
255
+ *self_p = NULL;
256
+ }
257
+ }
258
+
259
+ // String compare token
260
+
261
+ static ztrie_node_t *
262
+ s_ztrie_compare_token (ztrie_node_t *parent, char *token, int len)
263
+ {
264
+ ztrie_node_t *child = (ztrie_node_t *) zlistx_first (parent->children);
265
+ while (child) {
266
+ if (child->token_len == len &&
267
+ strncmp (child->token, token, MIN_LEN (child->token_len, len)) == 0)
268
+ return child;
269
+ child = (ztrie_node_t *) zlistx_next (parent->children);
270
+ }
271
+ return NULL;
272
+ }
273
+
274
+ // String compare token or evaluate regexes
275
+
276
+ static ztrie_node_t *
277
+ s_ztrie_matches_token (ztrie_node_t *parent, char *token, int len)
278
+ {
279
+ char firstbyte = *token;
280
+ ztrie_node_t *child = (ztrie_node_t *) zlistx_first (parent->children);
281
+ while (child) {
282
+ if (child->token_type == NODE_TYPE_STRING) {
283
+ if (firstbyte == *child->token // This achieves a small performance boost
284
+ && child->token_len == len
285
+ && strncmp (child->token, token, MIN_LEN (child->token_len, len)) == 0)
286
+ return child;
287
+ }
288
+ else
289
+ if (child->token_type == NODE_TYPE_ASTERISK) {
290
+ child->asterisk_match = strdup (token);
291
+ return child;
292
+ }
293
+ else {
294
+ // Need to copy token as zrex_matches expects '\0' terminated string
295
+ char *token_term = s_strndup (token, len);
296
+ if (zrex_matches (child->regex, token_term)) {
297
+ if (child->token_type == NODE_TYPE_PARAM) {
298
+ // One hit means no capturing group was defined
299
+ // More than one hit indicates that at least on capturing group.
300
+ // In this case only the values of the capturing groups are considered.
301
+ if (zrex_hits (child->regex) == 1)
302
+ s_ztrie_node_update_param (child, 1, zrex_hit (child->regex, 0));
303
+ else
304
+ if (zrex_hits (child->regex) > 1) {
305
+ int index;
306
+ for (index = 1; index < zrex_hits (child->regex); index++)
307
+ s_ztrie_node_update_param (child, index, zrex_hit (child->regex, index));
308
+ }
309
+ }
310
+ freen (token_term);
311
+ return child;
312
+ }
313
+ freen (token_term);
314
+ }
315
+ child = (ztrie_node_t *) zlistx_next (parent->children);
316
+ }
317
+ return NULL;
318
+ }
319
+
320
+
321
+ // --------------------------------------------------------------------------
322
+ // Parses a path bytewise trying to find matches for path tokens. Depending
323
+ // on the mode there are different behaviors on,
324
+ // how the tokens are compared:
325
+ // MODE_INSERT: All tokens are compared as strings.
326
+ // MODE_LOOKUP: All tokens are compared as strings.
327
+ // MODE_MATCH: Node tokens of NODE_TYPE_STRING tokens are compared as strings,
328
+ // otherwise the tokens are matched against the nodes regex.
329
+ // how a mismatch is handled:
330
+ // MODE_INSERT: creates a new node and attaches it to the common prefix for
331
+ // the given path, repeat for the remaining path tokens.
332
+ // returns the node that has been attached last.
333
+ // MODE_LOOKUP: returns NULL if the comparison failed.
334
+ // MODE_MATCH: returns NULL if the comparison failed.
335
+
336
+ static ztrie_node_t *
337
+ s_ztrie_parse_path (ztrie_t *self, const char *path, int mode)
338
+ {
339
+ int state = 0;
340
+ char *needle, *beginToken = NULL, *beginRegex = NULL;
341
+ ztrie_node_t *parent = self->root;
342
+ if (zlistx_size (self->params) > 0)
343
+ zlistx_purge (self->params);
344
+
345
+ size_t len = strlen (path);
346
+ needle = (char *) path;
347
+ char *needle_stop = needle + len;
348
+ // Ignore trailing delimiter
349
+ if (needle [len-1] == self->delimiter)
350
+ needle_stop -= 1;
351
+ while (needle < needle_stop + 1) {
352
+ // It is valid not to have an delimiter at the end of the path
353
+ if (*needle == self->delimiter || needle == needle_stop) {
354
+ // Token starts with delimiter ignore everything that comes before
355
+ if (state == 0) {
356
+ beginToken = needle + 1;
357
+ state++;
358
+ if (mode == MODE_INSERT || mode == MODE_LOOKUP)
359
+ // Increment so regexes are parsed which is only relevant
360
+ // during INSERT or LOOKUP. Using different states gives a small
361
+ // performance boost for matching.
362
+ state++;
363
+ }
364
+ // Token ends with delimiter.
365
+ else
366
+ if (state < 3) {
367
+ int matchType = zlistx_size (self->params) > 0? NODE_TYPE_PARAM:
368
+ beginRegex? NODE_TYPE_REGEX: NODE_TYPE_STRING;
369
+ char *matchToken = beginRegex? beginRegex: beginToken;
370
+ int matchTokenLen = (int) (needle - matchToken) - (beginRegex? 1: 0);
371
+ // Illegal token
372
+ if (matchTokenLen == 0)
373
+ return NULL;
374
+ ztrie_node_t *match = NULL;
375
+ // Asterisk nodes are only allowed at the end of a route
376
+ if (needle == needle_stop && *matchToken == '*') {
377
+ if (zlistx_size (parent->children) == 0) {
378
+ matchType = NODE_TYPE_ASTERISK;
379
+ matchToken = needle - 1;
380
+ matchTokenLen = 1;
381
+ }
382
+ // Asterisk must be a leaf in the tree
383
+ else
384
+ return NULL;
385
+ }
386
+ else {
387
+ matchType = zlistx_size (self->params) > 0? NODE_TYPE_PARAM:
388
+ beginRegex? NODE_TYPE_REGEX: NODE_TYPE_STRING;
389
+ matchToken = beginRegex? beginRegex: beginToken;
390
+ matchTokenLen = (int) (needle - matchToken) - (beginRegex? 1: 0);
391
+ }
392
+
393
+ // In insert and lookup mode only do a string comparison
394
+ if (mode == MODE_INSERT || mode == MODE_LOOKUP)
395
+ match = s_ztrie_compare_token (parent, matchToken, matchTokenLen);
396
+ else
397
+ // Otherwise evaluate regexes
398
+ if (mode == MODE_MATCH)
399
+ match = s_ztrie_matches_token (parent, matchToken, matchTokenLen);
400
+
401
+ // Mismatch behavior depends on mode
402
+ if (!match) {
403
+ // Append to common prefix
404
+ if (mode == MODE_INSERT) {
405
+ // It's not allowed to append on asterisk
406
+ if (parent->token_type == NODE_TYPE_ASTERISK ||
407
+ (zlistx_size (parent->children) == 1 &&
408
+ ((ztrie_node_t *) (zlistx_first (parent->children)))->token_type == NODE_TYPE_ASTERISK))
409
+ return NULL;
410
+ parent = s_ztrie_node_new (parent, matchToken, matchTokenLen, self->params, matchType);
411
+ }
412
+ else
413
+ // No match for path found
414
+ if (mode == MODE_MATCH || mode == MODE_LOOKUP)
415
+ return NULL;
416
+ }
417
+ // If a match has been found it becomes the parent for next path token
418
+ else {
419
+ parent = match;
420
+ // In case a asterisk match has been made skip the rest of the route
421
+ if (parent->token_type == NODE_TYPE_ASTERISK)
422
+ break;
423
+ }
424
+ // Cleanup for next token
425
+ beginRegex = NULL;
426
+ if (zlistx_size (self->params) > 0)
427
+ zlistx_purge (self->params);
428
+ // Token end equals token begin
429
+ beginToken = needle + 1;
430
+ }
431
+ }
432
+ else
433
+ // regex starts with '{'
434
+ if (state == 2 && *needle == '{') {
435
+ beginRegex = needle + 1;
436
+ state++;
437
+ }
438
+ else
439
+ // in the middle of the regex. Found a named regex.
440
+ if (state == 3 && (*needle == ':')) {
441
+ zlistx_add_end (self->params, s_strndup (beginRegex, needle - beginRegex));
442
+ beginRegex = needle + 1;
443
+
444
+ }
445
+ else
446
+ // regex ends with {
447
+ if (state == 3 && *needle == '}') {
448
+ state--;
449
+ }
450
+ needle++;
451
+ }
452
+
453
+ // In matching mode the discovered node must be an endpoint
454
+ if (parent && mode == MODE_MATCH && !parent->endpoint)
455
+ return NULL;
456
+
457
+ return parent;
458
+ }
459
+
460
+
461
+ // --------------------------------------------------------------------------
462
+ // Inserts a new route into the trie and attaches the data. Returns -1
463
+ // if the route already exists, otherwise 0. This method takes ownership of
464
+ // the provided data.
465
+
466
+ int
467
+ ztrie_insert_route (ztrie_t *self, const char *path, void *data, ztrie_destroy_data_fn destroy_data_fn)
468
+ {
469
+ assert (self);
470
+ ztrie_node_t *node = s_ztrie_parse_path (self, path, MODE_INSERT);
471
+ // If the returned node has no endpoint, a new route can be assigned to it.
472
+ if (node && !node->endpoint) {
473
+ node->endpoint = true;
474
+ node->data = data;
475
+ node->destroy_data_fn = destroy_data_fn;
476
+ return 0;
477
+ }
478
+ // If the returned node has an endpoint, a route has already assigned to it.
479
+ else
480
+ return -1;
481
+ }
482
+
483
+
484
+ // --------------------------------------------------------------------------
485
+ // Removes a route from the trie and destroys its data. Returns -1 if the
486
+ // route does not exists, otherwise 0.
487
+
488
+ int
489
+ ztrie_remove_route (ztrie_t *self, const char *path)
490
+ {
491
+ assert (self);
492
+ ztrie_node_t *match = s_ztrie_parse_path (self, path, MODE_LOOKUP);
493
+ // The path did match a node which is endpoint to a route
494
+ if (match && match->endpoint) {
495
+ // This node is part of other routes, thus it cannot destroy it
496
+ if (zlistx_size (match->children) > 0) {
497
+ match->endpoint = false;
498
+ if (match->data && match->destroy_data_fn)
499
+ (match->destroy_data_fn) (&match->data);
500
+ }
501
+ // If this node is not part of other routes, destroy it
502
+ else {
503
+ // Delete match from parent's children before destroying
504
+ void *handle = zlistx_find (match->parent->children, match);
505
+ assert (handle);
506
+ zlistx_delete (match->parent->children, handle);
507
+ s_ztrie_node_destroy (&match);
508
+ }
509
+ return 0;
510
+ }
511
+ // If there is no match or the match is not endpoint to a route, fail
512
+ else
513
+ return -1;
514
+ }
515
+
516
+ // --------------------------------------------------------------------------
517
+ // Returns true if the path matches a route in the tree, otherwise false.
518
+
519
+ bool
520
+ ztrie_matches (ztrie_t *self, const char *path)
521
+ {
522
+ assert (self);
523
+ self->match = s_ztrie_parse_path (self, path, MODE_MATCH);
524
+ return self->match? true: false;
525
+ }
526
+
527
+
528
+ // --------------------------------------------------------------------------
529
+ // Returns the data of a matched route from last ztrie_matches. If the path
530
+ // did not match, returns NULL. Do not delete the data as it's owned by
531
+ // ztrie.
532
+
533
+ void *
534
+ ztrie_hit_data (ztrie_t *self)
535
+ {
536
+ assert (self);
537
+ if (self->match)
538
+ return self->match->data;
539
+ return NULL;
540
+ }
541
+
542
+
543
+ // --------------------------------------------------------------------------
544
+ // Returns the count of parameters that a matched route has.
545
+
546
+ size_t
547
+ ztrie_hit_parameter_count (ztrie_t *self)
548
+ {
549
+ size_t count = 0;
550
+ ztrie_node_t *node = self->match;
551
+ while (node) {
552
+ count += node->parameter_count;
553
+ node = node->parent;
554
+ }
555
+ return count;
556
+ }
557
+
558
+ // --------------------------------------------------------------------------
559
+ // Returns the parameters of a matched route with named regexes from last
560
+ // ztrie_matches. If the path did not match or the route did not contain any
561
+ // named regexes, returns NULL. The caller is responseable for destroy the map.
562
+
563
+ zhashx_t *
564
+ ztrie_hit_parameters (ztrie_t *self)
565
+ {
566
+ assert (self);
567
+ if (self->match) {
568
+ zhashx_t *route_parameters = zhashx_new ();
569
+ ztrie_node_t *node = self->match;
570
+ while (node) {
571
+ size_t index;
572
+ for (index = 0; index < node->parameter_count; index++)
573
+ zhashx_insert (route_parameters,
574
+ node->parameter_names [index],
575
+ (void *) node->parameter_values [index]);
576
+ node = node->parent;
577
+ }
578
+ return route_parameters;
579
+ }
580
+ return NULL;
581
+ }
582
+
583
+
584
+ // --------------------------------------------------------------------------
585
+ // Returns the asterisk matched part of a route, if there has been no match
586
+ // or no asterisk match, returns NULL.
587
+
588
+ const char *
589
+ ztrie_hit_asterisk_match (ztrie_t *self)
590
+ {
591
+ assert (self);
592
+ if (self->match)
593
+ return self->match->asterisk_match;
594
+ return NULL;
595
+ }
596
+
597
+ // --------------------------------------------------------------------------
598
+ // Print properties of the ztrie object.
599
+ //
600
+
601
+ static void
602
+ s_ztrie_print_tree_line (ztrie_node_t *self, bool end_line)
603
+ {
604
+ if (self->parent) {
605
+ s_ztrie_print_tree_line (self->parent, false);
606
+ if (zlistx_tail (self->parent->children) == self) {
607
+ if (end_line)
608
+ printf ("`-- ");
609
+ else
610
+ printf (" ");
611
+ }
612
+ else {
613
+ if (end_line)
614
+ printf ("+-- ");
615
+ else
616
+ printf ("| ");
617
+ }
618
+ if (end_line) {
619
+ char *is_endpoint = self->endpoint? "true": "false";
620
+ printf ("%s (params: %zu, endpoint: %s, type: %d)\n",
621
+ self->token, self->parameter_count, is_endpoint, self->token_type);
622
+ }
623
+ }
624
+ }
625
+
626
+ static void
627
+ s_ztrie_print_tree (ztrie_node_t *self)
628
+ {
629
+ // Print tree like structure
630
+ s_ztrie_print_tree_line (self, true);
631
+ ztrie_node_t *child = (ztrie_node_t *) zlistx_first (self->children);
632
+ while (child) {
633
+ s_ztrie_print_tree (child);
634
+ child = (ztrie_node_t *) zlistx_next (self->children);
635
+ }
636
+ }
637
+
638
+ void
639
+ ztrie_print (ztrie_t *self)
640
+ {
641
+ assert (self);
642
+ s_ztrie_print_tree (self->root);
643
+ }
644
+
645
+
646
+ // --------------------------------------------------------------------------
647
+ // Self test of this class.
648
+
649
+ void
650
+ ztrie_test (bool verbose)
651
+ {
652
+ printf (" * ztrie: ");
653
+ // @selftest
654
+ // Create a new trie for matching strings that can be tokenized by a slash
655
+ // (e.g. URLs minus the protocol, address and port).
656
+ ztrie_t *self = ztrie_new ('/');
657
+ assert (self);
658
+
659
+ int ret = 0;
660
+
661
+ // Let's start by inserting a couple of routes into the trie.
662
+ // This one is for the route '/foo/bar' the slash at the beginning of the
663
+ // route is important because everything before the first delimiter will be
664
+ // discarded. A slash at the end of a route is optional though. The data
665
+ // associated with this node is passed without destroy function which means
666
+ // it must be destroyed by the caller.
667
+ int foo_bar_data = 10;
668
+ ret = ztrie_insert_route (self, "/foo/bar", &foo_bar_data, NULL);
669
+ assert (ret == 0);
670
+
671
+ // Now suppose we like to match all routes with two tokens that start with
672
+ // '/foo/' but aren't '/foo/bar'. This is possible by using regular
673
+ // expressions which are enclosed in an opening and closing curly bracket.
674
+ // Tokens that contain regular expressions are always match after string
675
+ // based tokens.
676
+ // Note: There is no order in which regular expressions are sorted thus
677
+ // if you enter multiple expressions for a route you will have to make
678
+ // sure they don't have overlapping results. For example '/foo/{[^/]+}'
679
+ // and '/foo/{\d+} having could turn out badly.
680
+ int foo_other_data = 100;
681
+ ret = ztrie_insert_route (self, "/foo/{[^/]+}", &foo_other_data, NULL);
682
+ assert (ret == 0);
683
+
684
+ // Regular expression are only matched against tokens of the same level.
685
+ // This allows us to append to are route with a regular expression as if
686
+ // it were a string.
687
+ ret = ztrie_insert_route (self, "/foo/{[^/]+}/gulp", NULL, NULL);
688
+ assert (ret == 0);
689
+
690
+ // Routes are identified by their endpoint, which is the last token of the route.
691
+ // It is possible to insert routes for a node that already exists but isn't an
692
+ // endpoint yet. The delimiter at the end of a route is optional and has no effect.
693
+ ret = ztrie_insert_route (self, "/foo/", NULL, NULL);
694
+ assert (ret == 0);
695
+
696
+ // If you try to insert a route which already exists the method will return -1.
697
+ ret = ztrie_insert_route (self, "/foo", NULL, NULL);
698
+ assert (ret == -1);
699
+
700
+ // It is not allowed to insert routes with empty tokens.
701
+ ret = ztrie_insert_route (self, "//foo", NULL, NULL);
702
+ assert (ret == -1);
703
+
704
+ // Everything before the first delimiter is ignored so 'foo/bar/baz' is equivalent
705
+ // to '/bar/baz'.
706
+ ret = ztrie_insert_route (self, "foo/bar/baz", NULL, NULL);
707
+ assert (ret == 0);
708
+ ret = ztrie_insert_route (self, "/bar/baz", NULL, NULL);
709
+ assert (ret == -1);
710
+
711
+ // Of course you are allowed to remove routes, in case there is data associated with a
712
+ // route and a destroy data function has been supplied that data will be destroyed.
713
+ ret = ztrie_remove_route (self, "/foo");
714
+ assert (ret == 0);
715
+
716
+ // Removing a non existent route will as well return -1.
717
+ ret = ztrie_remove_route (self, "/foo");
718
+ assert (ret == -1);
719
+
720
+ // Removing a route with a regular expression must exactly match the entered one.
721
+ ret = ztrie_remove_route (self, "/foo/{[^/]+}");
722
+ assert (ret == 0);
723
+
724
+ // Next we like to match a path by regular expressions and also extract matched
725
+ // parts of a route. This can be done by naming the regular expression. The name of a
726
+ // regular expression is entered at the beginning of the curly brackets and separated
727
+ // by a colon from the regular expression. The first one in this examples is named
728
+ // 'name' and names the expression '[^/]'. If there is no capturing group defined in
729
+ // the expression the whole matched string will be associated with this parameter. In
730
+ // case you don't like the get the whole matched string use a capturing group, like
731
+ // it has been done for the 'id' parameter. This is nice but you can even match as
732
+ // many parameter for a token as you like. Therefore simply put the parameter names
733
+ // separated by colons in front of the regular expression and make sure to add a
734
+ // capturing group for each parameter. The first parameter will be associated with
735
+ // the first capturing and so on.
736
+ char *data = (char *) malloc (80);
737
+ sprintf (data, "%s", "Hello World!");
738
+ ret = ztrie_insert_route (self, "/baz/{name:[^/]+}/{id:--(\\d+)}/{street:nr:(\\a+)(\\d+)}", data, NULL);
739
+ assert (ret == 0);
740
+
741
+ // There is a lot you can do with regular expression but matching routes
742
+ // of arbitrary length wont work. Therefore we make use of the asterisk
743
+ // operator. Just place it at the end of your route, e.g. '/config/bar/*'.
744
+ ret = ztrie_insert_route (self, "/config/bar/*", NULL, NULL);
745
+ assert (ret == 0);
746
+
747
+ // Appending to an asterisk as you would to with a regular expression
748
+ // isn't valid.
749
+ ret = ztrie_insert_route (self, "/config/bar/*/bar", NULL, NULL);
750
+ assert (ret == -1);
751
+
752
+ // The asterisk operator will only work as a leaf in the tree. If you
753
+ // enter an asterisk in the middle of your route it will simply be
754
+ // interpreted as a string.
755
+ ret = ztrie_insert_route (self, "/test/*/bar", NULL, NULL);
756
+ assert (ret == 0);
757
+
758
+ // If a parent has an asterisk as child it is not allowed to have
759
+ // other siblings.
760
+ ret = ztrie_insert_route (self, "/config/bar/foo/glup", NULL, NULL);
761
+ assert (ret != 0);
762
+
763
+ // Test matches
764
+ bool hasMatch = false;
765
+
766
+ // The route '/bar/foo' will fail to match as this route has never been inserted.
767
+ hasMatch = ztrie_matches (self, "/bar/foo");
768
+ assert (!hasMatch);
769
+
770
+ // The route '/foo/bar' will match and we can obtain the data associated with it.
771
+ hasMatch = ztrie_matches (self, "/foo/bar");
772
+ assert (hasMatch);
773
+ int foo_bar_hit_data = *((int *) ztrie_hit_data (self));
774
+ assert (foo_bar_data == foo_bar_hit_data);
775
+
776
+ // This route is part of another but is no endpoint itself thus the matches will fail.
777
+ hasMatch = ztrie_matches (self, "/baz/blub");
778
+ assert (!hasMatch);
779
+
780
+ // This route will match our named regular expressions route. Thus we can extract data
781
+ // from the route by their names.
782
+ hasMatch = ztrie_matches (self, "/baz/blub/--11/abc23");
783
+ assert (hasMatch);
784
+ char *match_data = (char *) ztrie_hit_data (self);
785
+ assert (streq ("Hello World!", match_data));
786
+ zhashx_t *parameters = ztrie_hit_parameters (self);
787
+ assert (zhashx_size (parameters) == 4);
788
+ assert (streq ("blub", (char *) zhashx_lookup (parameters, "name")));
789
+ assert (streq ("11", (char *) zhashx_lookup (parameters, "id")));
790
+ assert (streq ("abc", (char *) zhashx_lookup (parameters, "street")));
791
+ assert (streq ("23", (char *) zhashx_lookup (parameters, "nr")));
792
+ zhashx_destroy (&parameters);
793
+
794
+ // This will match our asterisk route '/config/bar/*'. As the result we
795
+ // can obtain the asterisk matched part of the route.
796
+ hasMatch = ztrie_matches (self, "/config/bar/foo/bar");
797
+ assert (hasMatch);
798
+ assert (streq (ztrie_hit_asterisk_match (self), "foo/bar"));
799
+
800
+ zstr_free (&data);
801
+ ztrie_destroy (&self);
802
+
803
+ #if defined (__WINDOWS__)
804
+ zsys_shutdown();
805
+ #endif
806
+ // @end
807
+
808
+ printf ("OK\n");
809
+ }