asyncengine 0.0.1.testing

Sign up to get free protection for your applications and to get access to all the features.
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
+ }