noderb 0.0.4 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (361) hide show
  1. data/ext/noderb_extension/libuv/AUTHORS +11 -1
  2. data/ext/noderb_extension/libuv/LICENSE +0 -8
  3. data/ext/noderb_extension/libuv/Makefile +5 -5
  4. data/ext/noderb_extension/libuv/README +11 -6
  5. data/ext/noderb_extension/libuv/common.gypi +158 -7
  6. data/ext/noderb_extension/libuv/config-unix.mk +34 -26
  7. data/ext/noderb_extension/libuv/gyp_uv +22 -4
  8. data/ext/noderb_extension/libuv/include/{eio.h → uv-private/eio.h} +2 -2
  9. data/ext/noderb_extension/libuv/include/{uv-unix.h → uv-private/uv-unix.h} +40 -0
  10. data/ext/noderb_extension/libuv/include/{uv-win.h → uv-private/uv-win.h} +96 -14
  11. data/ext/noderb_extension/libuv/include/uv.h +508 -83
  12. data/ext/noderb_extension/libuv/src/unix/cares.c +185 -0
  13. data/ext/noderb_extension/libuv/src/unix/core.c +828 -0
  14. data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_darwin.h +4 -0
  15. data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_linux.h +5 -15
  16. data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.c +23 -2
  17. data/ext/noderb_extension/libuv/src/unix/error.c +102 -0
  18. data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_linux.h +26 -15
  19. data/ext/noderb_extension/libuv/src/unix/fs.c +562 -0
  20. data/ext/noderb_extension/libuv/src/unix/internal.h +75 -0
  21. data/ext/noderb_extension/libuv/src/unix/pipe.c +282 -0
  22. data/ext/noderb_extension/libuv/src/unix/process.c +287 -0
  23. data/ext/noderb_extension/libuv/src/unix/stream.c +727 -0
  24. data/ext/noderb_extension/libuv/src/unix/tcp.c +226 -0
  25. data/ext/noderb_extension/libuv/src/unix/udp.c +524 -0
  26. data/ext/noderb_extension/libuv/src/{uv-eio.c → unix/uv-eio.c} +48 -27
  27. data/ext/noderb_extension/libuv/src/{uv-eio.h → unix/uv-eio.h} +1 -1
  28. data/ext/noderb_extension/libuv/src/uv-common.c +24 -14
  29. data/ext/noderb_extension/libuv/src/uv-common.h +12 -7
  30. data/ext/noderb_extension/libuv/src/win/async.c +14 -16
  31. data/ext/noderb_extension/libuv/src/win/cares.c +64 -79
  32. data/ext/noderb_extension/libuv/src/win/core.c +105 -53
  33. data/ext/noderb_extension/libuv/src/win/error.c +23 -13
  34. data/ext/noderb_extension/libuv/src/win/fs.c +807 -0
  35. data/ext/noderb_extension/libuv/src/win/getaddrinfo.c +61 -41
  36. data/ext/noderb_extension/libuv/src/win/handle.c +56 -30
  37. data/ext/noderb_extension/libuv/src/win/internal.h +134 -95
  38. data/ext/noderb_extension/libuv/src/win/loop-watcher.c +21 -18
  39. data/ext/noderb_extension/libuv/src/win/pipe.c +313 -158
  40. data/ext/noderb_extension/libuv/src/win/process.c +117 -131
  41. data/ext/noderb_extension/libuv/src/win/req.c +55 -31
  42. data/ext/noderb_extension/libuv/src/win/stdio.c +5 -5
  43. data/ext/noderb_extension/libuv/src/win/stream.c +19 -14
  44. data/ext/noderb_extension/libuv/src/win/tcp.c +278 -336
  45. data/ext/noderb_extension/libuv/src/win/threadpool.c +73 -0
  46. data/ext/noderb_extension/libuv/src/win/timer.c +44 -37
  47. data/ext/noderb_extension/libuv/src/win/udp.c +592 -0
  48. data/ext/noderb_extension/libuv/src/win/util.c +20 -6
  49. data/ext/noderb_extension/libuv/src/win/winapi.c +23 -6
  50. data/ext/noderb_extension/libuv/src/win/winapi.h +4206 -0
  51. data/ext/noderb_extension/libuv/src/win/winsock.c +270 -0
  52. data/ext/noderb_extension/libuv/src/win/winsock.h +134 -0
  53. data/ext/noderb_extension/libuv/test/benchmark-ares.c +10 -6
  54. data/ext/noderb_extension/libuv/test/benchmark-getaddrinfo.c +10 -7
  55. data/ext/noderb_extension/libuv/test/benchmark-list.h +21 -0
  56. data/ext/noderb_extension/libuv/test/benchmark-ping-pongs.c +11 -7
  57. data/ext/noderb_extension/libuv/test/benchmark-pound.c +147 -58
  58. data/ext/noderb_extension/libuv/test/benchmark-pump.c +29 -23
  59. data/ext/noderb_extension/libuv/test/benchmark-spawn.c +13 -10
  60. data/ext/noderb_extension/libuv/test/benchmark-udp-packet-storm.c +250 -0
  61. data/ext/noderb_extension/libuv/test/dns-server.c +11 -6
  62. data/ext/noderb_extension/libuv/test/echo-server.c +30 -22
  63. data/ext/noderb_extension/libuv/test/test-async.c +3 -3
  64. data/ext/noderb_extension/libuv/test/test-callback-stack.c +6 -6
  65. data/ext/noderb_extension/libuv/test/test-connection-fail.c +6 -5
  66. data/ext/noderb_extension/libuv/test/test-delayed-accept.c +13 -13
  67. data/ext/noderb_extension/libuv/test/test-fs.c +715 -0
  68. data/ext/noderb_extension/libuv/test/test-getaddrinfo.c +11 -8
  69. data/ext/noderb_extension/libuv/test/test-gethostbyname.c +8 -9
  70. data/ext/noderb_extension/libuv/test/test-getsockname.c +142 -16
  71. data/ext/noderb_extension/libuv/test/test-idle.c +4 -3
  72. data/ext/noderb_extension/libuv/test/test-list.h +29 -2
  73. data/ext/noderb_extension/libuv/test/test-loop-handles.c +9 -8
  74. data/ext/noderb_extension/libuv/test/test-ping-pong.c +9 -9
  75. data/ext/noderb_extension/libuv/test/test-pipe-bind-error.c +18 -14
  76. data/ext/noderb_extension/libuv/test/test-ref.c +17 -16
  77. data/ext/noderb_extension/libuv/test/test-shutdown-eof.c +5 -5
  78. data/ext/noderb_extension/libuv/test/test-spawn.c +17 -17
  79. data/ext/noderb_extension/libuv/test/test-tcp-bind-error.c +24 -18
  80. data/ext/noderb_extension/libuv/test/test-tcp-bind6-error.c +19 -14
  81. data/ext/noderb_extension/libuv/test/test-tcp-writealot.c +6 -5
  82. data/ext/noderb_extension/libuv/test/test-threadpool.c +59 -0
  83. data/ext/noderb_extension/libuv/test/test-timer-again.c +15 -12
  84. data/ext/noderb_extension/libuv/test/test-timer.c +8 -8
  85. data/ext/noderb_extension/libuv/test/test-udp-dgram-too-big.c +88 -0
  86. data/ext/noderb_extension/libuv/test/test-udp-ipv6.c +158 -0
  87. data/ext/noderb_extension/libuv/test/test-udp-send-and-recv.c +210 -0
  88. data/ext/noderb_extension/libuv/{all.gyp → uv.gyp} +75 -77
  89. data/ext/noderb_extension/libuv/vcbuild.bat +93 -0
  90. data/ext/noderb_extension/noderb.c +13 -0
  91. data/ext/noderb_extension/noderb_common.h +2 -1
  92. data/ext/noderb_extension/noderb_defer.c +54 -0
  93. data/ext/noderb_extension/noderb_defer.h +15 -0
  94. data/ext/noderb_extension/noderb_dns.c +1 -1
  95. data/ext/noderb_extension/noderb_fs.c +277 -0
  96. data/ext/noderb_extension/noderb_fs.h +27 -0
  97. data/ext/noderb_extension/noderb_process.c +5 -5
  98. data/ext/noderb_extension/noderb_tcp.c +10 -6
  99. data/ext/noderb_extension/noderb_timers.c +1 -1
  100. data/ext/noderb_extension/noderb_tools.c +42 -8
  101. data/ext/noderb_extension/noderb_tools.h +3 -1
  102. data/lib/noderb/defer.rb +25 -0
  103. data/lib/noderb/file.rb +119 -0
  104. data/lib/noderb/fs.rb +72 -0
  105. data/lib/noderb/version.rb +1 -1
  106. data/lib/noderb.rb +8 -0
  107. metadata +102 -266
  108. data/ext/noderb_extension/libuv/BSDmakefile +0 -2
  109. data/ext/noderb_extension/libuv/create-msvs-files.bat +0 -21
  110. data/ext/noderb_extension/libuv/deps/pthread-win32/ANNOUNCE +0 -482
  111. data/ext/noderb_extension/libuv/deps/pthread-win32/BUGS +0 -141
  112. data/ext/noderb_extension/libuv/deps/pthread-win32/Bmakefile +0 -268
  113. data/ext/noderb_extension/libuv/deps/pthread-win32/CONTRIBUTORS +0 -140
  114. data/ext/noderb_extension/libuv/deps/pthread-win32/COPYING +0 -150
  115. data/ext/noderb_extension/libuv/deps/pthread-win32/COPYING.LIB +0 -504
  116. data/ext/noderb_extension/libuv/deps/pthread-win32/ChangeLog +0 -5194
  117. data/ext/noderb_extension/libuv/deps/pthread-win32/FAQ +0 -451
  118. data/ext/noderb_extension/libuv/deps/pthread-win32/GNUmakefile +0 -593
  119. data/ext/noderb_extension/libuv/deps/pthread-win32/MAINTAINERS +0 -4
  120. data/ext/noderb_extension/libuv/deps/pthread-win32/Makefile +0 -516
  121. data/ext/noderb_extension/libuv/deps/pthread-win32/NEWS +0 -1245
  122. data/ext/noderb_extension/libuv/deps/pthread-win32/Nmakefile +0 -24
  123. data/ext/noderb_extension/libuv/deps/pthread-win32/Nmakefile.tests +0 -260
  124. data/ext/noderb_extension/libuv/deps/pthread-win32/PROGRESS +0 -4
  125. data/ext/noderb_extension/libuv/deps/pthread-win32/README +0 -601
  126. data/ext/noderb_extension/libuv/deps/pthread-win32/README.Borland +0 -57
  127. data/ext/noderb_extension/libuv/deps/pthread-win32/README.CV +0 -3036
  128. data/ext/noderb_extension/libuv/deps/pthread-win32/README.NONPORTABLE +0 -783
  129. data/ext/noderb_extension/libuv/deps/pthread-win32/README.Watcom +0 -62
  130. data/ext/noderb_extension/libuv/deps/pthread-win32/README.WinCE +0 -6
  131. data/ext/noderb_extension/libuv/deps/pthread-win32/TODO +0 -7
  132. data/ext/noderb_extension/libuv/deps/pthread-win32/WinCE-PORT +0 -222
  133. data/ext/noderb_extension/libuv/deps/pthread-win32/attr.c +0 -53
  134. data/ext/noderb_extension/libuv/deps/pthread-win32/autostatic.c +0 -69
  135. data/ext/noderb_extension/libuv/deps/pthread-win32/barrier.c +0 -47
  136. data/ext/noderb_extension/libuv/deps/pthread-win32/build/all.gyp +0 -207
  137. data/ext/noderb_extension/libuv/deps/pthread-win32/builddmc.bat +0 -9
  138. data/ext/noderb_extension/libuv/deps/pthread-win32/cancel.c +0 -44
  139. data/ext/noderb_extension/libuv/deps/pthread-win32/cleanup.c +0 -148
  140. data/ext/noderb_extension/libuv/deps/pthread-win32/condvar.c +0 -50
  141. data/ext/noderb_extension/libuv/deps/pthread-win32/config.h +0 -153
  142. data/ext/noderb_extension/libuv/deps/pthread-win32/context.h +0 -74
  143. data/ext/noderb_extension/libuv/deps/pthread-win32/create.c +0 -308
  144. data/ext/noderb_extension/libuv/deps/pthread-win32/dll.c +0 -92
  145. data/ext/noderb_extension/libuv/deps/pthread-win32/errno.c +0 -94
  146. data/ext/noderb_extension/libuv/deps/pthread-win32/exit.c +0 -44
  147. data/ext/noderb_extension/libuv/deps/pthread-win32/fork.c +0 -39
  148. data/ext/noderb_extension/libuv/deps/pthread-win32/global.c +0 -107
  149. data/ext/noderb_extension/libuv/deps/pthread-win32/implement.h +0 -944
  150. data/ext/noderb_extension/libuv/deps/pthread-win32/misc.c +0 -50
  151. data/ext/noderb_extension/libuv/deps/pthread-win32/mutex.c +0 -62
  152. data/ext/noderb_extension/libuv/deps/pthread-win32/need_errno.h +0 -145
  153. data/ext/noderb_extension/libuv/deps/pthread-win32/nonportable.c +0 -47
  154. data/ext/noderb_extension/libuv/deps/pthread-win32/private.c +0 -54
  155. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.c +0 -66
  156. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.dsp +0 -142
  157. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.dsw +0 -29
  158. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.h +0 -1368
  159. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_destroy.c +0 -79
  160. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getdetachstate.c +0 -86
  161. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getinheritsched.c +0 -51
  162. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getschedparam.c +0 -52
  163. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getschedpolicy.c +0 -61
  164. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getscope.c +0 -54
  165. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getstackaddr.c +0 -97
  166. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getstacksize.c +0 -100
  167. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_init.c +0 -117
  168. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setdetachstate.c +0 -91
  169. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setinheritsched.c +0 -57
  170. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setschedparam.c +0 -63
  171. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setschedpolicy.c +0 -55
  172. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setscope.c +0 -62
  173. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setstackaddr.c +0 -97
  174. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setstacksize.c +0 -110
  175. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_destroy.c +0 -103
  176. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_init.c +0 -69
  177. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_wait.c +0 -104
  178. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_destroy.c +0 -83
  179. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_getpshared.c +0 -95
  180. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_init.c +0 -85
  181. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_setpshared.c +0 -119
  182. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cancel.c +0 -189
  183. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_destroy.c +0 -253
  184. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_init.c +0 -167
  185. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_signal.c +0 -231
  186. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_wait.c +0 -567
  187. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_destroy.c +0 -86
  188. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_getpshared.c +0 -97
  189. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_init.c +0 -87
  190. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_setpshared.c +0 -117
  191. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_delay_np.c +0 -172
  192. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_detach.c +0 -136
  193. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_equal.c +0 -76
  194. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_exit.c +0 -106
  195. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getconcurrency.c +0 -45
  196. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getschedparam.c +0 -75
  197. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getspecific.c +0 -87
  198. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getunique_np.c +0 -47
  199. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getw32threadhandle_np.c +0 -65
  200. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_join.c +0 -157
  201. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_key_create.c +0 -108
  202. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_key_delete.c +0 -125
  203. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_kill.c +0 -105
  204. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_consistent.c +0 -187
  205. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_destroy.c +0 -148
  206. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_init.c +0 -130
  207. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_lock.c +0 -269
  208. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_timedlock.c +0 -324
  209. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_trylock.c +0 -154
  210. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_unlock.c +0 -175
  211. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_destroy.c +0 -83
  212. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getkind_np.c +0 -44
  213. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getpshared.c +0 -95
  214. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getrobust.c +0 -113
  215. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_gettype.c +0 -56
  216. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_init.c +0 -86
  217. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setkind_np.c +0 -44
  218. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setpshared.c +0 -119
  219. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setrobust.c +0 -119
  220. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_settype.c +0 -143
  221. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_num_processors_np.c +0 -56
  222. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_once.c +0 -79
  223. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_destroy.c +0 -143
  224. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_init.c +0 -109
  225. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_rdlock.c +0 -102
  226. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_timedrdlock.c +0 -109
  227. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_timedwrlock.c +0 -139
  228. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_tryrdlock.c +0 -102
  229. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_trywrlock.c +0 -122
  230. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_unlock.c +0 -93
  231. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_wrlock.c +0 -133
  232. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_destroy.c +0 -84
  233. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_getpshared.c +0 -97
  234. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_init.c +0 -83
  235. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_setpshared.c +0 -120
  236. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_self.c +0 -141
  237. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setcancelstate.c +0 -125
  238. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setcanceltype.c +0 -126
  239. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setconcurrency.c +0 -53
  240. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setschedparam.c +0 -123
  241. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setspecific.c +0 -167
  242. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_destroy.c +0 -111
  243. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_init.c +0 -123
  244. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_lock.c +0 -80
  245. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_trylock.c +0 -77
  246. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_unlock.c +0 -71
  247. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_testcancel.c +0 -103
  248. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_timechange_handler_np.c +0 -108
  249. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_win32_attach_detach_np.c +0 -258
  250. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_MCS_lock.c +0 -278
  251. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_callUserDestroyRoutines.c +0 -232
  252. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_calloc.c +0 -56
  253. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_cond_check_need_init.c +0 -78
  254. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_getprocessors.c +0 -91
  255. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_is_attr.c +0 -47
  256. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_mutex_check_need_init.c +0 -92
  257. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_new.c +0 -94
  258. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_processInitialize.c +0 -92
  259. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_processTerminate.c +0 -105
  260. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_relmillisecs.c +0 -132
  261. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_reuse.c +0 -151
  262. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_rwlock_cancelwrwait.c +0 -50
  263. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_rwlock_check_need_init.c +0 -77
  264. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_semwait.c +0 -135
  265. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_spinlock_check_need_init.c +0 -78
  266. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_threadDestroy.c +0 -79
  267. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_threadStart.c +0 -357
  268. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_throw.c +0 -189
  269. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_timespec.c +0 -83
  270. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_tkAssocCreate.c +0 -118
  271. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_tkAssocDestroy.c +0 -114
  272. data/ext/noderb_extension/libuv/deps/pthread-win32/rwlock.c +0 -51
  273. data/ext/noderb_extension/libuv/deps/pthread-win32/sched.c +0 -53
  274. data/ext/noderb_extension/libuv/deps/pthread-win32/sched.h +0 -183
  275. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_get_priority_max.c +0 -134
  276. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_get_priority_min.c +0 -135
  277. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_getscheduler.c +0 -71
  278. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_setscheduler.c +0 -83
  279. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_yield.c +0 -71
  280. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_close.c +0 -58
  281. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_destroy.c +0 -144
  282. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_getvalue.c +0 -110
  283. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_init.c +0 -169
  284. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_open.c +0 -58
  285. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_post.c +0 -128
  286. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_post_multiple.c +0 -142
  287. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_timedwait.c +0 -238
  288. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_trywait.c +0 -117
  289. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_unlink.c +0 -58
  290. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_wait.c +0 -187
  291. data/ext/noderb_extension/libuv/deps/pthread-win32/semaphore.c +0 -69
  292. data/ext/noderb_extension/libuv/deps/pthread-win32/semaphore.h +0 -169
  293. data/ext/noderb_extension/libuv/deps/pthread-win32/signal.c +0 -179
  294. data/ext/noderb_extension/libuv/deps/pthread-win32/spin.c +0 -46
  295. data/ext/noderb_extension/libuv/deps/pthread-win32/sync.c +0 -43
  296. data/ext/noderb_extension/libuv/deps/pthread-win32/tsd.c +0 -44
  297. data/ext/noderb_extension/libuv/deps/pthread-win32/version.rc +0 -388
  298. data/ext/noderb_extension/libuv/deps/pthread-win32/w32_CancelableWait.c +0 -161
  299. data/ext/noderb_extension/libuv/doc/iocp-links.html +0 -574
  300. data/ext/noderb_extension/libuv/src/uv-unix.c +0 -2421
  301. data/ext/noderb_extension/libuv/src/win/ntdll.h +0 -130
  302. /data/ext/noderb_extension/libuv/include/{ev.h → uv-private/ev.h} +0 -0
  303. /data/ext/noderb_extension/libuv/include/{ngx-queue.h → uv-private/ngx-queue.h} +0 -0
  304. /data/ext/noderb_extension/libuv/include/{tree.h → uv-private/tree.h} +0 -0
  305. /data/ext/noderb_extension/libuv/src/{uv-cygwin.c → unix/cygwin.c} +0 -0
  306. /data/ext/noderb_extension/libuv/src/{uv-darwin.c → unix/darwin.c} +0 -0
  307. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/Changes +0 -0
  308. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/LICENSE +0 -0
  309. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/Makefile.am +0 -0
  310. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/aclocal.m4 +0 -0
  311. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/autogen.sh +0 -0
  312. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config.h.in +0 -0
  313. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_cygwin.h +0 -0
  314. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_freebsd.h +0 -0
  315. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_sunos.h +0 -0
  316. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/configure.ac +0 -0
  317. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/demo.c +0 -0
  318. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/ecb.h +0 -0
  319. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.3 +0 -0
  320. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.pod +0 -0
  321. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/libeio.m4 +0 -0
  322. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/xthread.h +0 -0
  323. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Changes +0 -0
  324. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/LICENSE +0 -0
  325. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Makefile.am +0 -0
  326. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Makefile.in +0 -0
  327. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/README +0 -0
  328. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/aclocal.m4 +0 -0
  329. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/autogen.sh +0 -0
  330. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.guess +0 -0
  331. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.h.in +0 -0
  332. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.sub +0 -0
  333. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_cygwin.h +0 -0
  334. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_darwin.h +0 -0
  335. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_freebsd.h +0 -0
  336. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_sunos.h +0 -0
  337. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/configure +0 -0
  338. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/configure.ac +0 -0
  339. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/depcomp +0 -0
  340. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev++.h +0 -0
  341. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.3 +0 -0
  342. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.c +0 -0
  343. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.pod +0 -0
  344. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_epoll.c +0 -0
  345. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_kqueue.c +0 -0
  346. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_poll.c +0 -0
  347. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_port.c +0 -0
  348. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_select.c +0 -0
  349. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_vars.h +0 -0
  350. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_win32.c +0 -0
  351. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_wrap.h +0 -0
  352. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/event.c +0 -0
  353. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/event.h +0 -0
  354. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/install-sh +0 -0
  355. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/libev.m4 +0 -0
  356. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ltmain.sh +0 -0
  357. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/missing +0 -0
  358. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/mkinstalldirs +0 -0
  359. /data/ext/noderb_extension/libuv/src/{uv-freebsd.c → unix/freebsd.c} +0 -0
  360. /data/ext/noderb_extension/libuv/src/{uv-linux.c → unix/linux.c} +0 -0
  361. /data/ext/noderb_extension/libuv/src/{uv-sunos.c → unix/sunos.c} +0 -0
@@ -19,6 +19,8 @@
19
19
  * IN THE SOFTWARE.
20
20
  */
21
21
 
22
+ /* See uv_loop_new for an introduction. */
23
+
22
24
  #ifndef UV_H
23
25
  #define UV_H
24
26
  #ifdef __cplusplus
@@ -39,10 +41,13 @@ extern "C" {
39
41
  typedef intptr_t ssize_t;
40
42
  #endif
41
43
 
44
+ typedef struct uv_loop_s uv_loop_t;
45
+ typedef struct uv_ares_task_s uv_ares_task_t;
42
46
  typedef struct uv_err_s uv_err_t;
43
47
  typedef struct uv_handle_s uv_handle_t;
44
48
  typedef struct uv_stream_s uv_stream_t;
45
49
  typedef struct uv_tcp_s uv_tcp_t;
50
+ typedef struct uv_udp_s uv_udp_t;
46
51
  typedef struct uv_pipe_s uv_pipe_t;
47
52
  typedef struct uv_timer_s uv_timer_t;
48
53
  typedef struct uv_prepare_s uv_prepare_t;
@@ -51,20 +56,60 @@ typedef struct uv_idle_s uv_idle_t;
51
56
  typedef struct uv_async_s uv_async_t;
52
57
  typedef struct uv_getaddrinfo_s uv_getaddrinfo_t;
53
58
  typedef struct uv_process_s uv_process_t;
59
+ typedef struct uv_counters_s uv_counters_t;
54
60
  /* Request types */
55
61
  typedef struct uv_req_s uv_req_t;
56
62
  typedef struct uv_shutdown_s uv_shutdown_t;
57
63
  typedef struct uv_write_s uv_write_t;
58
64
  typedef struct uv_connect_s uv_connect_t;
65
+ typedef struct uv_udp_send_s uv_udp_send_t;
66
+ typedef struct uv_fs_s uv_fs_t;
67
+ typedef struct uv_work_s uv_work_t;
59
68
 
60
69
  #if defined(__unix__) || defined(__POSIX__) || defined(__APPLE__)
61
- # include "uv-unix.h"
70
+ # include "uv-private/uv-unix.h"
62
71
  #else
63
- # include "uv-win.h"
72
+ # include "uv-private/uv-win.h"
64
73
  #endif
65
74
 
66
75
 
67
- /* The status parameter is 0 if the request completed successfully,
76
+ /*
77
+ * This function must be called before any other functions in libuv.
78
+ *
79
+ * All functions besides uv_run() are non-blocking.
80
+ *
81
+ * All callbacks in libuv are made asynchronously. That is they are never
82
+ * made by the function that takes them as a parameter.
83
+ */
84
+ void uv_init();
85
+ uv_loop_t* uv_loop_new();
86
+
87
+ void uv_loop_delete(uv_loop_t*);
88
+
89
+ /*
90
+ * Returns the default loop.
91
+ */
92
+ uv_loop_t* uv_default_loop();
93
+
94
+ /*
95
+ * This function starts the event loop. It blocks until the reference count
96
+ * of the loop drops to zero.
97
+ */
98
+ int uv_run(uv_loop_t*);
99
+
100
+ /*
101
+ * Manually modify the event loop's reference count. Useful if the user wants
102
+ * to have a handle or timeout that doesn't keep the loop alive.
103
+ */
104
+ void uv_ref(uv_loop_t*);
105
+ void uv_unref(uv_loop_t*);
106
+
107
+ void uv_update_time(uv_loop_t*);
108
+ int64_t uv_now(uv_loop_t*);
109
+
110
+
111
+ /*
112
+ * The status parameter is 0 if the request completed successfully,
68
113
  * and should be -1 if the request was cancelled or failed.
69
114
  * For uv_close_cb, -1 means that the handle was closed due to an error.
70
115
  * Error details can be obtained by calling uv_last_error().
@@ -72,8 +117,8 @@ typedef struct uv_connect_s uv_connect_t;
72
117
  * In the case of uv_read_cb the uv_buf_t returned should be freed by the
73
118
  * user.
74
119
  */
75
- typedef uv_buf_t (*uv_alloc_cb)(uv_stream_t* tcp, size_t suggested_size);
76
- typedef void (*uv_read_cb)(uv_stream_t* tcp, ssize_t nread, uv_buf_t buf);
120
+ typedef uv_buf_t (*uv_alloc_cb)(uv_handle_t* handle, size_t suggested_size);
121
+ typedef void (*uv_read_cb)(uv_stream_t* stream, ssize_t nread, uv_buf_t buf);
77
122
  typedef void (*uv_write_cb)(uv_write_t* req, int status);
78
123
  typedef void (*uv_connect_cb)(uv_connect_t* req, int status);
79
124
  typedef void (*uv_shutdown_cb)(uv_shutdown_t* req, int status);
@@ -85,8 +130,12 @@ typedef void (*uv_async_cb)(uv_async_t* handle, int status);
85
130
  typedef void (*uv_prepare_cb)(uv_prepare_t* handle, int status);
86
131
  typedef void (*uv_check_cb)(uv_check_t* handle, int status);
87
132
  typedef void (*uv_idle_cb)(uv_idle_t* handle, int status);
88
- typedef void (*uv_getaddrinfo_cb)(uv_getaddrinfo_t* handle, int status, struct addrinfo* res);
133
+ typedef void (*uv_getaddrinfo_cb)(uv_getaddrinfo_t* handle, int status,
134
+ struct addrinfo* res);
89
135
  typedef void (*uv_exit_cb)(uv_process_t*, int exit_status, int term_signal);
136
+ typedef void (*uv_fs_cb)(uv_fs_t* req);
137
+ typedef void (*uv_work_cb)(uv_work_t* req);
138
+ typedef void (*uv_after_work_cb)(uv_work_t* req);
90
139
 
91
140
 
92
141
  /* Expand this list if necessary. */
@@ -112,6 +161,7 @@ typedef enum {
112
161
  UV_EINVAL,
113
162
  UV_EISCONN,
114
163
  UV_EMFILE,
164
+ UV_EMSGSIZE,
115
165
  UV_ENETDOWN,
116
166
  UV_ENETUNREACH,
117
167
  UV_ENFILE,
@@ -138,6 +188,7 @@ typedef enum {
138
188
  typedef enum {
139
189
  UV_UNKNOWN_HANDLE = 0,
140
190
  UV_TCP,
191
+ UV_UDP,
141
192
  UV_NAMED_PIPE,
142
193
  UV_TTY,
143
194
  UV_FILE,
@@ -160,6 +211,9 @@ typedef enum {
160
211
  UV_WRITE,
161
212
  UV_SHUTDOWN,
162
213
  UV_WAKEUP,
214
+ UV_UDP_SEND,
215
+ UV_FS,
216
+ UV_WORK,
163
217
  UV_REQ_TYPE_PRIVATE
164
218
  } uv_req_type;
165
219
 
@@ -172,6 +226,16 @@ struct uv_err_s {
172
226
  };
173
227
 
174
228
 
229
+ /*
230
+ * Most functions return boolean: 0 for success and -1 for failure.
231
+ * On error the user should then call uv_last_error() to determine
232
+ * the error code.
233
+ */
234
+ uv_err_t uv_last_error(uv_loop_t*);
235
+ char* uv_strerror(uv_err_t err);
236
+ const char* uv_err_name(uv_err_t err);
237
+
238
+
175
239
  #define UV_REQ_FIELDS \
176
240
  /* read-only */ \
177
241
  uv_req_type type; \
@@ -191,11 +255,15 @@ UV_PRIVATE_REQ_TYPES
191
255
 
192
256
 
193
257
  /*
258
+ * uv_shutdown_t is a subclass of uv_req_t
259
+ *
194
260
  * Shutdown the outgoing (write) side of a duplex stream. It waits for
195
261
  * pending write requests to complete. The handle should refer to a
196
262
  * initialized stream. req should be an uninitalized shutdown request
197
263
  * struct. The cb is a called after shutdown is complete.
198
264
  */
265
+ int uv_shutdown(uv_shutdown_t* req, uv_stream_t* handle, uv_shutdown_cb cb);
266
+
199
267
  struct uv_shutdown_s {
200
268
  UV_REQ_FIELDS
201
269
  uv_stream_t* handle;
@@ -203,11 +271,10 @@ struct uv_shutdown_s {
203
271
  UV_SHUTDOWN_PRIVATE_FIELDS
204
272
  };
205
273
 
206
- int uv_shutdown(uv_shutdown_t* req, uv_stream_t* handle, uv_shutdown_cb cb);
207
-
208
274
 
209
275
  #define UV_HANDLE_FIELDS \
210
276
  /* read-only */ \
277
+ uv_loop_t* loop; \
211
278
  uv_handle_type type; \
212
279
  /* public */ \
213
280
  uv_close_cb close_cb; \
@@ -237,13 +304,29 @@ int uv_is_active(uv_handle_t* handle);
237
304
  void uv_close(uv_handle_t* handle, uv_close_cb close_cb);
238
305
 
239
306
 
307
+ /*
308
+ * Constructor for uv_buf_t.
309
+ * Due to platform differences the user cannot rely on the ordering of the
310
+ * base and len members of the uv_buf_t struct. The user is responsible for
311
+ * freeing base after the uv_buf_t is done. Return struct passed by value.
312
+ */
313
+ uv_buf_t uv_buf_init(char* base, size_t len);
314
+
315
+
240
316
  #define UV_STREAM_FIELDS \
241
317
  /* number of bytes queued for writing */ \
242
318
  size_t write_queue_size; \
243
319
  /* private */ \
244
320
  UV_STREAM_PRIVATE_FIELDS
245
321
 
246
- /* The abstract base class for all streams. */
322
+ /*
323
+ * uv_stream_t is a subclass of uv_handle_t
324
+ *
325
+ * uv_stream is an abstract class.
326
+ *
327
+ * uv_stream_t is the parent class of uv_tcp_t, uv_pipe_t
328
+ * and soon uv_file_t.
329
+ */
247
330
  struct uv_stream_s {
248
331
  UV_HANDLE_FIELDS
249
332
  UV_STREAM_FIELDS
@@ -251,7 +334,8 @@ struct uv_stream_s {
251
334
 
252
335
  int uv_listen(uv_stream_t* stream, int backlog, uv_connection_cb cb);
253
336
 
254
- /* This call is used in conjunction with uv_listen() to accept incoming
337
+ /*
338
+ * This call is used in conjunction with uv_listen() to accept incoming
255
339
  * connections. Call uv_accept after receiving a uv_connection_cb to accept
256
340
  * the connection. Before calling uv_accept use uv_*_init() must be
257
341
  * called on the client. Non-zero return value indicates an error.
@@ -263,7 +347,8 @@ int uv_listen(uv_stream_t* stream, int backlog, uv_connection_cb cb);
263
347
  */
264
348
  int uv_accept(uv_stream_t* server, uv_stream_t* client);
265
349
 
266
- /* Read data from an incoming stream. The callback will be made several
350
+ /*
351
+ * Read data from an incoming stream. The callback will be made several
267
352
  * several times until there is no more data to read or uv_read_stop is
268
353
  * called. When we've reached EOF nread will be set to -1 and the error is
269
354
  * set to UV_EOF. When nread == -1 the buf parameter might not point to a
@@ -282,7 +367,7 @@ typedef enum {
282
367
  UV_STDERR
283
368
  } uv_std_type;
284
369
 
285
- uv_stream_t* uv_std_handle(uv_std_type type);
370
+ uv_stream_t* uv_std_handle(uv_loop_t*, uv_std_type type);
286
371
 
287
372
  /*
288
373
  * Write data to stream. Buffers are written in order. Example:
@@ -298,10 +383,14 @@ uv_stream_t* uv_std_handle(uv_std_type type);
298
383
  * };
299
384
  *
300
385
  * // writes "1234"
301
- * uv_write(req, a, 2);
302
- * uv_write(req, b, 2);
386
+ * uv_write(req, stream, a, 2);
387
+ * uv_write(req, stream, b, 2);
303
388
  *
304
389
  */
390
+ int uv_write(uv_write_t* req, uv_stream_t* handle, uv_buf_t bufs[], int bufcnt,
391
+ uv_write_cb cb);
392
+
393
+ /* uv_write_t is a subclass of uv_req_t */
305
394
  struct uv_write_s {
306
395
  UV_REQ_FIELDS
307
396
  uv_write_cb cb;
@@ -309,14 +398,12 @@ struct uv_write_s {
309
398
  UV_WRITE_PRIVATE_FIELDS
310
399
  };
311
400
 
312
- int uv_write(uv_write_t* req, uv_stream_t* handle, uv_buf_t bufs[], int bufcnt,
313
- uv_write_cb cb);
314
401
 
315
402
 
316
403
  /*
317
- * A subclass of uv_stream_t representing a TCP stream or TCP server. In the
318
- * future this will probably be split into two classes - one a stream and
319
- * the other a server.
404
+ * uv_tcp_t is a subclass of uv_stream_t
405
+ *
406
+ * Represents a TCP stream or TCP server.
320
407
  */
321
408
  struct uv_tcp_s {
322
409
  UV_HANDLE_FIELDS
@@ -324,7 +411,7 @@ struct uv_tcp_s {
324
411
  UV_TCP_PRIVATE_FIELDS
325
412
  };
326
413
 
327
- int uv_tcp_init(uv_tcp_t* handle);
414
+ int uv_tcp_init(uv_loop_t*, uv_tcp_t* handle);
328
415
 
329
416
  int uv_tcp_bind(uv_tcp_t* handle, struct sockaddr_in);
330
417
  int uv_tcp_bind6(uv_tcp_t* handle, struct sockaddr_in6);
@@ -335,6 +422,12 @@ int uv_tcp_bind6(uv_tcp_t* handle, struct sockaddr_in6);
335
422
  * initialized TCP handle and an uninitialized uv_connect_t*. The callback
336
423
  * will be made when the connection is estabished.
337
424
  */
425
+ int uv_tcp_connect(uv_connect_t* req, uv_tcp_t* handle,
426
+ struct sockaddr_in address, uv_connect_cb cb);
427
+ int uv_tcp_connect6(uv_connect_t* req, uv_tcp_t* handle,
428
+ struct sockaddr_in6 address, uv_connect_cb cb);
429
+
430
+ /* uv_connect_t is a subclass of uv_req_t */
338
431
  struct uv_connect_s {
339
432
  UV_REQ_FIELDS
340
433
  uv_connect_cb cb;
@@ -342,16 +435,163 @@ struct uv_connect_s {
342
435
  UV_CONNECT_PRIVATE_FIELDS
343
436
  };
344
437
 
345
- int uv_tcp_connect(uv_connect_t* req, uv_tcp_t* handle,
346
- struct sockaddr_in address, uv_connect_cb cb);
347
- int uv_tcp_connect6(uv_connect_t* req, uv_tcp_t* handle,
348
- struct sockaddr_in6 address, uv_connect_cb cb);
349
438
 
350
- int uv_getsockname(uv_tcp_t* handle, struct sockaddr* name, int* namelen);
439
+ int uv_getsockname(uv_handle_t* handle, struct sockaddr* name, int* namelen);
440
+
441
+
442
+ /*
443
+ * UDP support.
444
+ */
445
+
446
+ enum uv_udp_flags {
447
+ /* Disables dual stack mode. Used with uv_udp_bind6(). */
448
+ UV_UDP_IPV6ONLY = 1,
449
+ /*
450
+ * Indicates message was truncated because read buffer was too small. The
451
+ * remainder was discarded by the OS. Used in uv_udp_recv_cb.
452
+ */
453
+ UV_UDP_PARTIAL = 2
454
+ };
455
+
456
+ /*
457
+ * Called after a uv_udp_send() or uv_udp_send6(). status 0 indicates
458
+ * success otherwise error.
459
+ */
460
+ typedef void (*uv_udp_send_cb)(uv_udp_send_t* req, int status);
461
+
462
+ /*
463
+ * Callback that is invoked when a new UDP datagram is received.
464
+ *
465
+ * handle UDP handle.
466
+ * nread Number of bytes that have been received.
467
+ * 0 if there is no more data to read. You may
468
+ * discard or repurpose the read buffer.
469
+ * -1 if a transmission error was detected.
470
+ * buf uv_buf_t with the received data.
471
+ * addr struct sockaddr_in or struct sockaddr_in6.
472
+ * Valid for the duration of the callback only.
473
+ * flags One or more OR'ed UV_UDP_* constants.
474
+ * Right now only UV_UDP_PARTIAL is used.
475
+ */
476
+ typedef void (*uv_udp_recv_cb)(uv_udp_t* handle, ssize_t nread, uv_buf_t buf,
477
+ struct sockaddr* addr, unsigned flags);
478
+
479
+ /* uv_udp_t is a subclass of uv_handle_t */
480
+ struct uv_udp_s {
481
+ UV_HANDLE_FIELDS
482
+ UV_UDP_PRIVATE_FIELDS
483
+ };
484
+
485
+ /* uv_udp_send_t is a subclass of uv_req_t */
486
+ struct uv_udp_send_s {
487
+ UV_REQ_FIELDS
488
+ uv_udp_t* handle;
489
+ uv_udp_send_cb cb;
490
+ UV_UDP_SEND_PRIVATE_FIELDS
491
+ };
492
+
493
+ /*
494
+ * Initialize a new UDP handle. The actual socket is created lazily.
495
+ * Returns 0 on success.
496
+ */
497
+ int uv_udp_init(uv_loop_t*, uv_udp_t* handle);
498
+
499
+ /*
500
+ * Bind to a IPv4 address and port.
501
+ *
502
+ * Arguments:
503
+ * handle UDP handle. Should have been initialized with `uv_udp_init`.
504
+ * addr struct sockaddr_in with the address and port to bind to.
505
+ * flags Unused.
506
+ *
507
+ * Returns:
508
+ * 0 on success, -1 on error.
509
+ */
510
+ int uv_udp_bind(uv_udp_t* handle, struct sockaddr_in addr, unsigned flags);
511
+
512
+ /*
513
+ * Bind to a IPv6 address and port.
514
+ *
515
+ * Arguments:
516
+ * handle UDP handle. Should have been initialized with `uv_udp_init`.
517
+ * addr struct sockaddr_in with the address and port to bind to.
518
+ * flags Should be 0 or UV_UDP_IPV6ONLY.
519
+ *
520
+ * Returns:
521
+ * 0 on success, -1 on error.
522
+ */
523
+ int uv_udp_bind6(uv_udp_t* handle, struct sockaddr_in6 addr, unsigned flags);
524
+
525
+ /*
526
+ * Send data. If the socket has not previously been bound with `uv_udp_bind`
527
+ * or `uv_udp_bind6`, it is bound to 0.0.0.0 (the "all interfaces" address)
528
+ * and a random port number.
529
+ *
530
+ * Arguments:
531
+ * req UDP request handle. Need not be initialized.
532
+ * handle UDP handle. Should have been initialized with `uv_udp_init`.
533
+ * bufs List of buffers to send.
534
+ * bufcnt Number of buffers in `bufs`.
535
+ * addr Address of the remote peer. See `uv_ip4_addr`.
536
+ * send_cb Callback to invoke when the data has been sent out.
537
+ *
538
+ * Returns:
539
+ * 0 on success, -1 on error.
540
+ */
541
+ int uv_udp_send(uv_udp_send_t* req, uv_udp_t* handle, uv_buf_t bufs[],
542
+ int bufcnt, struct sockaddr_in addr, uv_udp_send_cb send_cb);
543
+
544
+ /*
545
+ * Send data. If the socket has not previously been bound with `uv_udp_bind6`,
546
+ * it is bound to ::0 (the "all interfaces" address) and a random port number.
547
+ *
548
+ * Arguments:
549
+ * req UDP request handle. Need not be initialized.
550
+ * handle UDP handle. Should have been initialized with `uv_udp_init`.
551
+ * bufs List of buffers to send.
552
+ * bufcnt Number of buffers in `bufs`.
553
+ * addr Address of the remote peer. See `uv_ip6_addr`.
554
+ * send_cb Callback to invoke when the data has been sent out.
555
+ *
556
+ * Returns:
557
+ * 0 on success, -1 on error.
558
+ */
559
+ int uv_udp_send6(uv_udp_send_t* req, uv_udp_t* handle, uv_buf_t bufs[],
560
+ int bufcnt, struct sockaddr_in6 addr, uv_udp_send_cb send_cb);
561
+
562
+ /*
563
+ * Send data. If the socket has not previously been bound with `uv_udp_bind`
564
+ * or `uv_udp_bind6`, it is bound to 0.0.0.0 (the "all interfaces" address)
565
+ * and a random port number.
566
+ *
567
+ * Arguments:
568
+ * handle UDP handle. Should have been initialized with `uv_udp_init`.
569
+ * alloc_cb Callback to invoke when temporary storage is needed.
570
+ * recv_cb Callback to invoke with received data.
571
+ *
572
+ * Returns:
573
+ * 0 on success, -1 on error.
574
+ */
575
+ int uv_udp_recv_start(uv_udp_t* handle, uv_alloc_cb alloc_cb,
576
+ uv_udp_recv_cb recv_cb);
577
+
578
+ /*
579
+ * Stop listening for incoming datagrams.
580
+ *
581
+ * Arguments:
582
+ * handle UDP handle. Should have been initialized with `uv_udp_init`.
583
+ *
584
+ * Returns:
585
+ * 0 on success, -1 on error.
586
+ */
587
+ int uv_udp_recv_stop(uv_udp_t* handle);
351
588
 
352
589
 
353
590
  /*
354
- * A subclass of uv_stream_t representing a pipe stream or pipe server.
591
+ * uv_pipe_t is a subclass of uv_stream_t
592
+ *
593
+ * Representing a pipe stream or pipe server. On Windows this is a Named
594
+ * Pipe. On Unix this is a UNIX domain socket.
355
595
  */
356
596
  struct uv_pipe_s {
357
597
  UV_HANDLE_FIELDS
@@ -359,7 +599,7 @@ struct uv_pipe_s {
359
599
  UV_PIPE_PRIVATE_FIELDS
360
600
  };
361
601
 
362
- int uv_pipe_init(uv_pipe_t* handle);
602
+ int uv_pipe_init(uv_loop_t*, uv_pipe_t* handle);
363
603
 
364
604
  int uv_pipe_bind(uv_pipe_t* handle, const char* name);
365
605
 
@@ -368,16 +608,18 @@ int uv_pipe_connect(uv_connect_t* req, uv_pipe_t* handle,
368
608
 
369
609
 
370
610
  /*
371
- * Subclass of uv_handle_t. libev wrapper. Every active prepare handle gets
372
- * its callback called exactly once per loop iteration, just before the
373
- * system blocks to wait for completed i/o.
611
+ * uv_prepare_t is a subclass of uv_handle_t.
612
+ *
613
+ * libev wrapper. Every active prepare handle gets its callback called
614
+ * exactly once per loop iteration, just before the system blocks to wait
615
+ * for completed i/o.
374
616
  */
375
617
  struct uv_prepare_s {
376
618
  UV_HANDLE_FIELDS
377
619
  UV_PREPARE_PRIVATE_FIELDS
378
620
  };
379
621
 
380
- int uv_prepare_init(uv_prepare_t* prepare);
622
+ int uv_prepare_init(uv_loop_t*, uv_prepare_t* prepare);
381
623
 
382
624
  int uv_prepare_start(uv_prepare_t* prepare, uv_prepare_cb cb);
383
625
 
@@ -385,16 +627,17 @@ int uv_prepare_stop(uv_prepare_t* prepare);
385
627
 
386
628
 
387
629
  /*
388
- * Subclass of uv_handle_t. libev wrapper. Every active check handle gets
389
- * its callback called exactly once per loop iteration, just after the
390
- * system returns from blocking.
630
+ * uv_check_t is a subclass of uv_handle_t.
631
+ *
632
+ * libev wrapper. Every active check handle gets its callback called exactly
633
+ * once per loop iteration, just after the system returns from blocking.
391
634
  */
392
635
  struct uv_check_s {
393
636
  UV_HANDLE_FIELDS
394
637
  UV_CHECK_PRIVATE_FIELDS
395
638
  };
396
639
 
397
- int uv_check_init(uv_check_t* check);
640
+ int uv_check_init(uv_loop_t*, uv_check_t* check);
398
641
 
399
642
  int uv_check_start(uv_check_t* check, uv_check_cb cb);
400
643
 
@@ -402,17 +645,19 @@ int uv_check_stop(uv_check_t* check);
402
645
 
403
646
 
404
647
  /*
405
- * Subclass of uv_handle_t. libev wrapper. Every active idle handle gets its
406
- * callback called repeatedly until it is stopped. This happens after all
407
- * other types of callbacks are processed. When there are multiple "idle"
408
- * handles active, their callbacks are called in turn.
648
+ * uv_idle_t is a subclass of uv_handle_t.
649
+ *
650
+ * libev wrapper. Every active idle handle gets its callback called
651
+ * repeatedly until it is stopped. This happens after all other types of
652
+ * callbacks are processed. When there are multiple "idle" handles active,
653
+ * their callbacks are called in turn.
409
654
  */
410
655
  struct uv_idle_s {
411
656
  UV_HANDLE_FIELDS
412
657
  UV_IDLE_PRIVATE_FIELDS
413
658
  };
414
659
 
415
- int uv_idle_init(uv_idle_t* idle);
660
+ int uv_idle_init(uv_loop_t*, uv_idle_t* idle);
416
661
 
417
662
  int uv_idle_start(uv_idle_t* idle, uv_idle_cb cb);
418
663
 
@@ -420,7 +665,9 @@ int uv_idle_stop(uv_idle_t* idle);
420
665
 
421
666
 
422
667
  /*
423
- * Subclass of uv_handle_t. libev wrapper. uv_async_send wakes up the event
668
+ * uv_async_t is a subclass of uv_handle_t.
669
+ *
670
+ * libev wrapper. uv_async_send wakes up the event
424
671
  * loop and calls the async handle's callback There is no guarantee that
425
672
  * every uv_async_send call leads to exactly one invocation of the callback;
426
673
  * The only guarantee is that the callback function is called at least once
@@ -432,23 +679,31 @@ struct uv_async_s {
432
679
  UV_ASYNC_PRIVATE_FIELDS
433
680
  };
434
681
 
435
- int uv_async_init(uv_async_t* async, uv_async_cb async_cb);
682
+ int uv_async_init(uv_loop_t*, uv_async_t* async, uv_async_cb async_cb);
436
683
 
684
+ /*
685
+ * This can be called from other threads to wake up a libuv thread.
686
+ *
687
+ * libuv is single threaded at the moment.
688
+ */
437
689
  int uv_async_send(uv_async_t* async);
438
690
 
439
691
 
440
692
  /*
441
- * Subclass of uv_handle_t. Wraps libev's ev_timer watcher. Used to get
442
- * woken up at a specified time in the future.
693
+ * uv_timer_t is a subclass of uv_handle_t.
694
+ *
695
+ * Wraps libev's ev_timer watcher. Used to get woken up at a specified time
696
+ * in the future.
443
697
  */
444
698
  struct uv_timer_s {
445
699
  UV_HANDLE_FIELDS
446
700
  UV_TIMER_PRIVATE_FIELDS
447
701
  };
448
702
 
449
- int uv_timer_init(uv_timer_t* timer);
703
+ int uv_timer_init(uv_loop_t*, uv_timer_t* timer);
450
704
 
451
- int uv_timer_start(uv_timer_t* timer, uv_timer_cb cb, int64_t timeout, int64_t repeat);
705
+ int uv_timer_start(uv_timer_t* timer, uv_timer_cb cb, int64_t timeout,
706
+ int64_t repeat);
452
707
 
453
708
  int uv_timer_stop(uv_timer_t* timer);
454
709
 
@@ -471,15 +726,21 @@ int64_t uv_timer_get_repeat(uv_timer_t* timer);
471
726
 
472
727
 
473
728
  /* c-ares integration initialize and terminate */
474
- int uv_ares_init_options(ares_channel *channelptr,
475
- struct ares_options *options,
476
- int optmask);
729
+ int uv_ares_init_options(uv_loop_t*,
730
+ ares_channel *channelptr,
731
+ struct ares_options *options,
732
+ int optmask);
477
733
 
478
- void uv_ares_destroy(ares_channel channel);
734
+ /* TODO remove the loop argument from this function? */
735
+ void uv_ares_destroy(uv_loop_t*, ares_channel channel);
479
736
 
480
737
 
481
738
  /*
482
- * Subclass of uv_handle_t. Used for integration of getaddrinfo.
739
+ * uv_getaddrinfo_t is a subclass of uv_handle_t
740
+ *
741
+ * TODO this should be a subclass of uv_req_t
742
+ *
743
+ * Request object for uv_getaddrinfo.
483
744
  */
484
745
  struct uv_getaddrinfo_s {
485
746
  UV_HANDLE_FIELDS
@@ -487,38 +748,61 @@ struct uv_getaddrinfo_s {
487
748
  };
488
749
 
489
750
 
490
- /* uv_getaddrinfo
491
- * return code of UV_OK means that request is accepted,
492
- * and callback will be called with result.
493
- * Other return codes mean that there will not be a callback.
494
- * Input arguments may be released after return from this call.
495
- * Callback must not call freeaddrinfo
751
+ /*
752
+ * Asynchronous getaddrinfo(3).
753
+ *
754
+ * Return code 0 means that request is accepted and callback will be called
755
+ * with result. Other return codes mean that there will not be a callback.
756
+ * Input arguments may be released after return from this call. Callback
757
+ * must not call freeaddrinfo.
496
758
  */
497
- int uv_getaddrinfo(uv_getaddrinfo_t* handle,
759
+ int uv_getaddrinfo(uv_loop_t*,
760
+ uv_getaddrinfo_t* handle,
498
761
  uv_getaddrinfo_cb getaddrinfo_cb,
499
762
  const char* node,
500
763
  const char* service,
501
764
  const struct addrinfo* hints);
502
765
 
503
- /*
504
- * Child process. Subclass of uv_handle_t.
505
- */
766
+ /* uv_spawn() options */
506
767
  typedef struct uv_process_options_s {
507
- uv_exit_cb exit_cb;
508
- const char* file;
768
+ uv_exit_cb exit_cb; /* Called after the process exits. */
769
+ const char* file; /* Path to program to execute. */
770
+ /*
771
+ * Command line arguments. args[0] should be the path to the program. On
772
+ * Windows this uses CreateProcess which concatinates the arguments into a
773
+ * string this can cause some strange errors. See the note at
774
+ * windows_verbatim_arguments.
775
+ */
509
776
  char** args;
777
+ /*
778
+ * This will be set as the environ variable in the subprocess. If this is
779
+ * NULL then the parents environ will be used.
780
+ */
510
781
  char** env;
782
+ /*
783
+ * If non-null this represents a directory the subprocess should execute
784
+ * in. Stands for current working directory.
785
+ */
511
786
  char* cwd;
787
+
788
+ /*
789
+ * TODO describe how this works.
790
+ */
512
791
  int windows_verbatim_arguments;
792
+
513
793
  /*
514
794
  * The user should supply pointers to initialized uv_pipe_t structs for
515
- * stdio. The user is reponsible for calling uv_close on them.
795
+ * stdio. This is used to to send or receive input from the subprocess.
796
+ * The user is reponsible for calling uv_close on them.
516
797
  */
517
798
  uv_pipe_t* stdin_stream;
518
799
  uv_pipe_t* stdout_stream;
519
800
  uv_pipe_t* stderr_stream;
520
801
  } uv_process_options_t;
521
802
 
803
+ /*
804
+ * uv_process_t is a subclass of uv_handle_t
805
+ */
522
806
  struct uv_process_s {
523
807
  UV_HANDLE_FIELDS
524
808
  uv_exit_cb exit_cb;
@@ -527,7 +811,7 @@ struct uv_process_s {
527
811
  };
528
812
 
529
813
  /* Initializes uv_process_t and starts the process. */
530
- int uv_spawn(uv_process_t*, uv_process_options_t options);
814
+ int uv_spawn(uv_loop_t*, uv_process_t*, uv_process_options_t options);
531
815
 
532
816
  /*
533
817
  * Kills the process with the specified signal. The user must still
@@ -537,26 +821,147 @@ int uv_process_kill(uv_process_t*, int signum);
537
821
 
538
822
 
539
823
  /*
540
- * Most functions return boolean: 0 for success and -1 for failure.
541
- * On error the user should then call uv_last_error() to determine
542
- * the error code.
824
+ * uv_work_t is a subclass of uv_req_t
543
825
  */
544
- uv_err_t uv_last_error();
545
- char* uv_strerror(uv_err_t err);
546
- const char* uv_err_name(uv_err_t err);
826
+ struct uv_work_s {
827
+ UV_REQ_FIELDS
828
+ uv_loop_t* loop;
829
+ uv_work_cb work_cb;
830
+ uv_after_work_cb after_work_cb;
831
+ UV_WORK_PRIVATE_FIELDS
832
+ };
833
+
834
+ /* Queues a work request to execute asynchronously on the thread pool. */
835
+ int uv_queue_work(uv_loop_t* loop, uv_work_t* req, uv_work_cb work_cb,
836
+ uv_after_work_cb after_work_cb);
837
+
838
+
547
839
 
548
- void uv_init();
549
- int uv_run();
550
840
 
551
841
  /*
552
- * Manually modify the event loop's reference count. Useful if the user wants
553
- * to have a handle or timeout that doesn't keep the loop alive.
842
+ * File System Methods.
843
+ *
844
+ * The uv_fs_* functions execute a blocking system call asynchronously (in a
845
+ * thread pool) and call the specified callback in the specified loop after
846
+ * completion. If the user gives NULL as the callback the blocking system
847
+ * call will be called synchronously. req should be a pointer to an
848
+ * uninitialized uv_fs_t object.
849
+ *
850
+ * uv_fs_req_cleanup() must be called after completion of the uv_fs_
851
+ * function to free any internal memory allocations associted with the
852
+ * request.
554
853
  */
555
- void uv_ref();
556
- void uv_unref();
557
854
 
558
- void uv_update_time();
559
- int64_t uv_now();
855
+ typedef enum {
856
+ UV_FS_UNKNOWN = -1,
857
+ UV_FS_CUSTOM,
858
+ UV_FS_OPEN,
859
+ UV_FS_CLOSE,
860
+ UV_FS_READ,
861
+ UV_FS_WRITE,
862
+ UV_FS_SENDFILE,
863
+ UV_FS_STAT,
864
+ UV_FS_LSTAT,
865
+ UV_FS_FSTAT,
866
+ UV_FS_FTRUNCATE,
867
+ UV_FS_UTIME,
868
+ UV_FS_FUTIME,
869
+ UV_FS_CHMOD,
870
+ UV_FS_FCHMOD,
871
+ UV_FS_FSYNC,
872
+ UV_FS_FDATASYNC,
873
+ UV_FS_UNLINK,
874
+ UV_FS_RMDIR,
875
+ UV_FS_MKDIR,
876
+ UV_FS_RENAME,
877
+ UV_FS_READDIR,
878
+ UV_FS_LINK,
879
+ UV_FS_SYMLINK,
880
+ UV_FS_READLINK,
881
+ UV_FS_CHOWN,
882
+ UV_FS_FCHOWN
883
+ } uv_fs_type;
884
+
885
+ /* uv_fs_t is a subclass of uv_req_t */
886
+ struct uv_fs_s {
887
+ UV_REQ_FIELDS
888
+ uv_loop_t* loop;
889
+ uv_fs_type fs_type;
890
+ uv_fs_cb cb;
891
+ ssize_t result;
892
+ void* ptr;
893
+ int errorno;
894
+ UV_FS_PRIVATE_FIELDS
895
+ };
896
+
897
+ void uv_fs_req_cleanup(uv_fs_t* req);
898
+
899
+ int uv_fs_close(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb);
900
+
901
+ int uv_fs_open(uv_loop_t* loop, uv_fs_t* req, const char* path, int flags,
902
+ int mode, uv_fs_cb cb);
903
+
904
+ int uv_fs_read(uv_loop_t* loop, uv_fs_t* req, uv_file file, void* buf,
905
+ size_t length, off_t offset, uv_fs_cb cb);
906
+
907
+ int uv_fs_unlink(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_fs_cb cb);
908
+
909
+ int uv_fs_write(uv_loop_t* loop, uv_fs_t* req, uv_file file, void* buf,
910
+ size_t length, off_t offset, uv_fs_cb cb);
911
+
912
+ int uv_fs_mkdir(uv_loop_t* loop, uv_fs_t* req, const char* path, int mode,
913
+ uv_fs_cb cb);
914
+
915
+ int uv_fs_rmdir(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_fs_cb cb);
916
+
917
+ int uv_fs_readdir(uv_loop_t* loop, uv_fs_t* req, const char* path, int flags,
918
+ uv_fs_cb cb);
919
+
920
+ int uv_fs_stat(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_fs_cb cb);
921
+
922
+ int uv_fs_fstat(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb);
923
+
924
+ int uv_fs_rename(uv_loop_t* loop, uv_fs_t* req, const char* path,
925
+ const char* new_path, uv_fs_cb cb);
926
+
927
+ int uv_fs_fsync(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb);
928
+
929
+ int uv_fs_fdatasync(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb);
930
+
931
+ int uv_fs_ftruncate(uv_loop_t* loop, uv_fs_t* req, uv_file file,
932
+ off_t offset, uv_fs_cb cb);
933
+
934
+ int uv_fs_sendfile(uv_loop_t* loop, uv_fs_t* req, uv_file out_fd,
935
+ uv_file in_fd, off_t in_offset, size_t length, uv_fs_cb cb);
936
+
937
+ int uv_fs_chmod(uv_loop_t* loop, uv_fs_t* req, const char* path, int mode,
938
+ uv_fs_cb cb);
939
+
940
+ int uv_fs_utime(uv_loop_t* loop, uv_fs_t* req, const char* path, double atime,
941
+ double mtime, uv_fs_cb cb);
942
+
943
+ int uv_fs_futime(uv_loop_t* loop, uv_fs_t* req, uv_file file, double atime,
944
+ double mtime, uv_fs_cb cb);
945
+
946
+ int uv_fs_lstat(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_fs_cb cb);
947
+
948
+ int uv_fs_link(uv_loop_t* loop, uv_fs_t* req, const char* path,
949
+ const char* new_path, uv_fs_cb cb);
950
+
951
+ int uv_fs_symlink(uv_loop_t* loop, uv_fs_t* req, const char* path,
952
+ const char* new_path, uv_fs_cb cb);
953
+
954
+ int uv_fs_readlink(uv_loop_t* loop, uv_fs_t* req, const char* path,
955
+ uv_fs_cb cb);
956
+
957
+ int uv_fs_fchmod(uv_loop_t* loop, uv_fs_t* req, uv_file file, int mode,
958
+ uv_fs_cb cb);
959
+
960
+ int uv_fs_chown(uv_loop_t* loop, uv_fs_t* req, const char* path, int uid,
961
+ int gid, uv_fs_cb cb);
962
+
963
+ int uv_fs_fchown(uv_loop_t* loop, uv_fs_t* req, uv_file file, int uid,
964
+ int gid, uv_fs_cb cb);
560
965
 
561
966
 
562
967
  /* Utility */
@@ -601,15 +1006,18 @@ union uv_any_req {
601
1006
  uv_write_t write;
602
1007
  uv_connect_t connect;
603
1008
  uv_shutdown_t shutdown;
1009
+ uv_fs_t fs_req;
1010
+ uv_work_t work_req;
604
1011
  };
605
1012
 
606
1013
 
607
- /* Diagnostic counters */
608
- typedef struct {
1014
+ struct uv_counters_s {
1015
+ uint64_t eio_init;
609
1016
  uint64_t req_init;
610
1017
  uint64_t handle_init;
611
1018
  uint64_t stream_init;
612
1019
  uint64_t tcp_init;
1020
+ uint64_t udp_init;
613
1021
  uint64_t pipe_init;
614
1022
  uint64_t prepare_init;
615
1023
  uint64_t check_init;
@@ -617,9 +1025,24 @@ typedef struct {
617
1025
  uint64_t async_init;
618
1026
  uint64_t timer_init;
619
1027
  uint64_t process_init;
620
- } uv_counters_t;
1028
+ };
621
1029
 
622
- uv_counters_t* uv_counters();
1030
+
1031
+ struct uv_loop_s {
1032
+ UV_LOOP_PRIVATE_FIELDS
1033
+ /* list used for ares task handles */
1034
+ uv_ares_task_t* uv_ares_handles_;
1035
+ /* Various thing for libeio. */
1036
+ uv_async_t uv_eio_want_poll_notifier;
1037
+ uv_async_t uv_eio_done_poll_notifier;
1038
+ uv_idle_t uv_eio_poller;
1039
+ /* Diagnostic counters */
1040
+ uv_counters_t counters;
1041
+ /* The last error */
1042
+ uv_err_t last_err;
1043
+ /* User data - use this for whatever. */
1044
+ void* data;
1045
+ };
623
1046
 
624
1047
 
625
1048
  /* Don't export the private CPP symbols. */
@@ -633,6 +1056,8 @@ uv_counters_t* uv_counters();
633
1056
  #undef UV_ASYNC_PRIVATE_FIELDS
634
1057
  #undef UV_TIMER_PRIVATE_FIELDS
635
1058
  #undef UV_GETADDRINFO_PRIVATE_FIELDS
1059
+ #undef UV_FS_REQ_PRIVATE_FIELDS
1060
+ #undef UV_WORK_PRIVATE_FIELDS
636
1061
 
637
1062
  #ifdef __cplusplus
638
1063
  }