foolio 0.0.3

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 (261) hide show
  1. data/.gitignore +22 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +22 -0
  4. data/README.md +29 -0
  5. data/Rakefile +21 -0
  6. data/examples/timer.rb +20 -0
  7. data/ext/foolio/extconf.rb +34 -0
  8. data/ext/foolio/foolio_ext.c +921 -0
  9. data/ext/foolio/gen.rb +50 -0
  10. data/ext/foolio/make_table.rb +12 -0
  11. data/ext/foolio/templ +243 -0
  12. data/ext/libuv/.gitignore +33 -0
  13. data/ext/libuv/.mailmap +13 -0
  14. data/ext/libuv/.travis.yml +9 -0
  15. data/ext/libuv/AUTHORS +61 -0
  16. data/ext/libuv/LICENSE +44 -0
  17. data/ext/libuv/Makefile +71 -0
  18. data/ext/libuv/README.md +90 -0
  19. data/ext/libuv/common.gypi +178 -0
  20. data/ext/libuv/gyp_uv +73 -0
  21. data/ext/libuv/include/uv-private/eio.h +403 -0
  22. data/ext/libuv/include/uv-private/ev.h +838 -0
  23. data/ext/libuv/include/uv-private/ngx-queue.h +108 -0
  24. data/ext/libuv/include/uv-private/tree.h +768 -0
  25. data/ext/libuv/include/uv-private/uv-unix.h +324 -0
  26. data/ext/libuv/include/uv-private/uv-win.h +517 -0
  27. data/ext/libuv/include/uv.h +1838 -0
  28. data/ext/libuv/src/fs-poll.c +235 -0
  29. data/ext/libuv/src/inet.c +293 -0
  30. data/ext/libuv/src/unix/async.c +148 -0
  31. data/ext/libuv/src/unix/core.c +696 -0
  32. data/ext/libuv/src/unix/cygwin.c +83 -0
  33. data/ext/libuv/src/unix/darwin.c +342 -0
  34. data/ext/libuv/src/unix/dl.c +83 -0
  35. data/ext/libuv/src/unix/eio/Changes +63 -0
  36. data/ext/libuv/src/unix/eio/LICENSE +36 -0
  37. data/ext/libuv/src/unix/eio/Makefile.am +15 -0
  38. data/ext/libuv/src/unix/eio/aclocal.m4 +8957 -0
  39. data/ext/libuv/src/unix/eio/autogen.sh +3 -0
  40. data/ext/libuv/src/unix/eio/config.h.in +86 -0
  41. data/ext/libuv/src/unix/eio/config_cygwin.h +80 -0
  42. data/ext/libuv/src/unix/eio/config_darwin.h +141 -0
  43. data/ext/libuv/src/unix/eio/config_freebsd.h +81 -0
  44. data/ext/libuv/src/unix/eio/config_linux.h +94 -0
  45. data/ext/libuv/src/unix/eio/config_netbsd.h +81 -0
  46. data/ext/libuv/src/unix/eio/config_openbsd.h +137 -0
  47. data/ext/libuv/src/unix/eio/config_sunos.h +84 -0
  48. data/ext/libuv/src/unix/eio/configure.ac +22 -0
  49. data/ext/libuv/src/unix/eio/demo.c +194 -0
  50. data/ext/libuv/src/unix/eio/ecb.h +370 -0
  51. data/ext/libuv/src/unix/eio/eio.3 +3428 -0
  52. data/ext/libuv/src/unix/eio/eio.c +2593 -0
  53. data/ext/libuv/src/unix/eio/eio.pod +969 -0
  54. data/ext/libuv/src/unix/eio/libeio.m4 +195 -0
  55. data/ext/libuv/src/unix/eio/xthread.h +164 -0
  56. data/ext/libuv/src/unix/error.c +105 -0
  57. data/ext/libuv/src/unix/ev/Changes +388 -0
  58. data/ext/libuv/src/unix/ev/LICENSE +36 -0
  59. data/ext/libuv/src/unix/ev/Makefile.am +18 -0
  60. data/ext/libuv/src/unix/ev/Makefile.in +771 -0
  61. data/ext/libuv/src/unix/ev/README +58 -0
  62. data/ext/libuv/src/unix/ev/aclocal.m4 +8957 -0
  63. data/ext/libuv/src/unix/ev/autogen.sh +6 -0
  64. data/ext/libuv/src/unix/ev/config.guess +1526 -0
  65. data/ext/libuv/src/unix/ev/config.h.in +125 -0
  66. data/ext/libuv/src/unix/ev/config.sub +1658 -0
  67. data/ext/libuv/src/unix/ev/config_cygwin.h +123 -0
  68. data/ext/libuv/src/unix/ev/config_darwin.h +122 -0
  69. data/ext/libuv/src/unix/ev/config_freebsd.h +120 -0
  70. data/ext/libuv/src/unix/ev/config_linux.h +141 -0
  71. data/ext/libuv/src/unix/ev/config_netbsd.h +120 -0
  72. data/ext/libuv/src/unix/ev/config_openbsd.h +126 -0
  73. data/ext/libuv/src/unix/ev/config_sunos.h +122 -0
  74. data/ext/libuv/src/unix/ev/configure +13037 -0
  75. data/ext/libuv/src/unix/ev/configure.ac +18 -0
  76. data/ext/libuv/src/unix/ev/depcomp +630 -0
  77. data/ext/libuv/src/unix/ev/ev++.h +816 -0
  78. data/ext/libuv/src/unix/ev/ev.3 +5311 -0
  79. data/ext/libuv/src/unix/ev/ev.c +3925 -0
  80. data/ext/libuv/src/unix/ev/ev.pod +5243 -0
  81. data/ext/libuv/src/unix/ev/ev_epoll.c +266 -0
  82. data/ext/libuv/src/unix/ev/ev_kqueue.c +235 -0
  83. data/ext/libuv/src/unix/ev/ev_poll.c +148 -0
  84. data/ext/libuv/src/unix/ev/ev_port.c +179 -0
  85. data/ext/libuv/src/unix/ev/ev_select.c +310 -0
  86. data/ext/libuv/src/unix/ev/ev_vars.h +203 -0
  87. data/ext/libuv/src/unix/ev/ev_win32.c +153 -0
  88. data/ext/libuv/src/unix/ev/ev_wrap.h +196 -0
  89. data/ext/libuv/src/unix/ev/event.c +402 -0
  90. data/ext/libuv/src/unix/ev/event.h +170 -0
  91. data/ext/libuv/src/unix/ev/install-sh +294 -0
  92. data/ext/libuv/src/unix/ev/libev.m4 +39 -0
  93. data/ext/libuv/src/unix/ev/ltmain.sh +8413 -0
  94. data/ext/libuv/src/unix/ev/missing +336 -0
  95. data/ext/libuv/src/unix/ev/mkinstalldirs +111 -0
  96. data/ext/libuv/src/unix/freebsd.c +326 -0
  97. data/ext/libuv/src/unix/fs.c +739 -0
  98. data/ext/libuv/src/unix/internal.h +188 -0
  99. data/ext/libuv/src/unix/kqueue.c +120 -0
  100. data/ext/libuv/src/unix/linux/inotify.c +239 -0
  101. data/ext/libuv/src/unix/linux/linux-core.c +557 -0
  102. data/ext/libuv/src/unix/linux/syscalls.c +388 -0
  103. data/ext/libuv/src/unix/linux/syscalls.h +124 -0
  104. data/ext/libuv/src/unix/loop-watcher.c +62 -0
  105. data/ext/libuv/src/unix/loop.c +94 -0
  106. data/ext/libuv/src/unix/netbsd.c +108 -0
  107. data/ext/libuv/src/unix/openbsd.c +295 -0
  108. data/ext/libuv/src/unix/pipe.c +259 -0
  109. data/ext/libuv/src/unix/poll.c +114 -0
  110. data/ext/libuv/src/unix/process.c +495 -0
  111. data/ext/libuv/src/unix/signal.c +269 -0
  112. data/ext/libuv/src/unix/stream.c +990 -0
  113. data/ext/libuv/src/unix/sunos.c +481 -0
  114. data/ext/libuv/src/unix/tcp.c +393 -0
  115. data/ext/libuv/src/unix/thread.c +251 -0
  116. data/ext/libuv/src/unix/timer.c +136 -0
  117. data/ext/libuv/src/unix/tty.c +145 -0
  118. data/ext/libuv/src/unix/udp.c +659 -0
  119. data/ext/libuv/src/unix/uv-eio.c +107 -0
  120. data/ext/libuv/src/unix/uv-eio.h +13 -0
  121. data/ext/libuv/src/uv-common.c +380 -0
  122. data/ext/libuv/src/uv-common.h +170 -0
  123. data/ext/libuv/src/win/async.c +100 -0
  124. data/ext/libuv/src/win/atomicops-inl.h +56 -0
  125. data/ext/libuv/src/win/core.c +278 -0
  126. data/ext/libuv/src/win/dl.c +86 -0
  127. data/ext/libuv/src/win/error.c +155 -0
  128. data/ext/libuv/src/win/fs-event.c +510 -0
  129. data/ext/libuv/src/win/fs.c +1948 -0
  130. data/ext/libuv/src/win/getaddrinfo.c +365 -0
  131. data/ext/libuv/src/win/handle-inl.h +149 -0
  132. data/ext/libuv/src/win/handle.c +154 -0
  133. data/ext/libuv/src/win/internal.h +343 -0
  134. data/ext/libuv/src/win/loop-watcher.c +122 -0
  135. data/ext/libuv/src/win/pipe.c +1672 -0
  136. data/ext/libuv/src/win/poll.c +616 -0
  137. data/ext/libuv/src/win/process-stdio.c +500 -0
  138. data/ext/libuv/src/win/process.c +1013 -0
  139. data/ext/libuv/src/win/req-inl.h +220 -0
  140. data/ext/libuv/src/win/req.c +25 -0
  141. data/ext/libuv/src/win/signal.c +57 -0
  142. data/ext/libuv/src/win/stream-inl.h +67 -0
  143. data/ext/libuv/src/win/stream.c +167 -0
  144. data/ext/libuv/src/win/tcp.c +1394 -0
  145. data/ext/libuv/src/win/thread.c +372 -0
  146. data/ext/libuv/src/win/threadpool.c +74 -0
  147. data/ext/libuv/src/win/timer.c +224 -0
  148. data/ext/libuv/src/win/tty.c +1799 -0
  149. data/ext/libuv/src/win/udp.c +716 -0
  150. data/ext/libuv/src/win/util.c +864 -0
  151. data/ext/libuv/src/win/winapi.c +132 -0
  152. data/ext/libuv/src/win/winapi.h +4452 -0
  153. data/ext/libuv/src/win/winsock.c +557 -0
  154. data/ext/libuv/src/win/winsock.h +171 -0
  155. data/ext/libuv/test/benchmark-async-pummel.c +97 -0
  156. data/ext/libuv/test/benchmark-async.c +137 -0
  157. data/ext/libuv/test/benchmark-fs-stat.c +135 -0
  158. data/ext/libuv/test/benchmark-getaddrinfo.c +94 -0
  159. data/ext/libuv/test/benchmark-list.h +127 -0
  160. data/ext/libuv/test/benchmark-loop-count.c +88 -0
  161. data/ext/libuv/test/benchmark-million-timers.c +65 -0
  162. data/ext/libuv/test/benchmark-ping-pongs.c +213 -0
  163. data/ext/libuv/test/benchmark-pound.c +324 -0
  164. data/ext/libuv/test/benchmark-pump.c +462 -0
  165. data/ext/libuv/test/benchmark-sizes.c +44 -0
  166. data/ext/libuv/test/benchmark-spawn.c +162 -0
  167. data/ext/libuv/test/benchmark-tcp-write-batch.c +140 -0
  168. data/ext/libuv/test/benchmark-thread.c +64 -0
  169. data/ext/libuv/test/benchmark-udp-packet-storm.c +247 -0
  170. data/ext/libuv/test/blackhole-server.c +118 -0
  171. data/ext/libuv/test/dns-server.c +321 -0
  172. data/ext/libuv/test/echo-server.c +378 -0
  173. data/ext/libuv/test/fixtures/empty_file +0 -0
  174. data/ext/libuv/test/fixtures/load_error.node +1 -0
  175. data/ext/libuv/test/run-benchmarks.c +64 -0
  176. data/ext/libuv/test/run-tests.c +138 -0
  177. data/ext/libuv/test/runner-unix.c +295 -0
  178. data/ext/libuv/test/runner-unix.h +36 -0
  179. data/ext/libuv/test/runner-win.c +285 -0
  180. data/ext/libuv/test/runner-win.h +42 -0
  181. data/ext/libuv/test/runner.c +355 -0
  182. data/ext/libuv/test/runner.h +159 -0
  183. data/ext/libuv/test/task.h +112 -0
  184. data/ext/libuv/test/test-async.c +118 -0
  185. data/ext/libuv/test/test-callback-order.c +76 -0
  186. data/ext/libuv/test/test-callback-stack.c +203 -0
  187. data/ext/libuv/test/test-connection-fail.c +148 -0
  188. data/ext/libuv/test/test-cwd-and-chdir.c +64 -0
  189. data/ext/libuv/test/test-delayed-accept.c +188 -0
  190. data/ext/libuv/test/test-dlerror.c +58 -0
  191. data/ext/libuv/test/test-error.c +59 -0
  192. data/ext/libuv/test/test-fail-always.c +29 -0
  193. data/ext/libuv/test/test-fs-event.c +474 -0
  194. data/ext/libuv/test/test-fs-poll.c +146 -0
  195. data/ext/libuv/test/test-fs.c +1843 -0
  196. data/ext/libuv/test/test-get-currentexe.c +63 -0
  197. data/ext/libuv/test/test-get-loadavg.c +36 -0
  198. data/ext/libuv/test/test-get-memory.c +38 -0
  199. data/ext/libuv/test/test-getaddrinfo.c +122 -0
  200. data/ext/libuv/test/test-getsockname.c +342 -0
  201. data/ext/libuv/test/test-hrtime.c +54 -0
  202. data/ext/libuv/test/test-idle.c +81 -0
  203. data/ext/libuv/test/test-ipc-send-recv.c +209 -0
  204. data/ext/libuv/test/test-ipc.c +620 -0
  205. data/ext/libuv/test/test-list.h +427 -0
  206. data/ext/libuv/test/test-loop-handles.c +336 -0
  207. data/ext/libuv/test/test-multiple-listen.c +102 -0
  208. data/ext/libuv/test/test-mutexes.c +63 -0
  209. data/ext/libuv/test/test-pass-always.c +28 -0
  210. data/ext/libuv/test/test-ping-pong.c +253 -0
  211. data/ext/libuv/test/test-pipe-bind-error.c +140 -0
  212. data/ext/libuv/test/test-pipe-connect-error.c +96 -0
  213. data/ext/libuv/test/test-platform-output.c +87 -0
  214. data/ext/libuv/test/test-poll-close.c +72 -0
  215. data/ext/libuv/test/test-poll.c +573 -0
  216. data/ext/libuv/test/test-process-title.c +49 -0
  217. data/ext/libuv/test/test-ref.c +338 -0
  218. data/ext/libuv/test/test-run-once.c +48 -0
  219. data/ext/libuv/test/test-semaphore.c +111 -0
  220. data/ext/libuv/test/test-shutdown-close.c +103 -0
  221. data/ext/libuv/test/test-shutdown-eof.c +183 -0
  222. data/ext/libuv/test/test-signal.c +162 -0
  223. data/ext/libuv/test/test-spawn.c +863 -0
  224. data/ext/libuv/test/test-stdio-over-pipes.c +246 -0
  225. data/ext/libuv/test/test-tcp-bind-error.c +191 -0
  226. data/ext/libuv/test/test-tcp-bind6-error.c +154 -0
  227. data/ext/libuv/test/test-tcp-close-while-connecting.c +80 -0
  228. data/ext/libuv/test/test-tcp-close.c +129 -0
  229. data/ext/libuv/test/test-tcp-connect-error-after-write.c +95 -0
  230. data/ext/libuv/test/test-tcp-connect-error.c +70 -0
  231. data/ext/libuv/test/test-tcp-connect-timeout.c +85 -0
  232. data/ext/libuv/test/test-tcp-connect6-error.c +68 -0
  233. data/ext/libuv/test/test-tcp-flags.c +51 -0
  234. data/ext/libuv/test/test-tcp-shutdown-after-write.c +131 -0
  235. data/ext/libuv/test/test-tcp-unexpected-read.c +113 -0
  236. data/ext/libuv/test/test-tcp-write-error.c +168 -0
  237. data/ext/libuv/test/test-tcp-write-to-half-open-connection.c +135 -0
  238. data/ext/libuv/test/test-tcp-writealot.c +170 -0
  239. data/ext/libuv/test/test-thread.c +183 -0
  240. data/ext/libuv/test/test-threadpool.c +57 -0
  241. data/ext/libuv/test/test-timer-again.c +141 -0
  242. data/ext/libuv/test/test-timer.c +152 -0
  243. data/ext/libuv/test/test-tty.c +110 -0
  244. data/ext/libuv/test/test-udp-dgram-too-big.c +86 -0
  245. data/ext/libuv/test/test-udp-ipv6.c +156 -0
  246. data/ext/libuv/test/test-udp-multicast-join.c +139 -0
  247. data/ext/libuv/test/test-udp-multicast-ttl.c +86 -0
  248. data/ext/libuv/test/test-udp-options.c +86 -0
  249. data/ext/libuv/test/test-udp-send-and-recv.c +208 -0
  250. data/ext/libuv/test/test-util.c +97 -0
  251. data/ext/libuv/test/test-walk-handles.c +77 -0
  252. data/ext/libuv/uv.gyp +375 -0
  253. data/ext/libuv/vcbuild.bat +105 -0
  254. data/foolio.gemspec +18 -0
  255. data/lib/foolio.rb +9 -0
  256. data/lib/foolio/handle.rb +27 -0
  257. data/lib/foolio/listener.rb +26 -0
  258. data/lib/foolio/loop.rb +79 -0
  259. data/lib/foolio/stream.rb +109 -0
  260. data/lib/foolio/version.rb +3 -0
  261. metadata +309 -0
@@ -0,0 +1,50 @@
1
+ #! /opt/local/bin/ruby -w
2
+ # -*- mode:ruby; coding:utf-8 -*-
3
+
4
+ def for_arg(args)
5
+ type,name = args
6
+ case type
7
+ when /uv_.*_t/
8
+ "#{type} #{name}_;
9
+ Data_Get_Struct(#{name}, #{type.gsub(/\*$/,"")}, #{name}_)"
10
+ when /uv_.*_cb/
11
+ "handle_->data = (void*)callback(#{name})"
12
+ when "int"
13
+ "int #{name}_ = NUM2INT(#{name})"
14
+ when "unsigned int"
15
+ "#{type} #{name}_ = NUM2UINT(#{name})"
16
+ when "const char*"
17
+ "#{type} #{name}_ = StringValueCStr(#{name})"
18
+ else
19
+ "// #{type} #{name}"
20
+ end
21
+ end
22
+
23
+ def wrap(type)
24
+ case type
25
+ when "int"
26
+ "INT2NUM"
27
+ end
28
+ end
29
+
30
+ ARGF.read.split(";").each do|func|
31
+ func.gsub!("\n","")
32
+ if func =~ /UV_EXTERN (\w+) ([^(]+)\((.*)\)/ then
33
+ ret = $1
34
+ name = $2
35
+ args = $3.split(",").map{|s|
36
+ xs = s.split(" ")
37
+ [ xs[0..-2].join(" "), xs[-1] ]
38
+ }
39
+
40
+ puts <<END
41
+ // #{func}
42
+ VALUE foolio_#{name.gsub(/^uv_/,'')}(VALUE self, #{args.map{|t,x| "VALUE #{x ? x : t.downcase}"}.join(", ")}) {
43
+ #{args.map(&method(:for_arg)).join(";\n ")};
44
+ #{ret} retval = #{name}(#{args.map{|_,n| n+"_"}.join(", ")});
45
+ return #{wrap(ret)}(retval);
46
+ }
47
+
48
+ END
49
+ end
50
+ end
@@ -0,0 +1,12 @@
1
+ # -*- mode:ruby; coding:utf-8 -*-
2
+
3
+ %x(grep foolio_ foolio_ext.c | grep '^VALUE' | grep -v '__').each_line do|func|
4
+ if func =~ /VALUE ([^(]+)\((.*)\)/ then
5
+ name = $1
6
+ args = $2.split(",").map{|s|
7
+ xs = s.split(" ")
8
+ [ xs[0..-2].join(" "), xs[-1] ]
9
+ }
10
+ puts "Method(#{name.gsub(/^foolio_/,'')}, #{args.size-1});"
11
+ end
12
+ end
@@ -0,0 +1,243 @@
1
+ // UV_EXTERN uv_buf_t uv_buf_init(char* base, size_t len)
2
+ VALUE foolio_buf_init(VALUE self, VALUE base, VALUE len) {
3
+ // char* base;
4
+ // size_t len;
5
+ uv_buf_t retval = uv_buf_init(base_, len_);
6
+ return (retval);
7
+ }
8
+
9
+ // UV_EXTERN int uv_listen(uv_stream_t* stream, int backlog, uv_connection_cb cb)
10
+ VALUE foolio_listen(VALUE self, VALUE stream, VALUE backlog, VALUE cb) {
11
+ uv_stream_t* stream_;
12
+ Data_Get_Struct(stream, uv_stream_t, stream_);
13
+ int backlog_ = NUM2INT(backlog);
14
+ handle_->data = (void*)callback(cb);
15
+ int retval = uv_listen(stream_, backlog_, cb_);
16
+ return INT2NUM(retval);
17
+ }
18
+
19
+ // UV_EXTERN int uv_read_start(uv_stream_t*, uv_alloc_cb alloc_cb, uv_read_cb read_cb)
20
+ VALUE foolio_read_start(VALUE self, VALUE uv_stream_t*, VALUE alloc_cb, VALUE read_cb) {
21
+ // uv_stream_t*;
22
+ handle_->data = (void*)callback(alloc_cb);
23
+ handle_->data = (void*)callback(read_cb);
24
+ int retval = uv_read_start(uv_stream_t*_, alloc_cb_, read_cb_);
25
+ return INT2NUM(retval);
26
+ }
27
+
28
+ // UV_EXTERN int uv_read_stop(uv_stream_t*)
29
+ VALUE foolio_read_stop(VALUE self, VALUE uv_stream_t*) {
30
+ // uv_stream_t*;
31
+ int retval = uv_read_stop(uv_stream_t*_);
32
+ return INT2NUM(retval);
33
+ }
34
+
35
+ // UV_EXTERN int uv_read2_start(uv_stream_t*, uv_alloc_cb alloc_cb, uv_read2_cb read_cb)
36
+ VALUE foolio_read2_start(VALUE self, VALUE uv_stream_t*, VALUE alloc_cb, VALUE read_cb) {
37
+ // uv_stream_t*;
38
+ handle_->data = (void*)callback(alloc_cb);
39
+ handle_->data = (void*)callback(read_cb);
40
+ int retval = uv_read2_start(uv_stream_t*_, alloc_cb_, read_cb_);
41
+ return INT2NUM(retval);
42
+ }
43
+
44
+ // UV_EXTERN int uv_write(uv_write_t* req, uv_stream_t* handle, uv_buf_t bufs[], int bufcnt, uv_write_cb cb)
45
+ VALUE foolio_write(VALUE self, VALUE req, VALUE handle, VALUE bufs[], VALUE bufcnt, VALUE cb) {
46
+ uv_write_t* req_;
47
+ Data_Get_Struct(req, uv_write_t, req_);
48
+ uv_stream_t* handle_;
49
+ Data_Get_Struct(handle, uv_stream_t, handle_);
50
+ uv_buf_t bufs[]_;
51
+ Data_Get_Struct(bufs[], uv_buf_t, bufs[]_);
52
+ int bufcnt_ = NUM2INT(bufcnt);
53
+ handle_->data = (void*)callback(cb);
54
+ int retval = uv_write(req_, handle_, bufs[]_, bufcnt_, cb_);
55
+ return INT2NUM(retval);
56
+ }
57
+
58
+ // UV_EXTERN int uv_write2(uv_write_t* req, uv_stream_t* handle, uv_buf_t bufs[], int bufcnt, uv_stream_t* send_handle, uv_write_cb cb)
59
+ VALUE foolio_write2(VALUE self, VALUE req, VALUE handle, VALUE bufs[], VALUE bufcnt, VALUE send_handle, VALUE cb) {
60
+ uv_write_t* req_;
61
+ Data_Get_Struct(req, uv_write_t, req_);
62
+ uv_stream_t* handle_;
63
+ Data_Get_Struct(handle, uv_stream_t, handle_);
64
+ uv_buf_t bufs[]_;
65
+ Data_Get_Struct(bufs[], uv_buf_t, bufs[]_);
66
+ int bufcnt_ = NUM2INT(bufcnt);
67
+ uv_stream_t* send_handle_;
68
+ Data_Get_Struct(send_handle, uv_stream_t, send_handle_);
69
+ handle_->data = (void*)callback(cb);
70
+ int retval = uv_write2(req_, handle_, bufs[]_, bufcnt_, send_handle_, cb_);
71
+ return INT2NUM(retval);
72
+ }
73
+
74
+ // UV_EXTERN int uv_is_readable(const uv_stream_t* handle)
75
+ VALUE foolio_is_readable(VALUE self, VALUE handle) {
76
+ const uv_stream_t* handle_;
77
+ Data_Get_Struct(handle, const uv_stream_t, handle_);
78
+ int retval = uv_is_readable(handle_);
79
+ return INT2NUM(retval);
80
+ }
81
+
82
+ // UV_EXTERN int uv_is_writable(const uv_stream_t* handle)
83
+ VALUE foolio_is_writable(VALUE self, VALUE handle) {
84
+ const uv_stream_t* handle_;
85
+ Data_Get_Struct(handle, const uv_stream_t, handle_);
86
+ int retval = uv_is_writable(handle_);
87
+ return INT2NUM(retval);
88
+ }
89
+
90
+ // UV_EXTERN int uv_is_closing(const uv_handle_t* handle)
91
+ VALUE foolio_is_closing(VALUE self, VALUE handle) {
92
+ const uv_handle_t* handle_;
93
+ Data_Get_Struct(handle, const uv_handle_t, handle_);
94
+ int retval = uv_is_closing(handle_);
95
+ return INT2NUM(retval);
96
+ }
97
+
98
+ // UV_EXTERN int uv_udp_init(uv_loop_t*, uv_udp_t* handle)
99
+ VALUE foolio_udp_init(VALUE self, VALUE uv_loop_t*, VALUE handle) {
100
+ // uv_loop_t*;
101
+ uv_udp_t* handle_;
102
+ Data_Get_Struct(handle, uv_udp_t, handle_);
103
+ int retval = uv_udp_init(uv_loop_t*_, handle_);
104
+ return INT2NUM(retval);
105
+ }
106
+
107
+ // UV_EXTERN int uv_udp_bind(uv_udp_t* handle, struct sockaddr_in addr, unsigned int flags)
108
+ VALUE foolio_udp_bind(VALUE self, VALUE handle, VALUE addr, VALUE flags) {
109
+ uv_udp_t* handle_;
110
+ Data_Get_Struct(handle, uv_udp_t, handle_);
111
+ // struct sockaddr_in addr;
112
+ unsigned int flags_ = NUM2UINT(flags);
113
+ int retval = uv_udp_bind(handle_, addr_, flags_);
114
+ return INT2NUM(retval);
115
+ }
116
+
117
+ // UV_EXTERN int uv_udp_bind6(uv_udp_t* handle, struct sockaddr_in6 addr, unsigned int flags)
118
+ VALUE foolio_udp_bind6(VALUE self, VALUE handle, VALUE addr, VALUE flags) {
119
+ uv_udp_t* handle_;
120
+ Data_Get_Struct(handle, uv_udp_t, handle_);
121
+ // struct sockaddr_in6 addr;
122
+ unsigned int flags_ = NUM2UINT(flags);
123
+ int retval = uv_udp_bind6(handle_, addr_, flags_);
124
+ return INT2NUM(retval);
125
+ }
126
+
127
+ // UV_EXTERN int uv_udp_getsockname(uv_udp_t* handle, struct sockaddr* name, int* namelen)
128
+ VALUE foolio_udp_getsockname(VALUE self, VALUE handle, VALUE name, VALUE namelen) {
129
+ uv_udp_t* handle_;
130
+ Data_Get_Struct(handle, uv_udp_t, handle_);
131
+ // struct sockaddr* name;
132
+ // int* namelen;
133
+ int retval = uv_udp_getsockname(handle_, name_, namelen_);
134
+ return INT2NUM(retval);
135
+ }
136
+
137
+ // UV_EXTERN int uv_udp_set_membership(uv_udp_t* handle, const char* multicast_addr, const char* interface_addr, uv_membership membership)
138
+ VALUE foolio_udp_set_membership(VALUE self, VALUE handle, VALUE multicast_addr, VALUE interface_addr, VALUE membership) {
139
+ uv_udp_t* handle_;
140
+ Data_Get_Struct(handle, uv_udp_t, handle_);
141
+ const char* multicast_addr_ = StringValueCStr(multicast_addr);
142
+ const char* interface_addr_ = StringValueCStr(interface_addr);
143
+ // uv_membership membership;
144
+ int retval = uv_udp_set_membership(handle_, multicast_addr_, interface_addr_, membership_);
145
+ return INT2NUM(retval);
146
+ }
147
+
148
+ // UV_EXTERN int uv_udp_set_multicast_loop(uv_udp_t* handle, int on)
149
+ VALUE foolio_udp_set_multicast_loop(VALUE self, VALUE handle, VALUE on) {
150
+ uv_udp_t* handle_;
151
+ Data_Get_Struct(handle, uv_udp_t, handle_);
152
+ int on_ = NUM2INT(on);
153
+ int retval = uv_udp_set_multicast_loop(handle_, on_);
154
+ return INT2NUM(retval);
155
+ }
156
+
157
+ // UV_EXTERN int uv_udp_set_multicast_ttl(uv_udp_t* handle, int ttl)
158
+ VALUE foolio_udp_set_multicast_ttl(VALUE self, VALUE handle, VALUE ttl) {
159
+ uv_udp_t* handle_;
160
+ Data_Get_Struct(handle, uv_udp_t, handle_);
161
+ int ttl_ = NUM2INT(ttl);
162
+ int retval = uv_udp_set_multicast_ttl(handle_, ttl_);
163
+ return INT2NUM(retval);
164
+ }
165
+
166
+ // UV_EXTERN int uv_udp_set_broadcast(uv_udp_t* handle, int on)
167
+ VALUE foolio_udp_set_broadcast(VALUE self, VALUE handle, VALUE on) {
168
+ uv_udp_t* handle_;
169
+ Data_Get_Struct(handle, uv_udp_t, handle_);
170
+ int on_ = NUM2INT(on);
171
+ int retval = uv_udp_set_broadcast(handle_, on_);
172
+ return INT2NUM(retval);
173
+ }
174
+
175
+ // UV_EXTERN int uv_udp_set_ttl(uv_udp_t* handle, int ttl)
176
+ VALUE foolio_udp_set_ttl(VALUE self, VALUE handle, VALUE ttl) {
177
+ uv_udp_t* handle_;
178
+ Data_Get_Struct(handle, uv_udp_t, handle_);
179
+ int ttl_ = NUM2INT(ttl);
180
+ int retval = uv_udp_set_ttl(handle_, ttl_);
181
+ return INT2NUM(retval);
182
+ }
183
+
184
+ // UV_EXTERN int uv_udp_send(uv_udp_send_t* req, uv_udp_t* handle, uv_buf_t bufs[], int bufcnt, struct sockaddr_in addr, uv_udp_send_cb send_cb)
185
+ VALUE foolio_udp_send(VALUE self, VALUE req, VALUE handle, VALUE bufs[], VALUE bufcnt, VALUE addr, VALUE send_cb) {
186
+ uv_udp_send_t* req_;
187
+ Data_Get_Struct(req, uv_udp_send_t, req_);
188
+ uv_udp_t* handle_;
189
+ Data_Get_Struct(handle, uv_udp_t, handle_);
190
+ uv_buf_t bufs[]_;
191
+ Data_Get_Struct(bufs[], uv_buf_t, bufs[]_);
192
+ int bufcnt_ = NUM2INT(bufcnt);
193
+ // struct sockaddr_in addr;
194
+ handle_->data = (void*)callback(send_cb);
195
+ int retval = uv_udp_send(req_, handle_, bufs[]_, bufcnt_, addr_, send_cb_);
196
+ return INT2NUM(retval);
197
+ }
198
+
199
+ // UV_EXTERN int uv_udp_send6(uv_udp_send_t* req, uv_udp_t* handle, uv_buf_t bufs[], int bufcnt, struct sockaddr_in6 addr, uv_udp_send_cb send_cb)
200
+ VALUE foolio_udp_send6(VALUE self, VALUE req, VALUE handle, VALUE bufs[], VALUE bufcnt, VALUE addr, VALUE send_cb) {
201
+ uv_udp_send_t* req_;
202
+ Data_Get_Struct(req, uv_udp_send_t, req_);
203
+ uv_udp_t* handle_;
204
+ Data_Get_Struct(handle, uv_udp_t, handle_);
205
+ uv_buf_t bufs[]_;
206
+ Data_Get_Struct(bufs[], uv_buf_t, bufs[]_);
207
+ int bufcnt_ = NUM2INT(bufcnt);
208
+ // struct sockaddr_in6 addr;
209
+ handle_->data = (void*)callback(send_cb);
210
+ int retval = uv_udp_send6(req_, handle_, bufs[]_, bufcnt_, addr_, send_cb_);
211
+ return INT2NUM(retval);
212
+ }
213
+
214
+ // UV_EXTERN int uv_udp_recv_start(uv_udp_t* handle, uv_alloc_cb alloc_cb, uv_udp_recv_cb recv_cb)
215
+ VALUE foolio_udp_recv_start(VALUE self, VALUE handle, VALUE alloc_cb, VALUE recv_cb) {
216
+ uv_udp_t* handle_;
217
+ Data_Get_Struct(handle, uv_udp_t, handle_);
218
+ handle_->data = (void*)callback(alloc_cb);
219
+ handle_->data = (void*)callback(recv_cb);
220
+ int retval = uv_udp_recv_start(handle_, alloc_cb_, recv_cb_);
221
+ return INT2NUM(retval);
222
+ }
223
+
224
+ // UV_EXTERN int uv_udp_recv_stop(uv_udp_t* handle)
225
+ VALUE foolio_udp_recv_stop(VALUE self, VALUE handle) {
226
+ uv_udp_t* handle_;
227
+ Data_Get_Struct(handle, uv_udp_t, handle_);
228
+ int retval = uv_udp_recv_stop(handle_);
229
+ return INT2NUM(retval);
230
+ }
231
+
232
+ // UV_EXTERN int uv_fs_event_init(uv_loop_t* loop, uv_fs_event_t* handle, const char* filename, uv_fs_event_cb cb, int flags)
233
+ VALUE foolio_fs_event_init(VALUE self, VALUE loop, VALUE handle, VALUE filename, VALUE cb, VALUE flags) {
234
+ uv_loop_t* loop_;
235
+ Data_Get_Struct(loop, uv_loop_t, loop_);
236
+ uv_fs_event_t* handle_;
237
+ Data_Get_Struct(handle, uv_fs_event_t, handle_);
238
+ const char* filename_ = StringValueCStr(filename);
239
+ handle_->data = (void*)callback(cb);
240
+ int flags_ = NUM2INT(flags);
241
+ int retval = uv_fs_event_init(loop_, handle_, filename_, cb_, flags_);
242
+ return INT2NUM(retval);
243
+ }
@@ -0,0 +1,33 @@
1
+ *.swp
2
+ *.o
3
+ *.lo
4
+ *.la
5
+ *.a
6
+ *.opensdf
7
+ *.orig
8
+ *.sdf
9
+ *.suo
10
+ core
11
+ vgcore.*
12
+ /out/
13
+ /build/gyp
14
+
15
+ /test/run-tests
16
+ /test/run-tests.exe
17
+ /test/run-tests.dSYM
18
+ /test/run-benchmarks
19
+ /test/run-benchmarks.exe
20
+ /test/run-benchmarks.dSYM
21
+
22
+ *.sln
23
+ *.vcproj
24
+ *.vcxproj
25
+ *.vcxproj.filters
26
+ *.vcxproj.user
27
+ _UpgradeReport_Files/
28
+ UpgradeLog*.XML
29
+ Debug
30
+ Release
31
+ ipch
32
+ *.mk
33
+ *.Makefile
@@ -0,0 +1,13 @@
1
+ # update AUTHORS with:
2
+ # git log --all --reverse --format='%aN <%aE>' | perl -ne 'BEGIN{print "# Authors ordered by first contribution.\n"} print unless $h{$_}; $h{$_} = 1' > AUTHORS
3
+ <rm@joyent.com> <rm@fingolfin.org>
4
+ <ryan@joyent.com> <ry@tinyclouds.org>
5
+ <bertbelder@gmail.com> <info@2bs.nl>
6
+ <alan@prettyrobots.com> <alan@blogometer.com>
7
+ San-Tai Hsu <vanilla@fatpipi.com>
8
+ Isaac Z. Schlueter <i@izs.me>
9
+ Saúl Ibarra Corretgé <saghul@gmail.com>
10
+ Yuki OKUMURA <mjt@cltn.org>
11
+ Frank Denis <github@pureftpd.org>
12
+ Ryan Emery <seebees@gmail.com>
13
+ Yasuhiro Matsumoto <mattn.jp@gmail.com>
@@ -0,0 +1,9 @@
1
+ language: node_js
2
+
3
+ script:
4
+ - "make test"
5
+
6
+ notifications:
7
+ email: false
8
+ irc:
9
+ - "irc.freenode.net#libuv"
@@ -0,0 +1,61 @@
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>
46
+ Nathan Rajlich <nathan@tootallnate.net>
47
+ Brandon Philips <brandon@ifup.org>
48
+ Charlie McConnell <charlie@charlieistheman.com>
49
+ Vladimir Dronnikov <dronnikov@gmail.com>
50
+ Aaron Bieber <qbit@deftly.net>
51
+ Bulat Shakirzyanov <mallluhuct@gmail.com>
52
+ Brian White <mscdex@mscdex.net>
53
+ Erik Dubbelboer <erik@dubbelboer.com>
54
+ Keno Fischer <kenof@stanford.edu>
55
+ Ira Cooper <Ira.Cooper@mathworks.com>
56
+ Andrius Bentkus <andrius.bentkus@gmail.com>
57
+ Brian White <mscdex@gmail.com>
58
+ Iñaki Baz Castillo <ibc@aliax.net>
59
+ Mark Cavage <mark.cavage@joyent.com>
60
+ George Yohng <georgegh@oss3d.com>
61
+ Xidorn Quan <quanxunzhen@gmail.com>
@@ -0,0 +1,44 @@
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
+ - libev, located at ev/ is copyright Marc Alexander Lehmann, and
37
+ dual-licensed under the MIT license and GPL2.
38
+
39
+ - libeio, located at eio/ is copyright Marc Alexander Lehmann, and
40
+ dual-licensed under the MIT license and GPL2.
41
+
42
+ - inet_pton and inet_ntop implementations, contained in src/inet.c, are
43
+ copyright the Internet Systems Consortium, Inc., and licensed under the ISC
44
+ license.