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,1078 @@
1
+ from __future__ import print_function
2
+ import unittest
3
+ import sys, os, time
4
+ from ctypes import *
5
+ from czmq import *
6
+
7
+ # http://python3porting.com/problems.html#common-migration-problems
8
+ PY3 = sys.version_info > (3,)
9
+
10
+ if PY3:
11
+ # Python 3 does not have a "cmp" builtin.
12
+ def cmp(a, b):
13
+ return (a > b) - (a < b)
14
+
15
+ # Part test, part example of how to use python bindings.
16
+ # Note the del statements are just to explicitly test functionality, it is generally not required.
17
+
18
+ class TestCZMQ(unittest.TestCase):
19
+ verbose = int(os.environ.get('VERBOSE', '0'))
20
+
21
+ def test_zdir(self):
22
+ older = Zdir(b'.', None)
23
+ self.assertTrue(older)
24
+ if self.verbose:
25
+ older.print(0)
26
+
27
+ newer = Zdir(b'..', None)
28
+ self.assertTrue(newer)
29
+
30
+ patches = Zdir.diff(older, newer, b'/')
31
+ self.assertTrue(patches)
32
+
33
+ while patches.size():
34
+ patch = ZdirPatch(patches.pop(), True)
35
+
36
+ nosuch = Zdir(b"does-not-exist", None)
37
+ self.assertFalse(nosuch)
38
+
39
+ # zdir_watch test:
40
+ watch = Zactor(zactor_fn(lib.zdir_watch), None)
41
+ self.assertTrue(watch)
42
+
43
+ if self.verbose:
44
+ watch.sock().send(b"s", b"VERBOSE")
45
+ self.assertEqual(watch.wait(), 0)
46
+
47
+ # need to create a file in the test directory we're watching
48
+ # in order to ensure the directory exists
49
+ initfile = Zfile(b"./zdir-test-dir", b"initial_file")
50
+ self.assertTrue(initfile)
51
+ initfile.output()
52
+ if PY3:
53
+ with initfile.handle() as hdl: # Avoid ResourceWarning: unclosed file.
54
+ hdl.write(b"initial file\n")
55
+ else:
56
+ initfile.handle().write(b"initial file\n")
57
+ initfile.close()
58
+
59
+ try:
60
+ stable_age = float(file_stable_age_msec()) / 1000.0 + 0.050
61
+ except Exception:
62
+ stable_age = 5.050
63
+ time.sleep(stable_age) # wait for initial file to become 'stable'
64
+
65
+ watch.sock().send(b"si", b"TIMEOUT", 100)
66
+ self.assertEqual(watch.sock().wait(), 0)
67
+
68
+ watch.sock().send(b"ss", b"SUBSCRIBE", b"zdir-test-dir")
69
+ self.assertEqual(watch.sock().wait(), 0)
70
+
71
+ watch.sock().send(b"ss", b"UNSUBSCRIBE", b"zdir-test-dir")
72
+ self.assertEqual(watch.sock().wait(), 0)
73
+
74
+ watch.sock().send(b"ss", b"SUBSCRIBE", b"zdir-test-dir")
75
+ self.assertEqual(watch.sock().wait(), 0)
76
+
77
+ newfile = Zfile(b"zdir-test-dir", b"test_abc")
78
+ newfile.output()
79
+ if PY3:
80
+ with newfile.handle() as hdl: # Avoid ResourceWarning: unclosed file.
81
+ hdl.write(b"test file\n")
82
+ else:
83
+ newfile.handle().write(b"test file\n")
84
+ newfile.close()
85
+
86
+ #watch_poll = Zpoller(watch, None)
87
+
88
+ # poll for a certain timeout before giving up and failing the test.
89
+ #assert(watch_poll.wait(1001) == watch)
90
+
91
+ # wait for notification of the file being added
92
+ path = c_char_p()
93
+ patches = zlist_p()
94
+ rc = watch.sock().recv(b"sp", byref(path), byref(patches))
95
+ self.assertEqual(rc, 0)
96
+ patches = Zlist(patches, True)
97
+
98
+ self.assertEqual(string_at(path), b"zdir-test-dir")
99
+ libc.free (path)
100
+
101
+ self.assertEqual(patches.size(), 1)
102
+
103
+ patch = ZdirPatch(patches.pop(), True)
104
+ self.assertEqual(patch.path(), b"zdir-test-dir")
105
+
106
+ patch_file = patch.file()
107
+ self.assertEqual(patch_file.filename(b""), b"zdir-test-dir/test_abc")
108
+
109
+ del patch
110
+ del patches
111
+
112
+ # remove the file
113
+ newfile.remove()
114
+ del newfile
115
+
116
+ # poll for a certain timeout before giving up and failing the test.
117
+ #assert(watch_poll.wait(1001) == watch)
118
+
119
+ # wait for notification of the file being removed
120
+ path = c_char_p()
121
+ patches = zlist_p()
122
+ rc = watch.sock().recv(b"sp", byref(path), byref(patches))
123
+ self.assertEqual(rc, 0)
124
+ patches = Zlist(patches, True)
125
+
126
+ self.assertEqual(string_at(path), b"zdir-test-dir")
127
+ libc.free (path)
128
+
129
+ self.assertEqual(patches.size(), 1)
130
+
131
+ patch = ZdirPatch(patches.pop(), True)
132
+ self.assertEqual(patch.path(), b"zdir-test-dir")
133
+
134
+ patch_file = patch.file()
135
+ self.assertEqual(patch_file.filename(b""), b"zdir-test-dir/test_abc")
136
+
137
+ del patch
138
+ del patches
139
+
140
+ #zpoller_destroy (&watch_poll)
141
+ del watch
142
+
143
+ # clean up by removing the test directory.
144
+ testdir = Zdir(b"zdir-test-dir", None)
145
+ testdir.remove(True)
146
+ del testdir
147
+
148
+ def test_zdir_patch(self):
149
+ file = Zfile(b".", b"bilbo")
150
+ self.assertTrue(file)
151
+ patch = ZdirPatch(b".", file, ZdirPatch.CREATE, b"/")
152
+ self.assertTrue(patch)
153
+ del file
154
+
155
+ file = patch.file()
156
+ self.assertTrue(file)
157
+ self.assertEqual(file.filename(b"."), b"bilbo")
158
+ self.assertEqual(patch.vpath(), b"/bilbo")
159
+ del patch
160
+
161
+ def test_zfile(self):
162
+ file = Zfile(None, b"bilbo")
163
+ self.assertTrue(file)
164
+ self.assertEqual(file.filename(b"."), b"bilbo")
165
+ self.assertFalse(file.is_readable())
166
+ del file
167
+
168
+ # Create a test file in some random subdirectory
169
+ file = Zfile(b"./this/is/a/test", b"bilbo")
170
+ self.assertTrue(file)
171
+ self.assertEqual(file.output(), 0)
172
+ #chunk = Zchunk.new(None, 100)
173
+ #self.assertTrue(chunk)
174
+ #chunk.fill(0, 100)
175
+
176
+ # Write 100 bytes at position 1,000,000 in the file
177
+ #self.assertEqual(file.write(chunk, 1000000), 0)
178
+ #del chunk
179
+ file.close()
180
+ self.assertTrue(file.is_readable())
181
+ #self.assertEqual(file.cursize(), 1000100)
182
+ #self.assertFalse(file.is_stable())
183
+ self.assertTrue(file.digest())
184
+
185
+ # Now truncate file from outside
186
+ f = open('./this/is/a/test/bilbo', 'wb')
187
+ f.truncate()
188
+ f.write(b"Hello, World\n")
189
+ f.close()
190
+ del f
191
+
192
+ try:
193
+ stable_age = float(file_stable_age_msec()) / 1000.0 + 0.050
194
+ except Exception:
195
+ stable_age = 5.050
196
+
197
+ self.assertTrue(file.has_changed())
198
+ self.assertFalse(file.is_stable())
199
+ time.sleep(stable_age) # just over a threshold value passes...
200
+ self.assertTrue(file.has_changed())
201
+ self.assertFalse(file.is_stable())
202
+
203
+ file.restat() # restat.
204
+ self.assertTrue(file.is_stable())
205
+ self.assertFalse(file.has_changed())
206
+
207
+ self.assertEqual(file.digest(), b"4AB299C8AD6ED14F31923DD94F8B5F5CB89DFB54")
208
+
209
+ # Check we can read from file
210
+ self.assertEqual(file.input(), 0)
211
+ #chunk = file.read(1000100, 0)
212
+ #self.assertTrue(chunk)
213
+ #self.assertEqual(chunk.size(), 13)
214
+ #del chunk
215
+ file.close()
216
+
217
+ # Check we can read lines from file
218
+ self.assertEqual(file.input(), 0)
219
+ line = file.readln()
220
+ self.assertEqual(line, b"Hello, World")
221
+ line = file.readln()
222
+ self.assertIsNone(line)
223
+ file.close()
224
+
225
+ # Try some fun with symbolic links
226
+ link = Zfile(b"./this/is/a/test", b"bilbo.ln")
227
+ self.assertTrue(link)
228
+ self.assertEqual(link.output(), 0)
229
+ if PY3:
230
+ with link.handle() as hdl: # Avoid ResourceWarning: unclosed file.
231
+ hdl.write(b"./this/is/a/test/bilbo\n")
232
+ else:
233
+ link.handle().write(b"./this/is/a/test/bilbo\n")
234
+
235
+ del link
236
+
237
+ link = Zfile(b"./this/is/a/test", b"bilbo.ln")
238
+ self.assertTrue(link)
239
+ self.assertEqual(link.input(), 0)
240
+ #chunk = link.read(1000100, 0)
241
+ #self.assertTrue(chunk)
242
+ #self.assertEqual(chunk.size(), 13)
243
+ #del chunk
244
+ del link
245
+
246
+ # Remove file and directory
247
+ dir = Zdir(b"./this", None)
248
+ self.assertTrue(dir)
249
+ self.assertEqual(dir.cursize(), 26)
250
+ dir.remove(True)
251
+ self.assertEqual(dir.cursize(), 0)
252
+ del dir
253
+
254
+ # Check we can no longer read from file
255
+ self.assertTrue(file.is_readable())
256
+ file.restat()
257
+ self.assertFalse(file.is_readable())
258
+ self.assertEqual(file.input(), -1)
259
+ del file
260
+
261
+ def test_zframe(self):
262
+ # Create two PAIR sockets and connect over inproc
263
+ output = Zsock.new_pair (b"@inproc://zframe.test")
264
+ self.assertTrue(output)
265
+ input = Zsock.new_pair (b">inproc://zframe.test")
266
+ self.assertTrue(input)
267
+
268
+ # Send five different frames, test Zframe.MORE
269
+ for frame_nbr in range(5):
270
+ frame = Zframe(b"Hello", 5)
271
+ self.assertTrue(frame)
272
+ self.assertEqual(Zframe.send(frame, output, Zframe.MORE), 0)
273
+
274
+ # Send same frame five times, test ZFRAME_REUSE
275
+ frame = Zframe(b"Hello", 5)
276
+ self.assertTrue(frame)
277
+ for frame_nbr in range(5):
278
+ self.assertEqual(Zframe.send(frame, output, Zframe.MORE + Zframe.REUSE), 0)
279
+ self.assertTrue(frame)
280
+ copy = frame.dup()
281
+ self.assertTrue(frame.eq(copy))
282
+ self.assertEqual(copy.size(), 5)
283
+ del copy
284
+ self.assertFalse(frame.eq(None))
285
+
286
+ # Test zframe_new_empty
287
+ frame = Zframe.new_empty()
288
+ self.assertTrue(frame)
289
+ self.assertEqual(frame.size(), 0)
290
+ del frame
291
+
292
+ # Send END frame
293
+ frame = Zframe(b"NOT", 3)
294
+ self.assertTrue(frame)
295
+ frame.reset(b"END", 3)
296
+ string = frame.strhex()
297
+ self.assertEqual(string, b"454E44")
298
+ string = frame.strdup()
299
+ self.assertEqual(string, b"END")
300
+ self.assertEqual(Zframe.send(frame, output, 0), 0)
301
+
302
+ # Read and count until we receive END
303
+ frame_nbr = 0
304
+ while True:
305
+ frame = Zframe.recv(input)
306
+ if frame.streq(b"END"):
307
+ break
308
+
309
+ self.assertTrue(frame.more())
310
+ frame.set_more(0)
311
+ self.assertEqual(frame.more(), 0)
312
+ frame_nbr += 1
313
+ self.assertEqual(frame_nbr, 10)
314
+
315
+ def test_zhash(self):
316
+ hash = Zhash()
317
+ self.assertTrue(hash)
318
+ self.assertEqual(hash.size(), 0)
319
+ self.assertFalse(hash.first())
320
+ self.assertFalse(hash.cursor())
321
+
322
+ # Insert some items
323
+ # Note the bindings for zhash are pretty pointless for actually storing
324
+ # things - we have to keep our ctypes buffer objects around to keep the
325
+ # memory alive
326
+ buffer1 = create_string_buffer(b"dead beef")
327
+ self.assertEqual(hash.insert(b"DEADBEEF", buffer1), 0)
328
+ self.assertEqual(string_at(hash.first()), b"dead beef")
329
+ self.assertEqual(hash.cursor(), b"DEADBEEF")
330
+
331
+ buffer2 = create_string_buffer(b"a bad cafe")
332
+ self.assertEqual(hash.insert(b"ABADCAFE", buffer2), 0)
333
+ buffer3 = create_string_buffer(b"coded bad")
334
+ self.assertEqual(hash.insert(b"C0DEDBAD", buffer3), 0)
335
+ buffer4 = create_string_buffer(b"dead food")
336
+ self.assertEqual(hash.insert(b"DEADF00D", b"dead food"), 0)
337
+ self.assertEqual(hash.size(), 4)
338
+
339
+ # Look for existing items
340
+ self.assertEqual(string_at(hash.lookup(b"DEADBEEF")), b"dead beef")
341
+ self.assertEqual(string_at(hash.lookup(b"ABADCAFE")), b"a bad cafe")
342
+ self.assertEqual(string_at(hash.lookup(b"DEADF00D")), b"dead food")
343
+
344
+ # Look for non-existent items
345
+ self.assertFalse(hash.lookup(b"foo"))
346
+
347
+ # Try to insert duplicate items
348
+ self.assertEqual(hash.insert(b"DEADBEEF", b"foo"), -1)
349
+ self.assertEqual(string_at(hash.lookup(b"DEADBEEF")), b"dead beef")
350
+
351
+ # Some rename tests
352
+
353
+ # Valid rename, key is now LIVEBEEF
354
+ self.assertEqual(hash.rename(b"DEADBEEF", b"LIVEBEEF"), 0)
355
+ self.assertEqual(string_at(hash.lookup(b"LIVEBEEF")), b"dead beef")
356
+
357
+ # Trying to rename an unknown item to a non-existent key
358
+ self.assertEqual(hash.rename(b"WHATBEEF", b"NONESUCH"), -1)
359
+
360
+ # Trying to rename an unknown item to an existing key
361
+ self.assertEqual(hash.rename(b"WHATBEEF", b"LIVEBEEF"), -1)
362
+ self.assertEqual(string_at(hash.lookup(b"LIVEBEEF")), b"dead beef")
363
+
364
+ # Trying to rename an existing item to another existing item
365
+ self.assertEqual(hash.rename(b"LIVEBEEF", b"ABADCAFE"), -1)
366
+ self.assertEqual(string_at(hash.lookup(b"LIVEBEEF")), b"dead beef")
367
+ self.assertEqual(string_at(hash.lookup(b"ABADCAFE")), b"a bad cafe")
368
+
369
+ # Test keys method
370
+ keys = hash.keys()
371
+ self.assertEqual(keys.size(), 4)
372
+ del keys
373
+
374
+ # Test dup method
375
+ copy = hash.dup()
376
+ self.assertEqual(copy.size(), 4)
377
+ self.assertEqual(string_at(copy.lookup(b"LIVEBEEF")), b"dead beef")
378
+ del copy
379
+
380
+ # Test pack/unpack methods
381
+ frame = hash.pack()
382
+ copy = Zhash.unpack(frame)
383
+ del frame
384
+ self.assertEqual(copy.size(), 4)
385
+ self.assertEqual(string_at(copy.lookup(b"LIVEBEEF")), b"dead beef")
386
+ del copy
387
+
388
+ # Test save and load
389
+ hash.comment(b"This is a test file")
390
+ hash.comment(b"Created by %s", b"czmq_selftest")
391
+ hash.save(b".cache")
392
+ copy = Zhash()
393
+ self.assertTrue(copy)
394
+ copy.load(b".cache")
395
+ self.assertEqual(string_at(copy.lookup(b"LIVEBEEF")), b"dead beef")
396
+ del copy
397
+ os.remove(b".cache")
398
+
399
+ # Delete a item
400
+ hash.delete(b"LIVEBEEF")
401
+ self.assertFalse(hash.lookup(b"LIVEBEEF"))
402
+ self.assertEqual(hash.size(), 3)
403
+
404
+ # Test autofree automatically copies and frees string values
405
+ # This means the python string doesn't need to persist, like above
406
+ hash = Zhash()
407
+ self.assertTrue(hash)
408
+ hash.autofree()
409
+ self.assertEqual(hash.insert(b"key1", b"This is a string"), 0)
410
+ self.assertEqual(hash.insert(b"key2", b"Ring a ding ding"), 0)
411
+ self.assertEqual(string_at(hash.lookup(b"key1")), b"This is a string")
412
+ self.assertEqual(string_at(hash.lookup(b"key2")), b"Ring a ding ding")
413
+ del hash
414
+
415
+ def test_zlist(self):
416
+ def _zlist_free(data):
417
+ x = Zlist(c_void_p(data), True)
418
+ del x
419
+ zlist_free = zlist_free_fn(_zlist_free)
420
+
421
+ def _compare(item1, item2):
422
+ return cmp(string_at(item1), string_at(item2)) > 0
423
+ zlist_compare = zlist_compare_fn(_compare)
424
+
425
+ list = Zlist()
426
+ self.assertTrue(list)
427
+ self.assertEqual(list.size(), 0)
428
+
429
+ # Three items we'll use as test data
430
+ # List items are void *, not particularly strings
431
+ cheese = create_string_buffer(b"boursin")
432
+ bread = create_string_buffer(b"baguette")
433
+ wine = create_string_buffer(b"bordeaux")
434
+
435
+ list.append(cheese)
436
+ self.assertEqual(list.size(), 1)
437
+ list.append(bread)
438
+ self.assertEqual(list.size(), 2)
439
+ list.append(wine)
440
+ self.assertEqual(list.size(), 3)
441
+
442
+ self.assertEqual(list.head().value, addressof(cheese))
443
+ self.assertEqual(list.next().value, addressof(cheese))
444
+
445
+ self.assertEqual(list.first().value, addressof(cheese))
446
+ self.assertEqual(list.tail().value, addressof(wine))
447
+ self.assertEqual(list.next().value, addressof(bread))
448
+
449
+ self.assertEqual(list.first().value, addressof(cheese))
450
+ self.assertEqual(list.next().value, addressof(bread))
451
+ self.assertEqual(list.next().value, addressof(wine))
452
+ self.assertFalse(list.next())
453
+ # After we reach end of list, next wraps around
454
+ self.assertEqual(list.next().value, addressof(cheese))
455
+ self.assertEqual(list.size(), 3)
456
+
457
+ list.remove(wine)
458
+ self.assertEqual(list.size(), 2)
459
+
460
+ self.assertEqual(list.first().value, addressof(cheese))
461
+ list.remove(cheese)
462
+ self.assertEqual(list.size(), 1)
463
+ self.assertEqual(list.first().value, addressof(bread))
464
+
465
+ list.remove(bread)
466
+ self.assertEqual(list.size(), 0)
467
+
468
+ list.append(cheese)
469
+ list.append(bread)
470
+ self.assertEqual(list.last().value, addressof(bread))
471
+ list.remove(bread)
472
+ self.assertEqual(list.last().value, addressof(cheese))
473
+ list.remove(cheese)
474
+ self.assertFalse(list.last())
475
+
476
+ list.push(cheese)
477
+ self.assertEqual(list.size(), 1)
478
+ self.assertEqual(list.first().value, addressof(cheese))
479
+
480
+ list.push(bread)
481
+ self.assertEqual(list.size(), 2)
482
+ self.assertEqual(list.first().value, addressof(bread))
483
+ self.assertEqual(list.item().value, addressof(bread))
484
+
485
+ list.append(wine)
486
+ self.assertEqual(list.size(), 3)
487
+ self.assertEqual(list.first().value, addressof(bread))
488
+
489
+ sub_list = list.dup()
490
+ self.assertTrue(sub_list)
491
+ self.assertEqual(sub_list.size(), 3)
492
+
493
+ list.sort(zlist_compare)
494
+ self.assertEqual(list.pop().value, addressof(bread))
495
+ self.assertEqual(list.pop().value, addressof(wine))
496
+ self.assertEqual(list.pop().value, addressof(cheese))
497
+ self.assertEqual(list.size(), 0)
498
+
499
+ self.assertEqual(sub_list.size(), 3)
500
+ list.push(sub_list)
501
+ sub_list_2 = sub_list.dup()
502
+ list.append(sub_list_2)
503
+
504
+ ret = list.freefn(sub_list, zlist_free, False)
505
+ sub_list.allow_destruct = False # Can't double-free
506
+ self.assertEqual(ret.value, cast(sub_list._as_parameter_, c_void_p).value)
507
+
508
+ ret = list.freefn(sub_list_2, zlist_free, True)
509
+ sub_list_2.allow_destruct = False # Can't double-free
510
+ self.assertEqual(ret.value, cast(sub_list_2._as_parameter_, c_void_p).value)
511
+ del list
512
+
513
+ # Test autofree functionality
514
+ list = Zlist()
515
+ self.assertTrue(list)
516
+ list.autofree()
517
+ list.push(b"bread")
518
+ list.append(b"cheese")
519
+ self.assertEqual(list.size(), 2)
520
+ self.assertEqual(string_at(list.first()), b"bread")
521
+ item = list.pop()
522
+ self.assertEqual(string_at(item), b"bread")
523
+ libc.free(item)
524
+ item = list.pop()
525
+ self.assertEqual(string_at(item), b"cheese")
526
+ libc.free(item)
527
+
528
+ def test_zloop(self):
529
+ def _cancel_timer_event(loop, timer_id, arg):
530
+ # We are handling timer 2, and will cancel timer 1
531
+ cancel_timer_id = POINTER(c_int)(c_int(arg)).contents
532
+ return Zloop(loop, False).timer_end(cancel_timer_id)
533
+ cancel_timer_event = zloop_timer_fn(_cancel_timer_event)
534
+
535
+ def _timer_event(loop, timer_id, arg):
536
+ output.send(b's', b"PING")
537
+ return 0
538
+ timer_event = zloop_timer_fn(_timer_event)
539
+
540
+ def _socket_event(loop, handle, arg):
541
+ # Just end the reactor
542
+ return -1
543
+ socket_event = zloop_reader_fn(_socket_event)
544
+
545
+ def _timer_event3(loop, timer_id, called):
546
+ c_bool_p(called).contents = True
547
+ # end the reactor
548
+ return -1
549
+ timer_event3 = zloop_timer_fn(_timer_event3)
550
+
551
+ # Create two PAIR sockets and connect over inproc
552
+ output = Zsock.new_pair(b"@inproc://zloop.test")
553
+ self.assertTrue(output)
554
+ input = Zsock.new_pair(b">inproc://zloop.test")
555
+ self.assertTrue(input)
556
+
557
+ loop = Zloop()
558
+ self.assertTrue(loop)
559
+ loop.set_verbose(self.verbose)
560
+
561
+ # Create a timer that will be cancelled
562
+ timer_id = c_int(loop.timer(1000, 1, timer_event, None))
563
+ loop.timer(5, 1, cancel_timer_event, byref(timer_id))
564
+
565
+ # After 20 msecs, send a ping message to output3
566
+ loop.timer(20, 1, timer_event, output)
567
+
568
+ # Set up some tickets that will never expire
569
+ loop.set_ticket_delay(10000)
570
+ ticket1 = loop.ticket(timer_event, None)
571
+ ticket2 = loop.ticket(timer_event, None)
572
+ ticket3 = loop.ticket(timer_event, None)
573
+
574
+ # When we get the ping message, end the reactor
575
+ self.assertEqual(loop.reader(input, socket_event, None), 0)
576
+ loop.reader_set_tolerant(input)
577
+ loop.start()
578
+
579
+ loop.ticket_delete(ticket1)
580
+ loop.ticket_delete(ticket2)
581
+ loop.ticket_delete(ticket3)
582
+ del loop
583
+
584
+ # Check whether loop properly ignores zsys_interrupted flag
585
+ # when asked to
586
+ #loop = Zloop()
587
+
588
+ #timer_event_called = c_bool(False)
589
+ #loop.timer(1, 1, timer_event3, byref(timer_event_called))
590
+
591
+ #zsys_interrupted = 1
592
+ #zloop_start (loop)
593
+ ## zloop returns immediately without giving any handler a chance to run
594
+ #self.assertFalse(timer_event_called)
595
+
596
+ #zloop_ignore_interrupts (loop)
597
+ #zloop_start (loop)
598
+ # zloop runs the handler which will terminate the loop
599
+ #self.assertTrue(timer_event_called)
600
+ #zsys_interrupted = 0
601
+
602
+ # cleanup
603
+ #del loop
604
+ #self.assertFalse(loop)
605
+
606
+ def test_zmsg(self):
607
+ # Create two PAIR sockets and connect over inproc
608
+ output = Zsock.new_pair(b"@inproc://zmsg.test")
609
+ self.assertTrue(output)
610
+ input_ = Zsock.new_pair(b">inproc://zmsg.test")
611
+ self.assertTrue(input_)
612
+
613
+ # Test send and receive of single-frame message
614
+ msg = Zmsg()
615
+ self.assertTrue(msg)
616
+ frame = Zframe(b"Hello", 5)
617
+ self.assertTrue(frame)
618
+ msg.prepend(frame)
619
+ self.assertEqual(msg.size(), 1)
620
+ self.assertEqual(msg.content_size(), 5)
621
+ self.assertEqual(Zmsg.send(msg, output), 0)
622
+ self.assertFalse(msg)
623
+
624
+ msg = Zmsg.recv(input_)
625
+ self.assertTrue(msg)
626
+ self.assertEqual(msg.size(), 1)
627
+ self.assertEqual(msg.content_size(), 5)
628
+ del msg
629
+
630
+ # Test send and receive of multi-frame message
631
+ msg = Zmsg()
632
+ self.assertTrue(msg)
633
+ self.assertEqual(msg.addmem(b"Frame0", 6), 0)
634
+ self.assertEqual(msg.addmem(b"Frame1", 6), 0)
635
+ self.assertEqual(msg.addmem(b"Frame2", 6), 0)
636
+ self.assertEqual(msg.addmem(b"Frame3", 6), 0)
637
+ self.assertEqual(msg.addmem(b"Frame4", 6), 0)
638
+ self.assertEqual(msg.addmem(b"Frame5", 6), 0)
639
+ self.assertEqual(msg.addmem(b"Frame6", 6), 0)
640
+ self.assertEqual(msg.addmem(b"Frame7", 6), 0)
641
+ self.assertEqual(msg.addmem(b"Frame8", 6), 0)
642
+ self.assertEqual(msg.addmem(b"Frame9", 6), 0)
643
+ copy = msg.dup()
644
+ self.assertTrue(copy)
645
+ self.assertEqual(Zmsg.send(copy, output), 0)
646
+ self.assertEqual(Zmsg.send(msg, output), 0)
647
+
648
+ copy = Zmsg.recv(input_)
649
+ self.assertTrue(copy)
650
+ self.assertEqual(copy.size(), 10)
651
+ self.assertEqual(copy.content_size(), 60)
652
+ del copy
653
+
654
+ msg = Zmsg.recv(input_)
655
+ self.assertTrue(msg)
656
+ self.assertEqual(msg.size(), 10)
657
+ self.assertEqual(msg.content_size(), 60)
658
+
659
+ # Save to a file, read back
660
+ f = open("zmsg.test", "w")
661
+ self.assertEqual(msg.save(f), 0)
662
+ f.close()
663
+
664
+ f = open ("zmsg.test", "r")
665
+ self.assertEqual(msg.save(f), -1)
666
+ f.close()
667
+ del msg
668
+
669
+ f = open ("zmsg.test", "r")
670
+ msg = Zmsg.load(f)
671
+ self.assertTrue(msg)
672
+ f.close()
673
+ os.remove ("zmsg.test")
674
+ self.assertEqual(msg.size(), 10)
675
+ self.assertEqual(msg.content_size(), 60)
676
+
677
+ # Remove all frames except first and last
678
+ for frame_nbr in range(8):
679
+ msg.first()
680
+ frame = msg.next()
681
+ msg.remove(frame)
682
+
683
+ # Test message frame manipulation
684
+ self.assertEqual(msg.size(), 2)
685
+ frame = msg.last()
686
+ self.assertTrue(frame.streq(b"Frame9"))
687
+ self.assertEqual(msg.content_size(), 12)
688
+ frame = Zframe(b"Address", 7)
689
+ self.assertTrue(frame)
690
+ msg.prepend(frame)
691
+ self.assertEqual(msg.size(), 3)
692
+ self.assertEqual(msg.addstr(b"Body"), 0)
693
+ self.assertEqual(msg.size(), 4)
694
+ frame = msg.pop()
695
+ del frame
696
+ self.assertEqual(msg.size(), 3)
697
+ body = msg.popstr()
698
+ self.assertEqual(body, b"Frame0")
699
+ del msg
700
+
701
+ # Test encoding/decoding
702
+ msg = Zmsg()
703
+ self.assertTrue(msg)
704
+ blank = create_string_buffer(100000)
705
+ self.assertEqual(msg.addmem(blank, 0), 0)
706
+ self.assertEqual(msg.addmem(blank, 1), 0)
707
+ self.assertEqual(msg.addmem(blank, 253), 0)
708
+ self.assertEqual(msg.addmem(blank, 254), 0)
709
+ self.assertEqual(msg.addmem(blank, 255), 0)
710
+ self.assertEqual(msg.addmem(blank, 256), 0)
711
+ self.assertEqual(msg.addmem(blank, 65535), 0)
712
+ self.assertEqual(msg.addmem(blank, 65536), 0)
713
+ self.assertEqual(msg.addmem(blank, 65537), 0)
714
+ del blank
715
+ self.assertEqual(msg.size(), 9)
716
+ frame = msg.encode()
717
+ del msg
718
+ msg = Zmsg.decode(frame)
719
+ self.assertTrue(msg)
720
+ del msg
721
+
722
+ # Test submessages
723
+ msg = Zmsg()
724
+ self.assertTrue(msg)
725
+ submsg = Zmsg()
726
+ msg.pushstr(b"matr")
727
+ submsg.pushstr(b"joska")
728
+ self.assertEqual(msg.addmsg(submsg), 0)
729
+ self.assertFalse(submsg)
730
+ submsg = msg.popmsg()
731
+ self.assertFalse(submsg) # string "matr" is not encoded zmsg_t, so was discarded
732
+ submsg = msg.popmsg()
733
+ self.assertTrue(submsg)
734
+ body = submsg.popstr()
735
+ self.assertEqual(body, b"joska")
736
+ del submsg
737
+ frame = msg.pop()
738
+ self.assertFalse(frame)
739
+ del msg
740
+
741
+ # Test comparison of two messages
742
+ msg = Zmsg()
743
+ msg.addstr(b"One")
744
+ msg.addstr(b"Two")
745
+ msg.addstr(b"Three")
746
+ msg_other = Zmsg()
747
+ msg_other.addstr(b"One")
748
+ msg_other.addstr(b"Two")
749
+ msg_other.addstr(b"One-Hundred")
750
+ msg_dup = msg.dup()
751
+ empty_msg = Zmsg()
752
+ empty_msg_2 = Zmsg()
753
+ self.assertTrue(msg.eq(msg_dup))
754
+ self.assertFalse(msg.eq(msg_other))
755
+ self.assertTrue(empty_msg.eq(empty_msg_2))
756
+ self.assertFalse(msg.eq(None))
757
+ del msg
758
+ del msg_other
759
+ del msg_dup
760
+ del empty_msg
761
+
762
+ # Test signal messages
763
+ msg = Zmsg.new_signal(0)
764
+ self.assertEqual(msg.signal(), 0)
765
+ del msg
766
+ msg = Zmsg.new_signal(-1)
767
+ self.assertEqual(msg.signal(), 255)
768
+ del msg
769
+
770
+ # Now try methods on an empty message
771
+ msg = Zmsg()
772
+ self.assertTrue(msg)
773
+ self.assertEqual(msg.size(), 0)
774
+ self.assertFalse(msg.first())
775
+ self.assertFalse(msg.last())
776
+ self.assertFalse(msg.next())
777
+ self.assertFalse(msg.pop())
778
+ # Sending an empty message is valid and destroys the message
779
+ self.assertEqual(Zmsg.send(msg, output), 0)
780
+ self.assertFalse(msg)
781
+
782
+ def test_zsock(self):
783
+ writer = Zsock.new_push (b"@tcp://127.0.0.1:5560")
784
+ self.assertTrue(writer)
785
+ self.assertTrue(Zsock.resolve(writer) != writer)
786
+ self.assertEqual(writer.type_str(), b"PUSH")
787
+
788
+ # Check unbind
789
+ self.assertEqual(writer.unbind(b"tcp://127.0.0.1:%d", 5560), 0)
790
+
791
+ # In some cases and especially when running under Valgrind, doing
792
+ # a bind immediately after an unbind causes an EADDRINUSE error.
793
+ # Even a short sleep allows the OS to release the port for reuse.
794
+ time.sleep(0.1)
795
+
796
+ # Bind again
797
+ self.assertEqual(writer.bind(b"tcp://127.0.0.1:%d", 5560), 5560)
798
+ self.assertEqual(writer.endpoint(), b"tcp://127.0.0.1:5560")
799
+ #endif
800
+
801
+ reader = Zsock.new_pull (b">tcp://127.0.0.1:5560")
802
+ self.assertTrue(reader)
803
+ self.assertTrue(Zsock.resolve(reader) != reader)
804
+ self.assertEqual(reader.type_str(), b"PULL")
805
+
806
+ # Basic Hello, World
807
+ writer.send(b's', b"Hello, World")
808
+ msg = Zmsg.recv(reader)
809
+ self.assertTrue(msg)
810
+ string = msg.popstr()
811
+ self.assertEqual(string, b"Hello, World")
812
+ del msg
813
+
814
+ # Test resolve FD
815
+ #fd = Zsock.fd(reader)
816
+ #self.assertEqual(zsock_resolve (fd), None)
817
+
818
+ # Test binding to ephemeral ports, sequential and random
819
+ DYNAMIC_FIRST = 0xc000
820
+ DYNAMIC_LAST = 0xffff
821
+ port = writer.bind(b"tcp://127.0.0.1:*")
822
+ self.assertTrue(port >= DYNAMIC_FIRST and port <= DYNAMIC_LAST)
823
+ port = writer.bind(b"tcp://127.0.0.1:*[50000-]")
824
+ self.assertTrue(port >= 50000 and port <= DYNAMIC_LAST)
825
+ port = writer.bind(b"tcp://127.0.0.1:*[-50001]")
826
+ self.assertTrue(port >= DYNAMIC_FIRST and port <= 50001)
827
+ port = writer.bind(b"tcp://127.0.0.1:*[60000-60050]")
828
+ self.assertTrue(port >= 60000 and port <= 60050)
829
+
830
+ port = writer.bind(b"tcp://127.0.0.1:!")
831
+ self.assertTrue(port >= DYNAMIC_FIRST and port <= DYNAMIC_LAST)
832
+ port = writer.bind(b"tcp://127.0.0.1:![50000-]")
833
+ self.assertTrue(port >= 50000 and port <= DYNAMIC_LAST)
834
+ port = writer.bind(b"tcp://127.0.0.1:![-50001]")
835
+ self.assertTrue(port >= DYNAMIC_FIRST and port <= 50001)
836
+ port = writer.bind(b"tcp://127.0.0.1:![60000-60050]")
837
+ self.assertTrue(port >= 60000 and port <= 60050)
838
+
839
+ # Test zsock_attach method
840
+ server = Zsock.new_dealer(b"")
841
+ self.assertTrue(server)
842
+ self.assertEqual(server.attach(b"@inproc://myendpoint,tcp://127.0.0.1:5556,inproc://others", True), 0)
843
+ self.assertEqual(server.attach(b"", False), 0)
844
+ self.assertEqual(server.attach(None, True), 0)
845
+ self.assertEqual(server.attach(b">a,@b, c,, ", False), -1)
846
+ del server
847
+
848
+ # Test zsock_endpoint method
849
+ self.assertEqual(writer.bind(b"inproc://test.%s", b"writer"), 0)
850
+ self.assertEqual(writer.endpoint(), b"inproc://test.writer")
851
+
852
+ # Test error state when connecting to an invalid socket type
853
+ # ('txp://' instead of 'tcp://', typo intentional)
854
+ self.assertEqual(reader.connect(b"txp://127.0.0.1:5560"), -1)
855
+
856
+ # Test signal/wait methods
857
+ self.assertEqual(writer.signal(123), 0)
858
+ self.assertEqual(reader.wait(), 123)
859
+
860
+ # Test zsock_send/recv pictures
861
+ number1 = 123
862
+ number2 = 123 * 123
863
+ number4 = 123 * 123 * 123
864
+ number8 = 123 * 123 * 123 * 123
865
+
866
+ #chunk = zchunk_new (b"HELLO", 5)
867
+ #self.assertTrue(chunk)
868
+ frame = Zframe(b"WORLD", 5)
869
+ self.assertTrue(frame)
870
+ #hash = zhashx_new ()
871
+ #self.assertTrue(hash)
872
+ #hash.autofree()
873
+ #hash.insert(b"1", b"value A")
874
+ #hash.insert(b"2", b"value B")
875
+ original = create_string_buffer(b"pointer")
876
+
877
+ # Test zsock_recv into each supported type
878
+ #writer.send(b"i1248zsbcfhp",
879
+ # -12345, number1, number2, number4, number8,
880
+ # b"This is a string", b"ABCDE", 5, chunk, frame, hash, original)
881
+ writer.send(b"i1248zsbfp",
882
+ -12345, number1, number2, number4, c_longlong(number8),
883
+ b"This is a string", b"ABCDE", 5, frame, original)
884
+ del frame
885
+ #del chunk
886
+ #del hash
887
+
888
+ integer = c_int()
889
+ number1 = c_byte()
890
+ number2 = c_short()
891
+ number4 = c_int()
892
+ number8 = c_longlong()
893
+ string = c_char_p()
894
+ data = POINTER(c_ubyte)()
895
+ size = c_size_t()
896
+ #chunk = zchunk_p()
897
+ frame = Zframe(c_void_p(), True)
898
+ #hash = POINTER(zhashx_p)
899
+ pointer = c_void_p()
900
+ #rc = reader.recv(b"i1248zsbcfhp",
901
+ # byref(integer), byref(number1), byref(number2), byref(number4), byref(number8),
902
+ # byref(string), byref(data), byref(size), byref(chunk), byref(frame), byref(hash), byref(pointer))
903
+ rc = reader.recv(b"i1248zsbfp",
904
+ byref(integer), byref(number1), byref(number2), byref(number4), byref(number8),
905
+ byref(string), byref(data), byref(size), byref(frame._as_parameter_), byref(pointer))
906
+ self.assertEqual(rc, 0)
907
+ self.assertEqual(integer.value, -12345)
908
+ self.assertEqual(number1.value, 123)
909
+ self.assertEqual(number2.value, 123 * 123)
910
+ self.assertEqual(number4.value, 123 * 123 * 123)
911
+ self.assertEqual(number8.value, 123 * 123 * 123 * 123)
912
+ self.assertEqual(string_at(string), b"This is a string")
913
+ self.assertEqual(string_at(data, size.value), b"ABCDE")
914
+ self.assertEqual(size.value, 5)
915
+ #self.assertEqual(memcmp (chunk.data(), b"HELLO", 5), 0)
916
+ #self.assertEqual(chunk.size(), 5)
917
+ self.assertTrue(frame.streq(b"WORLD"))
918
+ self.assertEqual(frame.size(), 5)
919
+ #value = string_at(hash.lookup(b"1"))
920
+ #self.assertEqual(value, b"value A")
921
+ #value = string_at(hash.lookup(b"2"))
922
+ #self.assertEqual(value, b"value B")
923
+ self.assertEqual(addressof(original), pointer.value)
924
+ libc.free (string)
925
+ libc.free (data)
926
+ del frame
927
+ #del chunk
928
+ #del hash
929
+
930
+ # Test zsock_recv of short message this lets us return a failure
931
+ # with a status code and then nothing else the receiver will get
932
+ # the status code and None/zero for all other values
933
+ writer.send(b"i", -1)
934
+ #reader.recv(b"izsbcfp",
935
+ # byref(integer), byref(string), byref(data), byref(size), byref(chunk), byref(frame), byref(pointer))
936
+ frame = Zframe(c_void_p(), True)
937
+ reader.recv(b"izsbfp",
938
+ byref(integer), byref(string), byref(data), byref(size), byref(frame._as_parameter_), byref(pointer))
939
+ self.assertEqual(integer.value, -1)
940
+ self.assertEqual(string.value, None)
941
+ self.assertFalse(data)
942
+ self.assertEqual(size.value, 0)
943
+ #self.assertEqual(chunk, None)
944
+ self.assertFalse(frame)
945
+ self.assertEqual(pointer.value, None)
946
+
947
+ msg = Zmsg()
948
+ msg.addstr(b"frame 1")
949
+ msg.addstr(b"frame 2")
950
+ writer.send(b"szm", b"header", msg)
951
+ del msg
952
+
953
+ msg = Zmsg(c_void_p(), True)
954
+ reader.recv(b"szm", byref(string), byref(msg._as_parameter_))
955
+
956
+ self.assertEqual(string_at(string), b"header")
957
+ self.assertEqual(msg.size(), 2)
958
+ self.assertEqual(msg.popstr(), b"frame 1")
959
+ self.assertEqual(msg.popstr(), b"frame 2")
960
+ #zstr_free (byref(string))
961
+ libc.free(string)
962
+ del msg
963
+
964
+ # Test zsock_recv with null arguments
965
+ #chunk = zchunk_new (b"HELLO", 5)
966
+ #self.assertTrue(chunk)
967
+ frame = Zframe(b"WORLD", 5)
968
+ self.assertTrue(frame)
969
+ #writer.send(b"izsbcfp",
970
+ # -12345, b"This is a string", b"ABCDE", 5, chunk, frame, original)
971
+ writer.send(b"izsbfp",
972
+ -12345, b"This is a string", b"ABCDE", 5, frame, original)
973
+ del frame
974
+ #del chunk
975
+ #reader.recv(b"izsbcfp", byref(integer), None, None, None, byref(chunk), None, None)
976
+ reader.recv(b"izsbcfp", byref(integer), None, None, None, None, None, None)
977
+ self.assertEqual(integer.value, -12345)
978
+ #self.assertEqual(chunk.data(), b"HELLO", 5), 0)
979
+ #self.assertEqual(chunk.size(), 5)
980
+ #del chunk
981
+
982
+ # Test zsock_bsend/brecv pictures with binary encoding
983
+ frame = Zframe(b"Hello", 5)
984
+ #chunk = Zchunk(b"World", 5)
985
+
986
+ msg = Zmsg()
987
+ msg.addstr(b"Hello")
988
+ msg.addstr(b"World")
989
+
990
+ #writer.bsend(b"1248sSpcfm",
991
+ # number1, number2, number4, number8,
992
+ # b"Hello, World",
993
+ # b"Goodbye cruel World!",
994
+ # original,
995
+ # chunk, frame, msg)
996
+ writer.bsend(b"1248sSpfm",
997
+ number1, number2, number4, number8,
998
+ b"Hello, World",
999
+ b"Goodbye cruel World!",
1000
+ original,
1001
+ frame, msg)
1002
+ #del chunk
1003
+ del frame
1004
+ del msg
1005
+
1006
+ frame = Zframe(c_void_p(), True)
1007
+ msg = Zmsg(c_void_p(), True)
1008
+ longstr = c_char_p()
1009
+ #reader.brecv(b"1248sSpcfm",
1010
+ # byref(number1), byref(number2), byref(number4), byref(number8),
1011
+ # byref(string), byref(longstr),
1012
+ # byref(pointer),
1013
+ # byref(chunk), byref(frame._as_parameter_), byref(msg._as_parameter_))
1014
+ reader.brecv(b"1248sSpfm",
1015
+ byref(number1), byref(number2), byref(number4), byref(number8),
1016
+ byref(string), byref(longstr),
1017
+ byref(pointer),
1018
+ byref(frame._as_parameter_), byref(msg._as_parameter_))
1019
+ self.assertEqual(number1.value, 123)
1020
+ self.assertEqual(number2.value, 123 * 123)
1021
+ self.assertEqual(number4.value, 123 * 123 * 123)
1022
+ self.assertEqual(number8.value, 123 * 123 * 123 * 123)
1023
+ self.assertEqual(string_at(string), b"Hello, World")
1024
+ self.assertEqual(string_at(longstr), b"Goodbye cruel World!")
1025
+ self.assertEqual(pointer.value, addressof(original))
1026
+ libc.free(longstr)
1027
+ #zstr_free (byref(longstr))
1028
+ #del chunk
1029
+ del frame
1030
+ del msg
1031
+
1032
+ # Check that we can send a zproto format message
1033
+ #writer.bsend(b"1111sS4", 0xAA, 0xA0, 0x02, 0x01, b"key", b"value", 1234)
1034
+ #gossip = zgossip_msg_new ()
1035
+ #gossip.recv(reader)
1036
+ #self.assertEqual(gossip.id(), ZGOSSIP_MSG_PUBLISH)
1037
+ #del gossip
1038
+
1039
+ def test_zactor(self):
1040
+ def _echo_actor(pipe, arg):
1041
+ # Do some initialization
1042
+ pipe = Zsock(pipe, False) # We don't own the pipe, so False.
1043
+ arg = string_at(arg)
1044
+ self.assertEqual(arg, b"Hello, World")
1045
+ pipe.signal(0) # startup ok
1046
+
1047
+ terminated = False
1048
+ while not terminated:
1049
+ msg = Zmsg.recv(pipe)
1050
+ if not msg:
1051
+ break # Interrupted
1052
+
1053
+ command = msg.popstr()
1054
+ if command == b"$TERM":
1055
+ # All actors must handle $TERM in this way
1056
+ terminated = True
1057
+ elif command == b"ECHO":
1058
+ # This is an example command for our test actor
1059
+ Zmsg.send(msg, pipe)
1060
+ else:
1061
+ self.fail(b"Unexpected message " + command)
1062
+ echo_actor = zactor_fn(_echo_actor) # ctypes function reference must live as long as the actor.
1063
+
1064
+ arg_buffer = create_string_buffer(b"Hello, World") # argument buffer must live as long as the actor.
1065
+ actor = Zactor(echo_actor, arg_buffer)
1066
+ self.assertTrue(actor)
1067
+
1068
+ actor.sock().send(b"ss", b"ECHO", b"This is a string");
1069
+
1070
+ result = c_char_p()
1071
+ actor.sock().recv(b"s", byref(result))
1072
+
1073
+ self.assertEqual(string_at(result), b"This is a string")
1074
+
1075
+ libc.free(result)
1076
+
1077
+ if __name__ == '__main__':
1078
+ unittest.main()