noderb 0.0.4 → 0.0.6

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 (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
@@ -31,9 +31,6 @@
31
31
  #include "ares/inet_net_pton.h"
32
32
  #include "ares/inet_ntop.h"
33
33
 
34
- /* list used for ares task handles */
35
- static uv_ares_task_t* uv_ares_handles_ = NULL;
36
-
37
34
 
38
35
  static uv_counters_t counters;
39
36
 
@@ -43,6 +40,14 @@ uv_counters_t* uv_counters() {
43
40
  }
44
41
 
45
42
 
43
+ uv_buf_t uv_buf_init(char* base, size_t len) {
44
+ uv_buf_t buf;
45
+ buf.base = base;
46
+ buf.len = len;
47
+ return buf;
48
+ }
49
+
50
+
46
51
  const char* uv_err_name(uv_err_t err) {
47
52
  switch (err.code) {
48
53
  case UV_UNKNOWN: return "UNKNOWN";
@@ -127,20 +132,23 @@ int uv_ip6_name(struct sockaddr_in6* src, char* dst, size_t size) {
127
132
 
128
133
 
129
134
  /* find matching ares handle in list */
130
- void uv_add_ares_handle(uv_ares_task_t* handle) {
131
- handle->ares_next = uv_ares_handles_;
135
+ void uv_add_ares_handle(uv_loop_t* loop, uv_ares_task_t* handle) {
136
+ handle->loop = loop;
137
+ handle->ares_next = loop->uv_ares_handles_;
132
138
  handle->ares_prev = NULL;
133
139
 
134
- if (uv_ares_handles_) {
135
- uv_ares_handles_->ares_prev = handle;
140
+ if (loop->uv_ares_handles_) {
141
+ loop->uv_ares_handles_->ares_prev = handle;
136
142
  }
137
- uv_ares_handles_ = handle;
143
+
144
+ loop->uv_ares_handles_ = handle;
138
145
  }
139
146
 
140
147
  /* find matching ares handle in list */
141
148
  /* TODO: faster lookup */
142
- uv_ares_task_t* uv_find_ares_handle(ares_socket_t sock) {
143
- uv_ares_task_t* handle = uv_ares_handles_;
149
+ uv_ares_task_t* uv_find_ares_handle(uv_loop_t* loop, ares_socket_t sock) {
150
+ uv_ares_task_t* handle = loop->uv_ares_handles_;
151
+
144
152
  while (handle != NULL) {
145
153
  if (handle->sock == sock) {
146
154
  break;
@@ -153,8 +161,10 @@ uv_ares_task_t* uv_find_ares_handle(ares_socket_t sock) {
153
161
 
154
162
  /* remove ares handle in list */
155
163
  void uv_remove_ares_handle(uv_ares_task_t* handle) {
156
- if (handle == uv_ares_handles_) {
157
- uv_ares_handles_ = handle->ares_next;
164
+ uv_loop_t* loop = handle->loop;
165
+
166
+ if (handle == loop->uv_ares_handles_) {
167
+ loop->uv_ares_handles_ = handle->ares_next;
158
168
  }
159
169
 
160
170
  if (handle->ares_next) {
@@ -168,6 +178,6 @@ void uv_remove_ares_handle(uv_ares_task_t* handle) {
168
178
 
169
179
 
170
180
  /* Returns 1 if the uv_ares_handles_ list is empty. 0 otherwise. */
171
- int uv_ares_handles_empty() {
172
- return uv_ares_handles_ ? 0 : 1;
181
+ int uv_ares_handles_empty(uv_loop_t* loop) {
182
+ return loop->uv_ares_handles_ ? 0 : 1;
173
183
  }
@@ -31,10 +31,12 @@
31
31
 
32
32
  #define COUNTOF(a) (sizeof(a) / sizeof(a[0]))
33
33
 
34
- /*
35
- * Subclass of uv_handle_t. Used for integration of c-ares.
36
- */
37
- typedef struct uv_ares_task_s uv_ares_task_t;
34
+ /* Used for the uv_fs_ functions */
35
+ #define SET_REQ_RESULT(req, result) \
36
+ req->result = result; \
37
+ if (result == -1) { \
38
+ req->errorno = errno; \
39
+ }
38
40
 
39
41
  struct uv_ares_task_s {
40
42
  UV_HANDLE_FIELDS
@@ -45,9 +47,12 @@ struct uv_ares_task_s {
45
47
 
46
48
 
47
49
  void uv_remove_ares_handle(uv_ares_task_t* handle);
48
- uv_ares_task_t* uv_find_ares_handle(ares_socket_t sock);
49
- void uv_add_ares_handle(uv_ares_task_t* handle);
50
- int uv_ares_handles_empty();
50
+ uv_ares_task_t* uv_find_ares_handle(uv_loop_t*, ares_socket_t sock);
51
+
52
+ /* TODO Rename to uv_ares_task_init? */
53
+ void uv_add_ares_handle(uv_loop_t* loop, uv_ares_task_t* handle);
54
+
55
+ int uv_ares_handles_empty(uv_loop_t* loop);
51
56
 
52
57
 
53
58
  #endif /* UV_COMMON_H_ */
@@ -54,7 +54,7 @@ static inline char uv_atomic_exchange_set(char volatile* target) {
54
54
  #endif
55
55
 
56
56
 
57
- void uv_async_endgame(uv_async_t* handle) {
57
+ void uv_async_endgame(uv_loop_t* loop, uv_async_t* handle) {
58
58
  if (handle->flags & UV_HANDLE_CLOSING &&
59
59
  !handle->async_sent) {
60
60
  assert(!(handle->flags & UV_HANDLE_CLOSED));
@@ -64,35 +64,37 @@ void uv_async_endgame(uv_async_t* handle) {
64
64
  handle->close_cb((uv_handle_t*)handle);
65
65
  }
66
66
 
67
- uv_unref();
67
+ uv_unref(loop);
68
68
  }
69
69
  }
70
70
 
71
71
 
72
- int uv_async_init(uv_async_t* handle, uv_async_cb async_cb) {
72
+ int uv_async_init(uv_loop_t* loop, uv_async_t* handle, uv_async_cb async_cb) {
73
73
  uv_req_t* req;
74
74
 
75
- uv_counters()->handle_init++;
76
- uv_counters()->async_init++;
75
+ loop->counters.handle_init++;
76
+ loop->counters.async_init++;
77
77
 
78
78
  handle->type = UV_ASYNC;
79
+ handle->loop = loop;
79
80
  handle->flags = 0;
80
81
  handle->async_sent = 0;
81
- handle->error = uv_ok_;
82
82
  handle->async_cb = async_cb;
83
83
 
84
84
  req = &handle->async_req;
85
- uv_req_init(req);
85
+ uv_req_init(loop, req);
86
86
  req->type = UV_WAKEUP;
87
87
  req->data = handle;
88
88
 
89
- uv_ref();
89
+ uv_ref(loop);
90
90
 
91
91
  return 0;
92
92
  }
93
93
 
94
94
 
95
95
  int uv_async_send(uv_async_t* handle) {
96
+ uv_loop_t* loop = handle->loop;
97
+
96
98
  if (handle->type != UV_ASYNC) {
97
99
  /* Can't set errno because that's not thread-safe. */
98
100
  return -1;
@@ -103,19 +105,15 @@ int uv_async_send(uv_async_t* handle) {
103
105
  assert(!(handle->flags & UV_HANDLE_CLOSING));
104
106
 
105
107
  if (!uv_atomic_exchange_set(&handle->async_sent)) {
106
- if (!PostQueuedCompletionStatus(LOOP->iocp,
107
- 0,
108
- 0,
109
- &handle->async_req.overlapped)) {
110
- uv_fatal_error(GetLastError(), "PostQueuedCompletionStatus");
111
- }
108
+ POST_COMPLETION_FOR_REQ(loop, &handle->async_req);
112
109
  }
113
110
 
114
111
  return 0;
115
112
  }
116
113
 
117
114
 
118
- void uv_process_async_wakeup_req(uv_async_t* handle, uv_req_t* req) {
115
+ void uv_process_async_wakeup_req(uv_loop_t* loop, uv_async_t* handle,
116
+ uv_req_t* req) {
119
117
  assert(handle->type == UV_ASYNC);
120
118
  assert(req->type == UV_WAKEUP);
121
119
 
@@ -124,6 +122,6 @@ void uv_process_async_wakeup_req(uv_async_t* handle, uv_req_t* req) {
124
122
  handle->async_cb((uv_async_t*) handle, 0);
125
123
  }
126
124
  if (handle->flags & UV_HANDLE_CLOSING) {
127
- uv_want_endgame((uv_handle_t*)handle);
125
+ uv_want_endgame(loop, (uv_handle_t*)handle);
128
126
  }
129
127
  }
@@ -38,41 +38,34 @@ struct uv_ares_action_s {
38
38
  };
39
39
 
40
40
 
41
- /* memory used per ares_channel */
42
- typedef struct uv_ares_channel_s {
43
- ares_channel channel;
44
- int activesockets;
45
- uv_timer_t pollingtimer;
46
- } uv_ares_channel_t;
47
-
48
-
49
- /* static data to hold single ares_channel */
50
- static uv_ares_channel_t uv_ares_data = { NULL, 0 };
51
-
52
-
53
41
  /* default timeout per socket request if ares does not specify value */
54
42
  /* use 20 sec */
55
43
  #define ARES_TIMEOUT_MS 20000
56
44
 
57
45
 
58
46
  /* thread pool callback when socket is signalled */
59
- static void CALLBACK uv_ares_socksignal_tp(void* parameter, BOOLEAN timerfired) {
47
+ static void CALLBACK uv_ares_socksignal_tp(void* parameter,
48
+ BOOLEAN timerfired) {
60
49
  WSANETWORKEVENTS network_events;
61
50
  uv_ares_task_t* sockhandle;
62
51
  uv_ares_action_t* selhandle;
63
52
  uv_req_t* uv_ares_req;
53
+ uv_loop_t* loop;
64
54
 
65
55
  assert(parameter != NULL);
66
56
 
67
57
  if (parameter != NULL) {
68
- sockhandle = (uv_ares_task_t*)parameter;
58
+ sockhandle = (uv_ares_task_t*) parameter;
59
+ loop = sockhandle->loop;
69
60
 
70
61
  /* clear socket status for this event */
71
62
  /* do not fail if error, thread may run after socket close */
72
- /* The code assumes that c-ares will write all pending data in the callback,
73
- unless the socket would block. We can clear the state here to avoid unecessary
74
- signals. */
75
- WSAEnumNetworkEvents(sockhandle->sock, sockhandle->h_event, &network_events);
63
+ /* The code assumes that c-ares will write all pending data in the */
64
+ /* callback, unless the socket would block. We can clear the state here */
65
+ /* to avoid unecessary signals. */
66
+ WSAEnumNetworkEvents(sockhandle->sock,
67
+ sockhandle->h_event,
68
+ &network_events);
76
69
 
77
70
  /* setup new handle */
78
71
  selhandle = (uv_ares_action_t*)malloc(sizeof(uv_ares_action_t));
@@ -83,52 +76,53 @@ static void CALLBACK uv_ares_socksignal_tp(void* parameter, BOOLEAN timerfired)
83
76
  selhandle->close_cb = NULL;
84
77
  selhandle->data = sockhandle->data;
85
78
  selhandle->sock = sockhandle->sock;
86
- selhandle->read = (network_events.lNetworkEvents & (FD_READ | FD_CONNECT)) ? 1 : 0;
87
- selhandle->write = (network_events.lNetworkEvents & (FD_WRITE | FD_CONNECT)) ? 1 : 0;
79
+ selhandle->read =
80
+ (network_events.lNetworkEvents & (FD_READ | FD_CONNECT)) ? 1 : 0;
81
+ selhandle->write =
82
+ (network_events.lNetworkEvents & (FD_WRITE | FD_CONNECT)) ? 1 : 0;
88
83
 
89
84
  uv_ares_req = &selhandle->ares_req;
90
- uv_req_init(uv_ares_req);
85
+ uv_req_init(loop, uv_ares_req);
91
86
  uv_ares_req->type = UV_ARES_EVENT_REQ;
92
87
  uv_ares_req->data = selhandle;
93
88
 
94
89
  /* post ares needs to called */
95
- if (!PostQueuedCompletionStatus(LOOP->iocp,
96
- 0,
97
- 0,
98
- &uv_ares_req->overlapped)) {
99
- uv_fatal_error(GetLastError(), "PostQueuedCompletionStatus");
100
- }
90
+ POST_COMPLETION_FOR_REQ(loop, uv_ares_req);
101
91
  }
102
92
  }
103
93
 
104
94
 
105
95
  /* periodically call ares to check for timeouts */
106
96
  static void uv_ares_poll(uv_timer_t* handle, int status) {
107
- if (uv_ares_data.channel != NULL && uv_ares_data.activesockets > 0) {
108
- ares_process_fd(uv_ares_data.channel, ARES_SOCKET_BAD, ARES_SOCKET_BAD);
97
+ uv_loop_t* loop = handle->loop;
98
+ if (loop->ares_channel != NULL && loop->ares_active_sockets > 0) {
99
+ ares_process_fd(loop->ares_channel, ARES_SOCKET_BAD, ARES_SOCKET_BAD);
109
100
  }
110
101
  }
111
102
 
112
103
 
113
104
  /* callback from ares when socket operation is started */
114
- static void uv_ares_sockstate_cb(void *data, ares_socket_t sock, int read, int write) {
105
+ static void uv_ares_sockstate_cb(void *data, ares_socket_t sock, int read,
106
+ int write) {
115
107
  /* look to see if we have a handle for this socket in our list */
116
- uv_ares_task_t* uv_handle_ares = uv_find_ares_handle(sock);
117
- uv_ares_channel_t* uv_ares_data_ptr = (uv_ares_channel_t*)data;
108
+ uv_loop_t* loop = (uv_loop_t*) data;
109
+ uv_ares_task_t* uv_handle_ares = uv_find_ares_handle(loop, sock);
118
110
 
119
111
  int timeoutms = 0;
120
112
 
121
113
  if (read == 0 && write == 0) {
122
114
  /* if read and write are 0, cleanup existing data */
123
- /* The code assumes that c-ares does a callback with read = 0 and write = 0
124
- when the socket is closed. After we recieve this we stop monitoring the socket. */
115
+ /* The code assumes that c-ares does a callback with read = 0 and */
116
+ /* write = 0 when the socket is closed. After we recieve this we stop */
117
+ /* monitoring the socket. */
125
118
  if (uv_handle_ares != NULL) {
126
119
  uv_req_t* uv_ares_req;
127
120
 
128
121
  uv_handle_ares->h_close_event = CreateEvent(NULL, FALSE, FALSE, NULL);
129
122
  /* remove Wait */
130
123
  if (uv_handle_ares->h_wait) {
131
- UnregisterWaitEx(uv_handle_ares->h_wait, uv_handle_ares->h_close_event);
124
+ UnregisterWaitEx(uv_handle_ares->h_wait,
125
+ uv_handle_ares->h_close_event);
132
126
  uv_handle_ares->h_wait = NULL;
133
127
  }
134
128
 
@@ -143,17 +137,12 @@ static void uv_ares_sockstate_cb(void *data, ares_socket_t sock, int read, int w
143
137
 
144
138
  /* Post request to cleanup the Task */
145
139
  uv_ares_req = &uv_handle_ares->ares_req;
146
- uv_req_init(uv_ares_req);
140
+ uv_req_init(loop, uv_ares_req);
147
141
  uv_ares_req->type = UV_ARES_CLEANUP_REQ;
148
142
  uv_ares_req->data = uv_handle_ares;
149
143
 
150
144
  /* post ares done with socket - finish cleanup when all threads done. */
151
- if (!PostQueuedCompletionStatus(LOOP->iocp,
152
- 0,
153
- 0,
154
- &uv_ares_req->overlapped)) {
155
- uv_fatal_error(GetLastError(), "PostQueuedCompletionStatus");
156
- }
145
+ POST_COMPLETION_FOR_REQ(loop, uv_ares_req);
157
146
  } else {
158
147
  assert(0);
159
148
  uv_fatal_error(ERROR_INVALID_DATA, "ares_SockStateCB");
@@ -170,7 +159,7 @@ static void uv_ares_sockstate_cb(void *data, ares_socket_t sock, int read, int w
170
159
  }
171
160
  uv_handle_ares->type = UV_ARES_TASK;
172
161
  uv_handle_ares->close_cb = NULL;
173
- uv_handle_ares->data = uv_ares_data_ptr;
162
+ uv_handle_ares->data = loop;
174
163
  uv_handle_ares->sock = sock;
175
164
  uv_handle_ares->h_wait = NULL;
176
165
  uv_handle_ares->flags = 0;
@@ -182,24 +171,26 @@ static void uv_ares_sockstate_cb(void *data, ares_socket_t sock, int read, int w
182
171
  }
183
172
 
184
173
  /* tie event to socket */
185
- if (SOCKET_ERROR == WSAEventSelect(sock, uv_handle_ares->h_event, FD_READ | FD_WRITE | FD_CONNECT)) {
174
+ if (SOCKET_ERROR == WSAEventSelect(sock,
175
+ uv_handle_ares->h_event,
176
+ FD_READ | FD_WRITE | FD_CONNECT)) {
186
177
  uv_fatal_error(WSAGetLastError(), "WSAEventSelect");
187
178
  }
188
179
 
189
180
  /* add handle to list */
190
- uv_add_ares_handle(uv_handle_ares);
191
- uv_ref();
181
+ uv_add_ares_handle(loop, uv_handle_ares);
182
+ uv_ref(loop);
192
183
 
193
184
  /*
194
185
  * we have a single polling timer for all ares sockets.
195
186
  * This is preferred to using ares_timeout. See ares_timeout.c warning.
196
187
  * if timer is not running start it, and keep socket count
197
188
  */
198
- if (uv_ares_data_ptr->activesockets == 0) {
199
- uv_timer_init(&uv_ares_data_ptr->pollingtimer);
200
- uv_timer_start(&uv_ares_data_ptr->pollingtimer, uv_ares_poll, 1000L, 1000L);
189
+ if (loop->ares_active_sockets == 0) {
190
+ uv_timer_init(loop, &loop->ares_polling_timer);
191
+ uv_timer_start(&loop->ares_polling_timer, uv_ares_poll, 1000L, 1000L);
201
192
  }
202
- uv_ares_data_ptr->activesockets++;
193
+ loop->ares_active_sockets++;
203
194
 
204
195
  /* specify thread pool function to call when event is signaled */
205
196
  if (RegisterWaitForSingleObject(&uv_handle_ares->h_wait,
@@ -221,12 +212,11 @@ static void uv_ares_sockstate_cb(void *data, ares_socket_t sock, int read, int w
221
212
 
222
213
 
223
214
  /* called via uv_poll when ares completion port signaled */
224
- void uv_process_ares_event_req(uv_ares_action_t* handle, uv_req_t* req) {
225
- uv_ares_channel_t* uv_ares_data_ptr = (uv_ares_channel_t*)handle->data;
226
-
227
- ares_process_fd(uv_ares_data_ptr->channel,
228
- handle->read ? handle->sock : INVALID_SOCKET,
229
- handle->write ? handle->sock : INVALID_SOCKET);
215
+ void uv_process_ares_event_req(uv_loop_t* loop, uv_ares_action_t* handle,
216
+ uv_req_t* req) {
217
+ ares_process_fd(loop->ares_channel,
218
+ handle->read ? handle->sock : INVALID_SOCKET,
219
+ handle->write ? handle->sock : INVALID_SOCKET);
230
220
 
231
221
  /* release handle for select here */
232
222
  free(handle);
@@ -234,52 +224,47 @@ void uv_process_ares_event_req(uv_ares_action_t* handle, uv_req_t* req) {
234
224
 
235
225
 
236
226
  /* called via uv_poll when ares is finished with socket */
237
- void uv_process_ares_cleanup_req(uv_ares_task_t* handle, uv_req_t* req) {
227
+ void uv_process_ares_cleanup_req(uv_loop_t* loop, uv_ares_task_t* handle,
228
+ uv_req_t* req) {
238
229
  /* check for event complete without waiting */
239
230
  unsigned int signaled = WaitForSingleObject(handle->h_close_event, 0);
240
231
 
241
232
  if (signaled != WAIT_TIMEOUT) {
242
- uv_ares_channel_t* uv_ares_data_ptr = (uv_ares_channel_t*)handle->data;
243
-
244
- uv_unref();
233
+ uv_unref(loop);
245
234
 
246
235
  /* close event handle and free uv handle memory */
247
236
  CloseHandle(handle->h_close_event);
248
237
  free(handle);
249
238
 
250
239
  /* decrement active count. if it becomes 0 stop polling */
251
- if (uv_ares_data_ptr->activesockets > 0) {
252
- uv_ares_data_ptr->activesockets--;
253
- if (uv_ares_data_ptr->activesockets == 0) {
254
- uv_close((uv_handle_t*)&uv_ares_data_ptr->pollingtimer, NULL);
240
+ if (loop->ares_active_sockets > 0) {
241
+ loop->ares_active_sockets--;
242
+ if (loop->ares_active_sockets == 0) {
243
+ uv_close((uv_handle_t*) &loop->ares_polling_timer, NULL);
255
244
  }
256
245
  }
257
246
  } else {
258
247
  /* stil busy - repost and try again */
259
- if (!PostQueuedCompletionStatus(LOOP->iocp,
260
- 0,
261
- 0,
262
- &req->overlapped)) {
263
- uv_fatal_error(GetLastError(), "PostQueuedCompletionStatus");
264
- }
248
+ POST_COMPLETION_FOR_REQ(loop, req);
265
249
  }
266
250
  }
267
251
 
268
252
 
269
253
  /* set ares SOCK_STATE callback to our handler */
270
- int uv_ares_init_options(ares_channel *channelptr,
271
- struct ares_options *options,
272
- int optmask) {
254
+ int uv_ares_init_options(uv_loop_t* loop,
255
+ ares_channel *channelptr,
256
+ struct ares_options *options,
257
+ int optmask) {
273
258
  int rc;
274
259
 
275
260
  /* only allow single init at a time */
276
- if (uv_ares_data.channel != NULL) {
261
+ if (loop->ares_channel != NULL) {
277
262
  return UV_EALREADY;
278
263
  }
279
264
 
280
265
  /* set our callback as an option */
281
266
  options->sock_state_cb = uv_ares_sockstate_cb;
282
- options->sock_state_cb_data = &uv_ares_data;
267
+ options->sock_state_cb_data = loop;
283
268
  optmask |= ARES_OPT_SOCK_STATE_CB;
284
269
 
285
270
  /* We do the call to ares_init_option for caller. */
@@ -287,7 +272,7 @@ int uv_ares_init_options(ares_channel *channelptr,
287
272
 
288
273
  /* if success, save channel */
289
274
  if (rc == ARES_SUCCESS) {
290
- uv_ares_data.channel = *channelptr;
275
+ loop->ares_channel = *channelptr;
291
276
  }
292
277
 
293
278
  return rc;
@@ -295,10 +280,10 @@ int uv_ares_init_options(ares_channel *channelptr,
295
280
 
296
281
 
297
282
  /* release memory */
298
- void uv_ares_destroy(ares_channel channel) {
283
+ void uv_ares_destroy(uv_loop_t* loop, ares_channel channel) {
299
284
  /* only allow destroy if did init */
300
- if (uv_ares_data.channel != NULL) {
285
+ if (loop->ares_channel != NULL) {
301
286
  ares_destroy(channel);
302
- uv_ares_data.channel = NULL;
287
+ loop->ares_channel = NULL;
303
288
  }
304
289
  }