asyncengine 0.0.1.testing

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. data/README.markdown +0 -0
  2. data/asyncengine.gemspec +26 -0
  3. data/ext/asyncengine_ext/asyncengine_ruby.c +82 -0
  4. data/ext/asyncengine_ext/extconf.rb +47 -0
  5. data/ext/asyncengine_ext/libuv/AUTHORS +45 -0
  6. data/ext/asyncengine_ext/libuv/LICENSE +42 -0
  7. data/ext/asyncengine_ext/libuv/Makefile +119 -0
  8. data/ext/asyncengine_ext/libuv/README.md +88 -0
  9. data/ext/asyncengine_ext/libuv/build/gcc_version.py +20 -0
  10. data/ext/asyncengine_ext/libuv/common.gypi +176 -0
  11. data/ext/asyncengine_ext/libuv/config-mingw.mk +61 -0
  12. data/ext/asyncengine_ext/libuv/config-unix.mk +173 -0
  13. data/ext/asyncengine_ext/libuv/gyp_uv +60 -0
  14. data/ext/asyncengine_ext/libuv/include/ares.h +591 -0
  15. data/ext/asyncengine_ext/libuv/include/ares_version.h +24 -0
  16. data/ext/asyncengine_ext/libuv/include/uv-private/eio.h +403 -0
  17. data/ext/asyncengine_ext/libuv/include/uv-private/ev.h +838 -0
  18. data/ext/asyncengine_ext/libuv/include/uv-private/ngx-queue.h +106 -0
  19. data/ext/asyncengine_ext/libuv/include/uv-private/tree.h +768 -0
  20. data/ext/asyncengine_ext/libuv/include/uv-private/uv-unix.h +256 -0
  21. data/ext/asyncengine_ext/libuv/include/uv-private/uv-win.h +458 -0
  22. data/ext/asyncengine_ext/libuv/include/uv.h +1556 -0
  23. data/ext/asyncengine_ext/libuv/src/ares/AUTHORS +37 -0
  24. data/ext/asyncengine_ext/libuv/src/ares/CHANGES +1218 -0
  25. data/ext/asyncengine_ext/libuv/src/ares/CMakeLists.txt +22 -0
  26. data/ext/asyncengine_ext/libuv/src/ares/NEWS +21 -0
  27. data/ext/asyncengine_ext/libuv/src/ares/README +60 -0
  28. data/ext/asyncengine_ext/libuv/src/ares/README.cares +13 -0
  29. data/ext/asyncengine_ext/libuv/src/ares/README.msvc +142 -0
  30. data/ext/asyncengine_ext/libuv/src/ares/README.node +21 -0
  31. data/ext/asyncengine_ext/libuv/src/ares/RELEASE-NOTES +26 -0
  32. data/ext/asyncengine_ext/libuv/src/ares/TODO +23 -0
  33. data/ext/asyncengine_ext/libuv/src/ares/ares__close_sockets.c +66 -0
  34. data/ext/asyncengine_ext/libuv/src/ares/ares__get_hostent.c +263 -0
  35. data/ext/asyncengine_ext/libuv/src/ares/ares__read_line.c +71 -0
  36. data/ext/asyncengine_ext/libuv/src/ares/ares__timeval.c +111 -0
  37. data/ext/asyncengine_ext/libuv/src/ares/ares_cancel.c +63 -0
  38. data/ext/asyncengine_ext/libuv/src/ares/ares_data.c +190 -0
  39. data/ext/asyncengine_ext/libuv/src/ares/ares_data.h +65 -0
  40. data/ext/asyncengine_ext/libuv/src/ares/ares_destroy.c +105 -0
  41. data/ext/asyncengine_ext/libuv/src/ares/ares_dns.h +90 -0
  42. data/ext/asyncengine_ext/libuv/src/ares/ares_expand_name.c +200 -0
  43. data/ext/asyncengine_ext/libuv/src/ares/ares_expand_string.c +75 -0
  44. data/ext/asyncengine_ext/libuv/src/ares/ares_fds.c +63 -0
  45. data/ext/asyncengine_ext/libuv/src/ares/ares_free_hostent.c +42 -0
  46. data/ext/asyncengine_ext/libuv/src/ares/ares_free_string.c +25 -0
  47. data/ext/asyncengine_ext/libuv/src/ares/ares_getenv.c +30 -0
  48. data/ext/asyncengine_ext/libuv/src/ares/ares_getenv.h +26 -0
  49. data/ext/asyncengine_ext/libuv/src/ares/ares_gethostbyaddr.c +301 -0
  50. data/ext/asyncengine_ext/libuv/src/ares/ares_gethostbyname.c +523 -0
  51. data/ext/asyncengine_ext/libuv/src/ares/ares_getnameinfo.c +427 -0
  52. data/ext/asyncengine_ext/libuv/src/ares/ares_getopt.c +122 -0
  53. data/ext/asyncengine_ext/libuv/src/ares/ares_getopt.h +53 -0
  54. data/ext/asyncengine_ext/libuv/src/ares/ares_getsock.c +72 -0
  55. data/ext/asyncengine_ext/libuv/src/ares/ares_init.c +1809 -0
  56. data/ext/asyncengine_ext/libuv/src/ares/ares_iphlpapi.h +221 -0
  57. data/ext/asyncengine_ext/libuv/src/ares/ares_ipv6.h +78 -0
  58. data/ext/asyncengine_ext/libuv/src/ares/ares_library_init.c +142 -0
  59. data/ext/asyncengine_ext/libuv/src/ares/ares_library_init.h +42 -0
  60. data/ext/asyncengine_ext/libuv/src/ares/ares_llist.c +86 -0
  61. data/ext/asyncengine_ext/libuv/src/ares/ares_llist.h +42 -0
  62. data/ext/asyncengine_ext/libuv/src/ares/ares_mkquery.c +195 -0
  63. data/ext/asyncengine_ext/libuv/src/ares/ares_nowarn.c +181 -0
  64. data/ext/asyncengine_ext/libuv/src/ares/ares_nowarn.h +55 -0
  65. data/ext/asyncengine_ext/libuv/src/ares/ares_options.c +248 -0
  66. data/ext/asyncengine_ext/libuv/src/ares/ares_parse_a_reply.c +263 -0
  67. data/ext/asyncengine_ext/libuv/src/ares/ares_parse_aaaa_reply.c +259 -0
  68. data/ext/asyncengine_ext/libuv/src/ares/ares_parse_mx_reply.c +170 -0
  69. data/ext/asyncengine_ext/libuv/src/ares/ares_parse_ns_reply.c +182 -0
  70. data/ext/asyncengine_ext/libuv/src/ares/ares_parse_ptr_reply.c +217 -0
  71. data/ext/asyncengine_ext/libuv/src/ares/ares_parse_srv_reply.c +179 -0
  72. data/ext/asyncengine_ext/libuv/src/ares/ares_parse_txt_reply.c +201 -0
  73. data/ext/asyncengine_ext/libuv/src/ares/ares_platform.c +11035 -0
  74. data/ext/asyncengine_ext/libuv/src/ares/ares_platform.h +43 -0
  75. data/ext/asyncengine_ext/libuv/src/ares/ares_private.h +355 -0
  76. data/ext/asyncengine_ext/libuv/src/ares/ares_process.c +1295 -0
  77. data/ext/asyncengine_ext/libuv/src/ares/ares_query.c +183 -0
  78. data/ext/asyncengine_ext/libuv/src/ares/ares_rules.h +144 -0
  79. data/ext/asyncengine_ext/libuv/src/ares/ares_search.c +321 -0
  80. data/ext/asyncengine_ext/libuv/src/ares/ares_send.c +134 -0
  81. data/ext/asyncengine_ext/libuv/src/ares/ares_setup.h +199 -0
  82. data/ext/asyncengine_ext/libuv/src/ares/ares_strcasecmp.c +66 -0
  83. data/ext/asyncengine_ext/libuv/src/ares/ares_strcasecmp.h +30 -0
  84. data/ext/asyncengine_ext/libuv/src/ares/ares_strdup.c +42 -0
  85. data/ext/asyncengine_ext/libuv/src/ares/ares_strdup.h +26 -0
  86. data/ext/asyncengine_ext/libuv/src/ares/ares_strerror.c +56 -0
  87. data/ext/asyncengine_ext/libuv/src/ares/ares_timeout.c +80 -0
  88. data/ext/asyncengine_ext/libuv/src/ares/ares_version.c +11 -0
  89. data/ext/asyncengine_ext/libuv/src/ares/ares_writev.c +79 -0
  90. data/ext/asyncengine_ext/libuv/src/ares/ares_writev.h +36 -0
  91. data/ext/asyncengine_ext/libuv/src/ares/bitncmp.c +59 -0
  92. data/ext/asyncengine_ext/libuv/src/ares/bitncmp.h +26 -0
  93. data/ext/asyncengine_ext/libuv/src/ares/config_cygwin/ares_config.h +512 -0
  94. data/ext/asyncengine_ext/libuv/src/ares/config_darwin/ares_config.h +512 -0
  95. data/ext/asyncengine_ext/libuv/src/ares/config_freebsd/ares_config.h +512 -0
  96. data/ext/asyncengine_ext/libuv/src/ares/config_linux/ares_config.h +512 -0
  97. data/ext/asyncengine_ext/libuv/src/ares/config_netbsd/ares_config.h +512 -0
  98. data/ext/asyncengine_ext/libuv/src/ares/config_openbsd/ares_config.h +512 -0
  99. data/ext/asyncengine_ext/libuv/src/ares/config_sunos/ares_config.h +512 -0
  100. data/ext/asyncengine_ext/libuv/src/ares/config_win32/ares_config.h +369 -0
  101. data/ext/asyncengine_ext/libuv/src/ares/get_ver.awk +35 -0
  102. data/ext/asyncengine_ext/libuv/src/ares/inet_net_pton.c +451 -0
  103. data/ext/asyncengine_ext/libuv/src/ares/inet_net_pton.h +31 -0
  104. data/ext/asyncengine_ext/libuv/src/ares/inet_ntop.c +208 -0
  105. data/ext/asyncengine_ext/libuv/src/ares/inet_ntop.h +26 -0
  106. data/ext/asyncengine_ext/libuv/src/ares/nameser.h +203 -0
  107. data/ext/asyncengine_ext/libuv/src/ares/setup_once.h +504 -0
  108. data/ext/asyncengine_ext/libuv/src/ares/windows_port.c +22 -0
  109. data/ext/asyncengine_ext/libuv/src/unix/async.c +58 -0
  110. data/ext/asyncengine_ext/libuv/src/unix/cares.c +194 -0
  111. data/ext/asyncengine_ext/libuv/src/unix/check.c +80 -0
  112. data/ext/asyncengine_ext/libuv/src/unix/core.c +588 -0
  113. data/ext/asyncengine_ext/libuv/src/unix/cygwin.c +84 -0
  114. data/ext/asyncengine_ext/libuv/src/unix/darwin.c +341 -0
  115. data/ext/asyncengine_ext/libuv/src/unix/dl.c +91 -0
  116. data/ext/asyncengine_ext/libuv/src/unix/eio/Changes +63 -0
  117. data/ext/asyncengine_ext/libuv/src/unix/eio/LICENSE +36 -0
  118. data/ext/asyncengine_ext/libuv/src/unix/eio/Makefile.am +15 -0
  119. data/ext/asyncengine_ext/libuv/src/unix/eio/aclocal.m4 +8957 -0
  120. data/ext/asyncengine_ext/libuv/src/unix/eio/autogen.sh +3 -0
  121. data/ext/asyncengine_ext/libuv/src/unix/eio/config.h.in +86 -0
  122. data/ext/asyncengine_ext/libuv/src/unix/eio/config_cygwin.h +80 -0
  123. data/ext/asyncengine_ext/libuv/src/unix/eio/config_darwin.h +141 -0
  124. data/ext/asyncengine_ext/libuv/src/unix/eio/config_freebsd.h +81 -0
  125. data/ext/asyncengine_ext/libuv/src/unix/eio/config_linux.h +94 -0
  126. data/ext/asyncengine_ext/libuv/src/unix/eio/config_netbsd.h +81 -0
  127. data/ext/asyncengine_ext/libuv/src/unix/eio/config_openbsd.h +137 -0
  128. data/ext/asyncengine_ext/libuv/src/unix/eio/config_sunos.h +84 -0
  129. data/ext/asyncengine_ext/libuv/src/unix/eio/configure.ac +22 -0
  130. data/ext/asyncengine_ext/libuv/src/unix/eio/demo.c +194 -0
  131. data/ext/asyncengine_ext/libuv/src/unix/eio/ecb.h +370 -0
  132. data/ext/asyncengine_ext/libuv/src/unix/eio/eio.3 +3428 -0
  133. data/ext/asyncengine_ext/libuv/src/unix/eio/eio.c +2593 -0
  134. data/ext/asyncengine_ext/libuv/src/unix/eio/eio.pod +969 -0
  135. data/ext/asyncengine_ext/libuv/src/unix/eio/libeio.m4 +195 -0
  136. data/ext/asyncengine_ext/libuv/src/unix/eio/xthread.h +164 -0
  137. data/ext/asyncengine_ext/libuv/src/unix/error.c +98 -0
  138. data/ext/asyncengine_ext/libuv/src/unix/ev/Changes +388 -0
  139. data/ext/asyncengine_ext/libuv/src/unix/ev/LICENSE +36 -0
  140. data/ext/asyncengine_ext/libuv/src/unix/ev/Makefile.am +18 -0
  141. data/ext/asyncengine_ext/libuv/src/unix/ev/Makefile.in +771 -0
  142. data/ext/asyncengine_ext/libuv/src/unix/ev/README +58 -0
  143. data/ext/asyncengine_ext/libuv/src/unix/ev/aclocal.m4 +8957 -0
  144. data/ext/asyncengine_ext/libuv/src/unix/ev/autogen.sh +6 -0
  145. data/ext/asyncengine_ext/libuv/src/unix/ev/config.guess +1526 -0
  146. data/ext/asyncengine_ext/libuv/src/unix/ev/config.h.in +125 -0
  147. data/ext/asyncengine_ext/libuv/src/unix/ev/config.sub +1658 -0
  148. data/ext/asyncengine_ext/libuv/src/unix/ev/config_cygwin.h +123 -0
  149. data/ext/asyncengine_ext/libuv/src/unix/ev/config_darwin.h +122 -0
  150. data/ext/asyncengine_ext/libuv/src/unix/ev/config_freebsd.h +120 -0
  151. data/ext/asyncengine_ext/libuv/src/unix/ev/config_linux.h +141 -0
  152. data/ext/asyncengine_ext/libuv/src/unix/ev/config_netbsd.h +120 -0
  153. data/ext/asyncengine_ext/libuv/src/unix/ev/config_openbsd.h +126 -0
  154. data/ext/asyncengine_ext/libuv/src/unix/ev/config_sunos.h +122 -0
  155. data/ext/asyncengine_ext/libuv/src/unix/ev/configure +13037 -0
  156. data/ext/asyncengine_ext/libuv/src/unix/ev/configure.ac +18 -0
  157. data/ext/asyncengine_ext/libuv/src/unix/ev/depcomp +630 -0
  158. data/ext/asyncengine_ext/libuv/src/unix/ev/ev++.h +816 -0
  159. data/ext/asyncengine_ext/libuv/src/unix/ev/ev.3 +5311 -0
  160. data/ext/asyncengine_ext/libuv/src/unix/ev/ev.c +3921 -0
  161. data/ext/asyncengine_ext/libuv/src/unix/ev/ev.pod +5243 -0
  162. data/ext/asyncengine_ext/libuv/src/unix/ev/ev_epoll.c +266 -0
  163. data/ext/asyncengine_ext/libuv/src/unix/ev/ev_kqueue.c +235 -0
  164. data/ext/asyncengine_ext/libuv/src/unix/ev/ev_poll.c +148 -0
  165. data/ext/asyncengine_ext/libuv/src/unix/ev/ev_port.c +179 -0
  166. data/ext/asyncengine_ext/libuv/src/unix/ev/ev_select.c +310 -0
  167. data/ext/asyncengine_ext/libuv/src/unix/ev/ev_vars.h +203 -0
  168. data/ext/asyncengine_ext/libuv/src/unix/ev/ev_win32.c +153 -0
  169. data/ext/asyncengine_ext/libuv/src/unix/ev/ev_wrap.h +196 -0
  170. data/ext/asyncengine_ext/libuv/src/unix/ev/event.c +402 -0
  171. data/ext/asyncengine_ext/libuv/src/unix/ev/event.h +170 -0
  172. data/ext/asyncengine_ext/libuv/src/unix/ev/install-sh +294 -0
  173. data/ext/asyncengine_ext/libuv/src/unix/ev/libev.m4 +39 -0
  174. data/ext/asyncengine_ext/libuv/src/unix/ev/ltmain.sh +8413 -0
  175. data/ext/asyncengine_ext/libuv/src/unix/ev/missing +336 -0
  176. data/ext/asyncengine_ext/libuv/src/unix/ev/mkinstalldirs +111 -0
  177. data/ext/asyncengine_ext/libuv/src/unix/freebsd.c +312 -0
  178. data/ext/asyncengine_ext/libuv/src/unix/fs.c +707 -0
  179. data/ext/asyncengine_ext/libuv/src/unix/idle.c +79 -0
  180. data/ext/asyncengine_ext/libuv/src/unix/internal.h +161 -0
  181. data/ext/asyncengine_ext/libuv/src/unix/kqueue.c +127 -0
  182. data/ext/asyncengine_ext/libuv/src/unix/linux/core.c +474 -0
  183. data/ext/asyncengine_ext/libuv/src/unix/linux/inotify.c +211 -0
  184. data/ext/asyncengine_ext/libuv/src/unix/linux/syscalls.c +230 -0
  185. data/ext/asyncengine_ext/libuv/src/unix/linux/syscalls.h +87 -0
  186. data/ext/asyncengine_ext/libuv/src/unix/loop.c +58 -0
  187. data/ext/asyncengine_ext/libuv/src/unix/netbsd.c +108 -0
  188. data/ext/asyncengine_ext/libuv/src/unix/openbsd.c +295 -0
  189. data/ext/asyncengine_ext/libuv/src/unix/pipe.c +266 -0
  190. data/ext/asyncengine_ext/libuv/src/unix/prepare.c +79 -0
  191. data/ext/asyncengine_ext/libuv/src/unix/process.c +369 -0
  192. data/ext/asyncengine_ext/libuv/src/unix/stream.c +1033 -0
  193. data/ext/asyncengine_ext/libuv/src/unix/sunos.c +466 -0
  194. data/ext/asyncengine_ext/libuv/src/unix/tcp.c +327 -0
  195. data/ext/asyncengine_ext/libuv/src/unix/thread.c +154 -0
  196. data/ext/asyncengine_ext/libuv/src/unix/timer.c +127 -0
  197. data/ext/asyncengine_ext/libuv/src/unix/tty.c +146 -0
  198. data/ext/asyncengine_ext/libuv/src/unix/udp.c +670 -0
  199. data/ext/asyncengine_ext/libuv/src/unix/uv-eio.c +124 -0
  200. data/ext/asyncengine_ext/libuv/src/unix/uv-eio.h +13 -0
  201. data/ext/asyncengine_ext/libuv/src/uv-common.c +354 -0
  202. data/ext/asyncengine_ext/libuv/src/uv-common.h +87 -0
  203. data/ext/asyncengine_ext/libuv/src/win/async.c +127 -0
  204. data/ext/asyncengine_ext/libuv/src/win/cares.c +290 -0
  205. data/ext/asyncengine_ext/libuv/src/win/core.c +270 -0
  206. data/ext/asyncengine_ext/libuv/src/win/dl.c +82 -0
  207. data/ext/asyncengine_ext/libuv/src/win/error.c +132 -0
  208. data/ext/asyncengine_ext/libuv/src/win/fs-event.c +514 -0
  209. data/ext/asyncengine_ext/libuv/src/win/fs.c +1576 -0
  210. data/ext/asyncengine_ext/libuv/src/win/getaddrinfo.c +372 -0
  211. data/ext/asyncengine_ext/libuv/src/win/handle.c +225 -0
  212. data/ext/asyncengine_ext/libuv/src/win/internal.h +352 -0
  213. data/ext/asyncengine_ext/libuv/src/win/loop-watcher.c +131 -0
  214. data/ext/asyncengine_ext/libuv/src/win/pipe.c +1661 -0
  215. data/ext/asyncengine_ext/libuv/src/win/process.c +1140 -0
  216. data/ext/asyncengine_ext/libuv/src/win/req.c +174 -0
  217. data/ext/asyncengine_ext/libuv/src/win/stream.c +201 -0
  218. data/ext/asyncengine_ext/libuv/src/win/tcp.c +1282 -0
  219. data/ext/asyncengine_ext/libuv/src/win/thread.c +332 -0
  220. data/ext/asyncengine_ext/libuv/src/win/threadpool.c +73 -0
  221. data/ext/asyncengine_ext/libuv/src/win/timer.c +276 -0
  222. data/ext/asyncengine_ext/libuv/src/win/tty.c +1795 -0
  223. data/ext/asyncengine_ext/libuv/src/win/udp.c +709 -0
  224. data/ext/asyncengine_ext/libuv/src/win/util.c +719 -0
  225. data/ext/asyncengine_ext/libuv/src/win/winapi.c +117 -0
  226. data/ext/asyncengine_ext/libuv/src/win/winapi.h +4419 -0
  227. data/ext/asyncengine_ext/libuv/src/win/winsock.c +470 -0
  228. data/ext/asyncengine_ext/libuv/src/win/winsock.h +138 -0
  229. data/ext/asyncengine_ext/libuv/test/benchmark-ares.c +118 -0
  230. data/ext/asyncengine_ext/libuv/test/benchmark-getaddrinfo.c +94 -0
  231. data/ext/asyncengine_ext/libuv/test/benchmark-list.h +105 -0
  232. data/ext/asyncengine_ext/libuv/test/benchmark-ping-pongs.c +213 -0
  233. data/ext/asyncengine_ext/libuv/test/benchmark-pound.c +324 -0
  234. data/ext/asyncengine_ext/libuv/test/benchmark-pump.c +462 -0
  235. data/ext/asyncengine_ext/libuv/test/benchmark-sizes.c +40 -0
  236. data/ext/asyncengine_ext/libuv/test/benchmark-spawn.c +156 -0
  237. data/ext/asyncengine_ext/libuv/test/benchmark-tcp-write-batch.c +140 -0
  238. data/ext/asyncengine_ext/libuv/test/benchmark-thread.c +64 -0
  239. data/ext/asyncengine_ext/libuv/test/benchmark-udp-packet-storm.c +247 -0
  240. data/ext/asyncengine_ext/libuv/test/blackhole-server.c +118 -0
  241. data/ext/asyncengine_ext/libuv/test/dns-server.c +321 -0
  242. data/ext/asyncengine_ext/libuv/test/echo-server.c +370 -0
  243. data/ext/asyncengine_ext/libuv/test/fixtures/empty_file +0 -0
  244. data/ext/asyncengine_ext/libuv/test/fixtures/load_error.node +1 -0
  245. data/ext/asyncengine_ext/libuv/test/run-benchmarks.c +64 -0
  246. data/ext/asyncengine_ext/libuv/test/run-tests.c +108 -0
  247. data/ext/asyncengine_ext/libuv/test/runner-unix.c +315 -0
  248. data/ext/asyncengine_ext/libuv/test/runner-unix.h +36 -0
  249. data/ext/asyncengine_ext/libuv/test/runner-win.c +343 -0
  250. data/ext/asyncengine_ext/libuv/test/runner-win.h +42 -0
  251. data/ext/asyncengine_ext/libuv/test/runner.c +317 -0
  252. data/ext/asyncengine_ext/libuv/test/runner.h +159 -0
  253. data/ext/asyncengine_ext/libuv/test/task.h +117 -0
  254. data/ext/asyncengine_ext/libuv/test/test-async.c +216 -0
  255. data/ext/asyncengine_ext/libuv/test/test-callback-stack.c +203 -0
  256. data/ext/asyncengine_ext/libuv/test/test-connection-fail.c +148 -0
  257. data/ext/asyncengine_ext/libuv/test/test-counters-init.c +216 -0
  258. data/ext/asyncengine_ext/libuv/test/test-cwd-and-chdir.c +64 -0
  259. data/ext/asyncengine_ext/libuv/test/test-delayed-accept.c +197 -0
  260. data/ext/asyncengine_ext/libuv/test/test-dlerror.c +49 -0
  261. data/ext/asyncengine_ext/libuv/test/test-eio-overflow.c +90 -0
  262. data/ext/asyncengine_ext/libuv/test/test-error.c +59 -0
  263. data/ext/asyncengine_ext/libuv/test/test-fail-always.c +29 -0
  264. data/ext/asyncengine_ext/libuv/test/test-fs-event.c +442 -0
  265. data/ext/asyncengine_ext/libuv/test/test-fs.c +1731 -0
  266. data/ext/asyncengine_ext/libuv/test/test-get-currentexe.c +63 -0
  267. data/ext/asyncengine_ext/libuv/test/test-get-loadavg.c +36 -0
  268. data/ext/asyncengine_ext/libuv/test/test-get-memory.c +38 -0
  269. data/ext/asyncengine_ext/libuv/test/test-getaddrinfo.c +122 -0
  270. data/ext/asyncengine_ext/libuv/test/test-gethostbyname.c +189 -0
  271. data/ext/asyncengine_ext/libuv/test/test-getsockname.c +342 -0
  272. data/ext/asyncengine_ext/libuv/test/test-hrtime.c +51 -0
  273. data/ext/asyncengine_ext/libuv/test/test-idle.c +81 -0
  274. data/ext/asyncengine_ext/libuv/test/test-ipc-send-recv.c +209 -0
  275. data/ext/asyncengine_ext/libuv/test/test-ipc.c +614 -0
  276. data/ext/asyncengine_ext/libuv/test/test-list.h +371 -0
  277. data/ext/asyncengine_ext/libuv/test/test-loop-handles.c +359 -0
  278. data/ext/asyncengine_ext/libuv/test/test-multiple-listen.c +102 -0
  279. data/ext/asyncengine_ext/libuv/test/test-mutexes.c +63 -0
  280. data/ext/asyncengine_ext/libuv/test/test-pass-always.c +28 -0
  281. data/ext/asyncengine_ext/libuv/test/test-ping-pong.c +253 -0
  282. data/ext/asyncengine_ext/libuv/test/test-pipe-bind-error.c +140 -0
  283. data/ext/asyncengine_ext/libuv/test/test-pipe-connect-error.c +96 -0
  284. data/ext/asyncengine_ext/libuv/test/test-platform-output.c +87 -0
  285. data/ext/asyncengine_ext/libuv/test/test-process-title.c +42 -0
  286. data/ext/asyncengine_ext/libuv/test/test-ref.c +322 -0
  287. data/ext/asyncengine_ext/libuv/test/test-run-once.c +44 -0
  288. data/ext/asyncengine_ext/libuv/test/test-shutdown-close.c +103 -0
  289. data/ext/asyncengine_ext/libuv/test/test-shutdown-eof.c +183 -0
  290. data/ext/asyncengine_ext/libuv/test/test-spawn.c +499 -0
  291. data/ext/asyncengine_ext/libuv/test/test-stdio-over-pipes.c +256 -0
  292. data/ext/asyncengine_ext/libuv/test/test-tcp-bind-error.c +191 -0
  293. data/ext/asyncengine_ext/libuv/test/test-tcp-bind6-error.c +154 -0
  294. data/ext/asyncengine_ext/libuv/test/test-tcp-close.c +129 -0
  295. data/ext/asyncengine_ext/libuv/test/test-tcp-connect-error.c +70 -0
  296. data/ext/asyncengine_ext/libuv/test/test-tcp-connect6-error.c +68 -0
  297. data/ext/asyncengine_ext/libuv/test/test-tcp-flags.c +51 -0
  298. data/ext/asyncengine_ext/libuv/test/test-tcp-write-error.c +168 -0
  299. data/ext/asyncengine_ext/libuv/test/test-tcp-write-to-half-open-connection.c +135 -0
  300. data/ext/asyncengine_ext/libuv/test/test-tcp-writealot.c +195 -0
  301. data/ext/asyncengine_ext/libuv/test/test-thread.c +183 -0
  302. data/ext/asyncengine_ext/libuv/test/test-threadpool.c +57 -0
  303. data/ext/asyncengine_ext/libuv/test/test-timer-again.c +141 -0
  304. data/ext/asyncengine_ext/libuv/test/test-timer.c +130 -0
  305. data/ext/asyncengine_ext/libuv/test/test-tty.c +110 -0
  306. data/ext/asyncengine_ext/libuv/test/test-udp-dgram-too-big.c +86 -0
  307. data/ext/asyncengine_ext/libuv/test/test-udp-ipv6.c +156 -0
  308. data/ext/asyncengine_ext/libuv/test/test-udp-multicast-join.c +139 -0
  309. data/ext/asyncengine_ext/libuv/test/test-udp-multicast-ttl.c +86 -0
  310. data/ext/asyncengine_ext/libuv/test/test-udp-options.c +86 -0
  311. data/ext/asyncengine_ext/libuv/test/test-udp-send-and-recv.c +208 -0
  312. data/ext/asyncengine_ext/libuv/test/test-util.c +97 -0
  313. data/ext/asyncengine_ext/libuv/uv.gyp +435 -0
  314. data/ext/asyncengine_ext/libuv/vcbuild.bat +105 -0
  315. data/lib/asyncengine/version.rb +3 -0
  316. data/lib/asyncengine.rb +41 -0
  317. metadata +384 -0
data/README.markdown ADDED
File without changes
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require "./lib/asyncengine/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "asyncengine"
7
+ spec.version = AsyncEngine::VERSION
8
+ spec.date = Time.now
9
+ spec.authors = ["Inaki Baz Castillo"]
10
+ spec.email = "ibc@aliax.net"
11
+ spec.summary = "Ruby asynchronous event driven library based on libuv"
12
+ spec.homepage = "https://github.com/ibc/AsyncEngine"
13
+ spec.description = "Ruby asynchronous event driven library based on libuv"
14
+ spec.extensions = ["ext/asyncengine_ext/extconf.rb"]
15
+ spec.required_ruby_version = ">= 1.9.2"
16
+
17
+ files = %w{
18
+ asyncengine.gemspec
19
+ README.markdown
20
+ lib/**/**
21
+ ext/asyncengine_ext/{*.c,*.h,*.rb}
22
+ ext/asyncengine_ext/libuv/**/**/**/**/**/**/**/**/**
23
+ }.join(",")
24
+ spec.files = Dir.glob "{#{files}}"
25
+ spec.require_paths = ["lib"]
26
+ end
@@ -0,0 +1,82 @@
1
+ #include <ruby.h>
2
+ //#include <libuv/include/uv.h> // No hace falta por el dir_config() en extconf.rb.
3
+ #include <uv.h>
4
+ #include <signal.h>
5
+
6
+
7
+ static VALUE mAsyncEngine;
8
+ static ID id_trapped_signals;
9
+ static ID method_call;
10
+
11
+ void timer_callback(uv_timer_t* handle, int status)
12
+ {
13
+ rb_funcall(mAsyncEngine, rb_intern("timer_cb"), 0, 0);
14
+ }
15
+
16
+ void signal_handler(int signal_number)
17
+ {
18
+ VALUE trapped_signals = rb_ivar_get(mAsyncEngine, id_trapped_signals);
19
+ rb_funcall(rb_hash_lookup(trapped_signals, INT2FIX(signal_number)), method_call, 0, 0);
20
+ }
21
+
22
+ //void (*uv_prepare_cb)(uv_prepare_t* handle, int status);
23
+
24
+
25
+ VALUE AsyncEngine_trap_signal(VALUE self, VALUE rb_signal_number)
26
+ {
27
+ // TODO: Check http://linux.die.net/man/2/sigaction (recommended by http://linux.die.net/man/2/signal).
28
+ // TODO: En teoria devuelve EINVAL si el numero de signal pasado no existe, pero me da error porque
29
+ // no hay EINVAL en signal.h.
30
+ if (signal(FIX2INT(rb_signal_number), signal_handler) < 0)
31
+ return Qfalse;
32
+ return Qtrue;
33
+ }
34
+
35
+
36
+
37
+ VALUE _uv_run(void *data)
38
+ {
39
+ int res;
40
+ res = uv_run(uv_default_loop());
41
+ printf("NOTICE: uv_run() ends with status %d\n", res);
42
+ }
43
+
44
+ // Starts the event loop and adds one reference to ensure loop will run.
45
+ VALUE AsyncEngine_start(VALUE self)
46
+ {
47
+ uv_ref(uv_default_loop());
48
+ if (rb_block_given_p()) {
49
+ rb_yield(Qnil);
50
+ }
51
+
52
+ // uv_timer_t* handle = (uv_timer_t*) malloc(sizeof(uv_timer_t));
53
+ // uv_timer_init(uv_default_loop(), handle);
54
+ // uv_timer_start(handle, timer_callback, 2000, 1000);
55
+
56
+ // TODO: Habría que solbar el GVL porque uv_run bloquea y otros threads de Ruby no funcarian jamas.
57
+ // uv_prepare() se ejecuta en cada inicio de iteracion. Que llame a una funcion de Ruby que mire los
58
+ // signals recibidos.
59
+ //uv_run(uv_default_loop());
60
+ // TODO: Tal vez aqui tenga que coger de nuevo el GIL.
61
+ // EJ: https://github.com/saghul/pyuv/blob/master/src/loop.c#L76
62
+
63
+ if (rb_thread_blocking_region(_uv_run, 0, RUBY_UBF_IO, 0) == Qfalse) {
64
+ // an error occurred, we're not active anymore
65
+ //MARK_CONN_INACTIVE(self);
66
+ rb_raise(rb_eSystemCallError, "rb_thread_blocking_region returns false !!!");
67
+ }
68
+ printf("return self !!!!!!!\n");
69
+
70
+ return self;
71
+ }
72
+
73
+
74
+ void Init_asyncengine_ext()
75
+ {
76
+ mAsyncEngine = rb_define_module("AsyncEngine");
77
+ rb_define_module_function(mAsyncEngine, "start", AsyncEngine_start, 0);
78
+ rb_define_module_function(mAsyncEngine, "trap_signal", AsyncEngine_trap_signal, 1);
79
+
80
+ id_trapped_signals = rb_intern("@trapped_signals");
81
+ method_call = rb_intern("call");
82
+ }
@@ -0,0 +1,47 @@
1
+ require "mkmf"
2
+ require "rbconfig"
3
+ require "fileutils"
4
+
5
+
6
+ def sys cmd
7
+ puts "system command: #{cmd}"
8
+ unless ret = xsystem(cmd)
9
+ raise "system command `#{cmd}' failed, please report to https://github.com/ibc/AsyncEngine/issues"
10
+ end
11
+ ret
12
+ end
13
+
14
+
15
+ case host_os = RbConfig::CONFIG["host_os"]
16
+
17
+ when /solaris/i
18
+ cflags = " -G -fPIC "
19
+ RbConfig::CONFIG["LDSHARED"] = "$(CXX) -G -fPIC"
20
+ if RbConfig::CONFIG["CC"] == "cc"
21
+ cflags = "-g -O2 -fPIC"
22
+ RbConfig::CONFIG["CCDLFLAGS"] = "-fPIC"
23
+ end
24
+ ldflags = ""
25
+
26
+ when /darwin|mac os/i
27
+ cflags = "-shared -fPIC"
28
+ ldflags = "-framework CoreServices"
29
+
30
+ else
31
+ cflags = "-shared -fPIC"
32
+ ldflags = ""
33
+ end
34
+
35
+ $CFLAGS = RbConfig::CONFIG["CFLAGS"] = " #{cflags} "
36
+ $LDFLAGS = RbConfig::CONFIG["LDFLAGS"] = " #{ldflags} "
37
+
38
+ here = File.expand_path(File.dirname(__FILE__), "libuv/")
39
+
40
+ Dir.chdir(here) do
41
+ sys "CFLAGS='#{cflags}' make"
42
+ FileUtils.mv "uv.a", "../libuv.a"
43
+ end
44
+
45
+ dir_config("uv", File.expand_path("../libuv/include", __FILE__), File.expand_path("../libuv", __FILE__))
46
+ have_library("uv")
47
+ create_makefile("asyncengine_ext")
@@ -0,0 +1,45 @@
1
+ # Authors ordered by first contribution.
2
+ Ryan Dahl <ryan@joyent.com>
3
+ Bert Belder <bertbelder@gmail.com>
4
+ Josh Roesslein <jroesslein@gmail.com>
5
+ Alan Gutierrez <alan@prettyrobots.com>
6
+ Joshua Peek <josh@joshpeek.com>
7
+ Igor Zinkovsky <igorzi@microsoft.com>
8
+ San-Tai Hsu <vanilla@fatpipi.com>
9
+ Ben Noordhuis <info@bnoordhuis.nl>
10
+ Henry Rawas <henryr@schakra.com>
11
+ Robert Mustacchi <rm@joyent.com>
12
+ Matt Stevens <matt@alloysoft.com>
13
+ Paul Querna <pquerna@apache.org>
14
+ Shigeki Ohtsu <ohtsu@iij.ad.jp>
15
+ Tom Hughes <tom.hughes@palm.com>
16
+ Peter Bright <drpizza@quiscalusmexicanus.org>
17
+ Jeroen Janssen <jeroen.janssen@gmail.com>
18
+ Andrea Lattuada <ndr.lattuada@gmail.com>
19
+ Augusto Henrique Hentz <ahhentz@gmail.com>
20
+ Clifford Heath <clifford.heath@gmail.com>
21
+ Jorge Chamorro Bieling <jorge@jorgechamorro.com>
22
+ Luis Lavena <luislavena@gmail.com>
23
+ Matthew Sporleder <msporleder@gmail.com>
24
+ Erick Tryzelaar <erick.tryzelaar@gmail.com>
25
+ Isaac Z. Schlueter <i@izs.me>
26
+ Pieter Noordhuis <pcnoordhuis@gmail.com>
27
+ Marek Jelen <marek@jelen.biz>
28
+ Fedor Indutny <fedor.indutny@gmail.com>
29
+ Saúl Ibarra Corretgé <saghul@gmail.com>
30
+ Felix Geisendörfer <felix@debuggable.com>
31
+ Yuki OKUMURA <mjt@cltn.org>
32
+ Roman Shtylman <shtylman@gmail.com>
33
+ Frank Denis <github@pureftpd.org>
34
+ Carter Allen <CarterA@opt-6.com>
35
+ Tj Holowaychuk <tj@vision-media.ca>
36
+ Shimon Doodkin <helpmepro1@gmail.com>
37
+ Ryan Emery <seebees@gmail.com>
38
+ Bruce Mitchener <bruce.mitchener@gmail.com>
39
+ Maciej Małecki <maciej.malecki@notimplemented.org>
40
+ Yasuhiro Matsumoto <mattn.jp@gmail.com>
41
+ Daisuke Murase <typester@cpan.org>
42
+ Paddy Byers <paddy.byers@gmail.com>
43
+ Dan VerWeire <dverweire@gmail.com>
44
+ Brandon Benvie <brandon@bbenvie.com>
45
+ Brandon Philips <brandon.philips@rackspace.com>
@@ -0,0 +1,42 @@
1
+ libuv is part of the Node project: http://nodejs.org/
2
+ libuv may be distributed alone under Node's license:
3
+
4
+ ====
5
+
6
+ Copyright Joyent, Inc. and other Node contributors. All rights reserved.
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to
9
+ deal in the Software without restriction, including without limitation the
10
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
11
+ sell copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in
15
+ all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
23
+ IN THE SOFTWARE.
24
+
25
+ ====
26
+
27
+ This license applies to all parts of libuv that are not externally
28
+ maintained libraries.
29
+
30
+ The externally maintained libraries used by libuv are:
31
+
32
+ - tree.h (from FreeBSD), copyright Niels Provos. Two clause BSD license.
33
+
34
+ - ngx_queue.h (from Nginx), copyright Igor Sysoev. Two clause BSD license.
35
+
36
+ - c-ares, copyright Daniel Stenberg and others. MIT licensed.
37
+
38
+ - libev, located at ev/ is copyright Marc Alexander Lehmann, and
39
+ dual-licensed under the MIT license and GPL2.
40
+
41
+ - libeio, located at eio/ is copyright Marc Alexander Lehmann, and
42
+ dual-licensed under the MIT license and GPL2.
@@ -0,0 +1,119 @@
1
+ # Copyright Joyent, Inc. and other Node contributors. All rights reserved.
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to
5
+ # deal in the Software without restriction, including without limitation the
6
+ # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
+ # sell copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
+ # IN THE SOFTWARE.
20
+
21
+ uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
22
+
23
+ ifdef MSVC
24
+ uname_S := MINGW
25
+ endif
26
+
27
+ CPPFLAGS += -Iinclude -Iinclude/uv-private
28
+
29
+ CARES_OBJS =
30
+ CARES_OBJS += src/ares/ares__close_sockets.o
31
+ CARES_OBJS += src/ares/ares__get_hostent.o
32
+ CARES_OBJS += src/ares/ares__read_line.o
33
+ CARES_OBJS += src/ares/ares__timeval.o
34
+ CARES_OBJS += src/ares/ares_cancel.o
35
+ CARES_OBJS += src/ares/ares_data.o
36
+ CARES_OBJS += src/ares/ares_destroy.o
37
+ CARES_OBJS += src/ares/ares_expand_name.o
38
+ CARES_OBJS += src/ares/ares_expand_string.o
39
+ CARES_OBJS += src/ares/ares_fds.o
40
+ CARES_OBJS += src/ares/ares_free_hostent.o
41
+ CARES_OBJS += src/ares/ares_free_string.o
42
+ CARES_OBJS += src/ares/ares_gethostbyaddr.o
43
+ CARES_OBJS += src/ares/ares_gethostbyname.o
44
+ CARES_OBJS += src/ares/ares_getnameinfo.o
45
+ CARES_OBJS += src/ares/ares_getopt.o
46
+ CARES_OBJS += src/ares/ares_getsock.o
47
+ CARES_OBJS += src/ares/ares_init.o
48
+ CARES_OBJS += src/ares/ares_library_init.o
49
+ CARES_OBJS += src/ares/ares_llist.o
50
+ CARES_OBJS += src/ares/ares_mkquery.o
51
+ CARES_OBJS += src/ares/ares_nowarn.o
52
+ CARES_OBJS += src/ares/ares_options.o
53
+ CARES_OBJS += src/ares/ares_parse_a_reply.o
54
+ CARES_OBJS += src/ares/ares_parse_aaaa_reply.o
55
+ CARES_OBJS += src/ares/ares_parse_mx_reply.o
56
+ CARES_OBJS += src/ares/ares_parse_ns_reply.o
57
+ CARES_OBJS += src/ares/ares_parse_ptr_reply.o
58
+ CARES_OBJS += src/ares/ares_parse_srv_reply.o
59
+ CARES_OBJS += src/ares/ares_parse_txt_reply.o
60
+ CARES_OBJS += src/ares/ares_process.o
61
+ CARES_OBJS += src/ares/ares_query.o
62
+ CARES_OBJS += src/ares/ares_search.o
63
+ CARES_OBJS += src/ares/ares_send.o
64
+ CARES_OBJS += src/ares/ares_strcasecmp.o
65
+ CARES_OBJS += src/ares/ares_strdup.o
66
+ CARES_OBJS += src/ares/ares_strerror.o
67
+ CARES_OBJS += src/ares/ares_timeout.o
68
+ CARES_OBJS += src/ares/ares_version.o
69
+ CARES_OBJS += src/ares/ares_writev.o
70
+ CARES_OBJS += src/ares/bitncmp.o
71
+ CARES_OBJS += src/ares/inet_net_pton.o
72
+ CARES_OBJS += src/ares/inet_ntop.o
73
+
74
+ ifneq (,$(findstring MINGW,$(uname_S)))
75
+ include config-mingw.mk
76
+ else
77
+ include config-unix.mk
78
+ endif
79
+
80
+ TESTS=test/blackhole-server.c test/echo-server.c test/test-*.c
81
+ BENCHMARKS=test/blackhole-server.c test/echo-server.c test/dns-server.c test/benchmark-*.c
82
+
83
+ all: uv.a
84
+
85
+ $(CARES_OBJS): %.o: %.c
86
+ $(CC) -o $*.o -c $(CFLAGS) $(CPPFLAGS) $< -DHAVE_CONFIG_H
87
+
88
+ test/run-tests$(E): test/*.h test/run-tests.c $(RUNNER_SRC) test/runner-unix.c $(TESTS) uv.a
89
+ $(CC) $(CPPFLAGS) $(RUNNER_CFLAGS) -o test/run-tests test/run-tests.c \
90
+ test/runner.c $(RUNNER_SRC) $(TESTS) uv.a $(RUNNER_LIBS) $(RUNNER_LINKFLAGS)
91
+
92
+ test/run-benchmarks$(E): test/*.h test/run-benchmarks.c test/runner.c $(RUNNER_SRC) $(BENCHMARKS) uv.a
93
+ $(CC) $(CPPFLAGS) $(RUNNER_CFLAGS) -o test/run-benchmarks test/run-benchmarks.c \
94
+ test/runner.c $(RUNNER_SRC) $(BENCHMARKS) uv.a $(RUNNER_LIBS) $(RUNNER_LINKFLAGS)
95
+
96
+ test/echo.o: test/echo.c test/echo.h
97
+ $(CC) $(CPPFLAGS) $(CFLAGS) -c test/echo.c -o test/echo.o
98
+
99
+
100
+ .PHONY: clean clean-platform distclean distclean-platform test bench
101
+
102
+
103
+ test: test/run-tests$(E)
104
+ test/run-tests
105
+
106
+ #test-%: test/run-tests$(E)
107
+ # test/run-tests $(@:test-%=%)
108
+
109
+ bench: test/run-benchmarks$(E)
110
+ test/run-benchmarks
111
+
112
+ #bench-%: test/run-benchmarks$(E)
113
+ # test/run-benchmarks $(@:bench-%=%)
114
+
115
+ clean: clean-platform
116
+ $(RM) -f src/*.o *.a test/run-tests$(E) test/run-benchmarks$(E)
117
+
118
+ distclean: distclean-platform
119
+ $(RM) -f src/*.o *.a test/run-tests$(E) test/run-benchmarks$(E)
@@ -0,0 +1,88 @@
1
+ # libuv [![Build Status](https://secure.travis-ci.org/joyent/libuv.png)](http://travis-ci.org/joyent/libuv)
2
+
3
+ libuv is a new platform layer for Node. Its purpose is to abstract IOCP on
4
+ Windows and libev on Unix systems. We intend to eventually contain all
5
+ platform differences in this library.
6
+
7
+ http://nodejs.org/
8
+
9
+ ## Features
10
+
11
+ * Non-blocking TCP sockets
12
+
13
+ * Non-blocking named pipes
14
+
15
+ * UDP
16
+
17
+ * Timers
18
+
19
+ * Child process spawning
20
+
21
+ * Asynchronous DNS via c-ares or `uv_getaddrinfo`.
22
+
23
+ * Asynchronous file system APIs `uv_fs_*`
24
+
25
+ * High resolution time `uv_hrtime`
26
+
27
+ * Current executable path look up `uv_exepath`
28
+
29
+ * Thread pool scheduling `uv_queue_work`
30
+
31
+ * ANSI escape code controlled TTY `uv_tty_t`
32
+
33
+ * File system events Currently supports inotify, `ReadDirectoryChangesW`
34
+ and kqueue. Event ports in the near future.
35
+ `uv_fs_event_t`
36
+
37
+ * IPC and socket sharing between processes `uv_write2`
38
+
39
+
40
+ ## Documentation
41
+
42
+ See `include/uv.h`.
43
+
44
+
45
+ ## Build Instructions
46
+
47
+ For GCC (including MinGW) there are two methods building: via normal
48
+ makefiles or via GYP. GYP is a meta-build system which can generate MSVS,
49
+ Makefile, and XCode backends. It is best used for integration into other
50
+ projects. The old (more stable) system is using Makefiles.
51
+
52
+ To build via Makefile simply execute:
53
+
54
+ make
55
+
56
+ To build with Visual Studio run the vcbuilds.bat file which will
57
+ checkout the GYP code into build/gyp and generate the uv.sln and
58
+ related files.
59
+
60
+ Windows users can also build from cmd-line using msbuild. This is
61
+ done by running vcbuild.bat from Visual Studio command prompt.
62
+
63
+ To have GYP generate build script for another system you will need to
64
+ checkout GYP into the project tree manually:
65
+
66
+ svn co http://gyp.googlecode.com/svn/trunk build/gyp
67
+
68
+ Unix users run
69
+
70
+ ./gyp_uv -f make
71
+ make
72
+
73
+ Macintosh users run
74
+
75
+ ./gyp_uv -f xcode
76
+ xcodebuild -project uv.xcodeproj -configuration Release -target All
77
+
78
+
79
+ ## Supported Platforms
80
+
81
+ Microsoft Windows operating systems since Windows XP SP2. It can be built
82
+ with either Visual Studio or MinGW.
83
+
84
+ Linux 2.6 using the GCC toolchain.
85
+
86
+ MacOS using the GCC or XCode toolchain.
87
+
88
+ Solaris 121 and later using GCC toolchain.
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env python
2
+
3
+ import os
4
+ import re
5
+ import subprocess
6
+ import sys
7
+
8
+
9
+ def DoMain(*args):
10
+ cc = os.environ.get('CC', 'gcc')
11
+ stdin, stderr = os.pipe()
12
+ subprocess.call([cc, '-v'], stderr=stderr)
13
+ output = os.read(stdin, 4096)
14
+ match = re.search("\ngcc version (\d+\.\d+\.\d+)", output)
15
+ if match:
16
+ print(match.group(1))
17
+
18
+
19
+ if __name__ == '__main__':
20
+ DoMain(*sys.argv)
@@ -0,0 +1,176 @@
1
+ {
2
+ 'variables': {
3
+ 'visibility%': 'hidden', # V8's visibility setting
4
+ 'target_arch%': 'ia32', # set v8's target architecture
5
+ 'host_arch%': 'ia32', # set v8's host architecture
6
+ 'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
7
+ 'component%': 'static_library', # NB. these names match with what V8 expects
8
+ 'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way
9
+ },
10
+
11
+ 'target_defaults': {
12
+ 'default_configuration': 'Debug',
13
+ 'configurations': {
14
+ 'Debug': {
15
+ 'defines': [ 'DEBUG', '_DEBUG' ],
16
+ 'cflags': [ '-g', '-O0' ],
17
+ 'msvs_settings': {
18
+ 'VCCLCompilerTool': {
19
+ 'target_conditions': [
20
+ ['library=="static_library"', {
21
+ 'RuntimeLibrary': 1, # static debug
22
+ }, {
23
+ 'RuntimeLibrary': 3, # DLL debug
24
+ }],
25
+ ],
26
+ 'Optimization': 0, # /Od, no optimization
27
+ 'MinimalRebuild': 'true',
28
+ 'OmitFramePointers': 'false',
29
+ 'BasicRuntimeChecks': 3, # /RTC1
30
+ },
31
+ 'VCLinkerTool': {
32
+ 'LinkIncremental': 2, # enable incremental linking
33
+ },
34
+ },
35
+ 'conditions': [
36
+ ['OS != "win"', {
37
+ 'defines': [ 'EV_VERIFY=2' ],
38
+ }],
39
+ ]
40
+ },
41
+ 'Release': {
42
+ 'defines': [ 'NDEBUG' ],
43
+ 'cflags': [ '-O3', '-fomit-frame-pointer', '-fdata-sections', '-ffunction-sections' ],
44
+ 'msvs_settings': {
45
+ 'VCCLCompilerTool': {
46
+ 'target_conditions': [
47
+ ['library=="static_library"', {
48
+ 'RuntimeLibrary': 0, # static release
49
+ }, {
50
+ 'RuntimeLibrary': 2, # debug release
51
+ }],
52
+ ],
53
+ 'Optimization': 3, # /Ox, full optimization
54
+ 'FavorSizeOrSpeed': 1, # /Ot, favour speed over size
55
+ 'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible
56
+ 'WholeProgramOptimization': 'true', # /GL, whole program optimization, needed for LTCG
57
+ 'OmitFramePointers': 'true',
58
+ 'EnableFunctionLevelLinking': 'true',
59
+ 'EnableIntrinsicFunctions': 'true',
60
+ 'AdditionalOptions': [
61
+ '/MP', # compile across multiple CPUs
62
+ ],
63
+ },
64
+ 'VCLibrarianTool': {
65
+ 'AdditionalOptions': [
66
+ '/LTCG', # link time code generation
67
+ ],
68
+ },
69
+ 'VCLinkerTool': {
70
+ 'LinkTimeCodeGeneration': 1, # link-time code generation
71
+ 'OptimizeReferences': 2, # /OPT:REF
72
+ 'EnableCOMDATFolding': 2, # /OPT:ICF
73
+ 'LinkIncremental': 1, # disable incremental linking
74
+ },
75
+ },
76
+ }
77
+ },
78
+ 'msvs_settings': {
79
+ 'VCCLCompilerTool': {
80
+ 'StringPooling': 'true', # pool string literals
81
+ 'DebugInformationFormat': 3, # Generate a PDB
82
+ 'WarningLevel': 3,
83
+ 'BufferSecurityCheck': 'true',
84
+ 'ExceptionHandling': 1, # /EHsc
85
+ 'SuppressStartupBanner': 'true',
86
+ 'WarnAsError': 'false',
87
+ },
88
+ 'VCLibrarianTool': {
89
+ },
90
+ 'VCLinkerTool': {
91
+ 'GenerateDebugInformation': 'true',
92
+ 'RandomizedBaseAddress': 2, # enable ASLR
93
+ 'DataExecutionPrevention': 2, # enable DEP
94
+ 'AllowIsolation': 'true',
95
+ 'SuppressStartupBanner': 'true',
96
+ 'target_conditions': [
97
+ ['_type=="executable"', {
98
+ 'SubSystem': 1, # console executable
99
+ }],
100
+ ],
101
+ },
102
+ },
103
+ 'conditions': [
104
+ ['OS == "win"', {
105
+ 'msvs_cygwin_shell': 0, # prevent actions from trying to use cygwin
106
+ 'defines': [
107
+ 'WIN32',
108
+ # we don't really want VC++ warning us about
109
+ # how dangerous C functions are...
110
+ '_CRT_SECURE_NO_DEPRECATE',
111
+ # ... or that C implementations shouldn't use
112
+ # POSIX names
113
+ '_CRT_NONSTDC_NO_DEPRECATE',
114
+ ],
115
+ }],
116
+ [ 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
117
+ 'variables': {
118
+ 'gcc_version%': '<!(python build/gcc_version.py)>)',
119
+ },
120
+ 'cflags': [ '-Wall' ],
121
+ 'cflags_cc': [ '-fno-rtti', '-fno-exceptions' ],
122
+ 'conditions': [
123
+ [ 'host_arch != target_arch and target_arch=="ia32"', {
124
+ 'cflags': [ '-m32' ],
125
+ 'ldflags': [ '-m32' ],
126
+ }],
127
+ [ 'OS=="linux"', {
128
+ 'cflags': [ '-ansi' ],
129
+ }],
130
+ [ 'OS=="solaris"', {
131
+ 'cflags': [ '-pthreads' ],
132
+ 'ldflags': [ '-pthreads' ],
133
+ }, {
134
+ 'cflags': [ '-pthread' ],
135
+ 'ldflags': [ '-pthread' ],
136
+ }],
137
+ [ 'visibility=="hidden" and gcc_version >= "4.0.0"', {
138
+ 'cflags': [ '-fvisibility=hidden' ],
139
+ }],
140
+ ],
141
+ }],
142
+ ['OS=="mac"', {
143
+ 'xcode_settings': {
144
+ 'ALWAYS_SEARCH_USER_PATHS': 'NO',
145
+ 'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks
146
+ 'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic
147
+ # (Equivalent to -fPIC)
148
+ 'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions
149
+ 'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti
150
+ 'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings
151
+ # GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
152
+ 'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
153
+ 'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden
154
+ 'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics
155
+ 'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES', # -Wnewline-eof
156
+ 'PREBINDING': 'NO', # No -Wl,-prebind
157
+ 'USE_HEADERMAP': 'NO',
158
+ 'OTHER_CFLAGS': [
159
+ '-fno-strict-aliasing',
160
+ ],
161
+ 'WARNING_CFLAGS': [
162
+ '-Wall',
163
+ '-Wendif-labels',
164
+ '-W',
165
+ '-Wno-unused-parameter',
166
+ ],
167
+ },
168
+ 'target_conditions': [
169
+ ['_type!="static_library"', {
170
+ 'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']},
171
+ }],
172
+ ],
173
+ }],
174
+ ],
175
+ },
176
+ }