laag-libczmq 4.1.0.0

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