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
@@ -61,39 +61,38 @@
61
61
  */
62
62
  static uv_err_code uv_translate_eai_error(int eai_errno) {
63
63
  switch (eai_errno) {
64
- case ERROR_SUCCESS: return UV_OK;
65
- case EAI_BADFLAGS: return UV_EBADF;
66
- case EAI_FAIL: return UV_EFAULT;
67
- case EAI_FAMILY: return UV_EAIFAMNOSUPPORT;
68
- case EAI_MEMORY: return UV_ENOMEM;
69
- case EAI_NONAME: return UV_EAINONAME;
70
- case EAI_AGAIN: return UV_EAGAIN;
71
- case EAI_SERVICE: return UV_EAISERVICE;
72
- case EAI_SOCKTYPE: return UV_EAISOCKTYPE;
73
- default: return uv_translate_sys_error(eai_errno);
64
+ case ERROR_SUCCESS: return UV_OK;
65
+ case EAI_BADFLAGS: return UV_EBADF;
66
+ case EAI_FAIL: return UV_EFAULT;
67
+ case EAI_FAMILY: return UV_EAIFAMNOSUPPORT;
68
+ case EAI_MEMORY: return UV_ENOMEM;
69
+ case EAI_NONAME: return UV_EAINONAME;
70
+ case EAI_AGAIN: return UV_EAGAIN;
71
+ case EAI_SERVICE: return UV_EAISERVICE;
72
+ case EAI_SOCKTYPE: return UV_EAISOCKTYPE;
73
+ default: return uv_translate_sys_error(eai_errno);
74
74
  }
75
75
  }
76
76
 
77
77
 
78
78
  /* getaddrinfo worker thread implementation */
79
79
  static DWORD WINAPI getaddrinfo_thread_proc(void* parameter) {
80
- uv_getaddrinfo_t* handle = (uv_getaddrinfo_t*)parameter;
80
+ uv_getaddrinfo_t* handle = (uv_getaddrinfo_t*) parameter;
81
+ uv_loop_t* loop = handle->loop;
81
82
  int ret;
82
83
 
83
84
  assert(handle != NULL);
84
85
 
85
86
  if (handle != NULL) {
86
87
  /* call OS function on this thread */
87
- ret = GetAddrInfoW(handle->node, handle->service, handle->hints, &handle->res);
88
+ ret = GetAddrInfoW(handle->node,
89
+ handle->service,
90
+ handle->hints,
91
+ &handle->res);
88
92
  handle->retcode = ret;
89
93
 
90
94
  /* post getaddrinfo completed */
91
- if (!PostQueuedCompletionStatus(LOOP->iocp,
92
- 0,
93
- 0,
94
- &handle->getadddrinfo_req.overlapped)) {
95
- uv_fatal_error(GetLastError(), "PostQueuedCompletionStatus");
96
- }
95
+ POST_COMPLETION_FOR_REQ(loop, &handle->getadddrinfo_req);
97
96
  }
98
97
 
99
98
  return 0;
@@ -109,7 +108,8 @@ static DWORD WINAPI getaddrinfo_thread_proc(void* parameter) {
109
108
  * and copy all structs and referenced strings into the one block.
110
109
  * Each size calculation is adjusted to avoid unaligned pointers.
111
110
  */
112
- void uv_process_getaddrinfo_req(uv_getaddrinfo_t* handle, uv_req_t* req) {
111
+ void uv_process_getaddrinfo_req(uv_loop_t* loop, uv_getaddrinfo_t* handle,
112
+ uv_req_t* req) {
113
113
  int addrinfo_len = 0;
114
114
  int name_len = 0;
115
115
  size_t addrinfo_struct_len = ALIGNED_SIZE(sizeof(struct addrinfo));
@@ -131,7 +131,8 @@ void uv_process_getaddrinfo_req(uv_getaddrinfo_t* handle, uv_req_t* req) {
131
131
  /* first calculate required length */
132
132
  addrinfow_ptr = handle->res;
133
133
  while (addrinfow_ptr != NULL) {
134
- addrinfo_len += addrinfo_struct_len + ALIGNED_SIZE(addrinfow_ptr->ai_addrlen);
134
+ addrinfo_len += addrinfo_struct_len +
135
+ ALIGNED_SIZE(addrinfow_ptr->ai_addrlen);
135
136
  if (addrinfow_ptr->ai_canonname != NULL) {
136
137
  name_len = uv_utf16_to_utf8(addrinfow_ptr->ai_canonname, -1, NULL, 0);
137
138
  if (name_len == 0) {
@@ -168,7 +169,8 @@ void uv_process_getaddrinfo_req(uv_getaddrinfo_t* handle, uv_req_t* req) {
168
169
 
169
170
  /* copy sockaddr */
170
171
  if (addrinfo_ptr->ai_addrlen > 0) {
171
- assert(cur_ptr + addrinfo_ptr->ai_addrlen <= alloc_ptr + addrinfo_len);
172
+ assert(cur_ptr + addrinfo_ptr->ai_addrlen <=
173
+ alloc_ptr + addrinfo_len);
172
174
  memcpy(cur_ptr, addrinfow_ptr->ai_addr, addrinfo_ptr->ai_addrlen);
173
175
  addrinfo_ptr->ai_addr = (struct sockaddr*)cur_ptr;
174
176
  cur_ptr += ALIGNED_SIZE(addrinfo_ptr->ai_addrlen);
@@ -176,10 +178,16 @@ void uv_process_getaddrinfo_req(uv_getaddrinfo_t* handle, uv_req_t* req) {
176
178
 
177
179
  /* convert canonical name to UTF-8 */
178
180
  if (addrinfow_ptr->ai_canonname != NULL) {
179
- name_len = uv_utf16_to_utf8(addrinfow_ptr->ai_canonname, -1, NULL, 0);
181
+ name_len = uv_utf16_to_utf8(addrinfow_ptr->ai_canonname,
182
+ -1,
183
+ NULL,
184
+ 0);
180
185
  assert(name_len > 0);
181
186
  assert(cur_ptr + name_len <= alloc_ptr + addrinfo_len);
182
- name_len = uv_utf16_to_utf8(addrinfow_ptr->ai_canonname, -1, cur_ptr, name_len);
187
+ name_len = uv_utf16_to_utf8(addrinfow_ptr->ai_canonname,
188
+ -1,
189
+ cur_ptr,
190
+ name_len);
183
191
  assert(name_len > 0);
184
192
  addrinfo_ptr->ai_canonname = cur_ptr;
185
193
  cur_ptr += ALIGNED_SIZE(name_len);
@@ -213,7 +221,7 @@ complete:
213
221
  free(alloc_ptr);
214
222
  }
215
223
 
216
- uv_unref();
224
+ uv_unref(loop);
217
225
  }
218
226
 
219
227
 
@@ -221,7 +229,8 @@ complete:
221
229
  * Entry point for getaddrinfo
222
230
  * we convert the UTF-8 strings to UNICODE
223
231
  * and save the UNICODE string pointers in the handle
224
- * We also copy hints so that caller does not need to keep memory until the callback.
232
+ * We also copy hints so that caller does not need to keep memory until the
233
+ * callback.
225
234
  * return UV_OK if a callback will be made
226
235
  * return error code if validation fails
227
236
  *
@@ -229,7 +238,8 @@ complete:
229
238
  * and copy all structs and referenced strings into the one block.
230
239
  * Each size calculation is adjusted to avoid unaligned pointers.
231
240
  */
232
- int uv_getaddrinfo(uv_getaddrinfo_t* handle,
241
+ int uv_getaddrinfo(uv_loop_t* loop,
242
+ uv_getaddrinfo_t* handle,
233
243
  uv_getaddrinfo_cb getaddrinfo_cb,
234
244
  const char* node,
235
245
  const char* service,
@@ -241,27 +251,29 @@ int uv_getaddrinfo(uv_getaddrinfo_t* handle,
241
251
 
242
252
  if (handle == NULL || getaddrinfo_cb == NULL ||
243
253
  (node == NULL && service == NULL)) {
244
- uv_set_sys_error(WSAEINVAL);
254
+ uv_set_sys_error(loop, WSAEINVAL);
245
255
  goto error;
246
256
  }
247
257
 
248
258
  handle->getaddrinfo_cb = getaddrinfo_cb;
249
259
  handle->res = NULL;
250
260
  handle->type = UV_GETADDRINFO;
261
+ handle->loop = loop;
251
262
 
252
263
  /* calculate required memory size for all input values */
253
264
  if (node != NULL) {
254
265
  nodesize = ALIGNED_SIZE(uv_utf8_to_utf16(node, NULL, 0) * sizeof(wchar_t));
255
266
  if (nodesize == 0) {
256
- uv_set_sys_error(GetLastError());
267
+ uv_set_sys_error(loop, GetLastError());
257
268
  goto error;
258
269
  }
259
270
  }
260
271
 
261
272
  if (service != NULL) {
262
- servicesize = ALIGNED_SIZE(uv_utf8_to_utf16(service, NULL, 0) * sizeof(wchar_t));
273
+ servicesize = ALIGNED_SIZE(uv_utf8_to_utf16(service, NULL, 0) *
274
+ sizeof(wchar_t));
263
275
  if (servicesize == 0) {
264
- uv_set_sys_error(GetLastError());
276
+ uv_set_sys_error(loop, GetLastError());
265
277
  goto error;
266
278
  }
267
279
  }
@@ -272,18 +284,21 @@ int uv_getaddrinfo(uv_getaddrinfo_t* handle,
272
284
  /* allocate memory for inputs, and partition it as needed */
273
285
  alloc_ptr = (char*)malloc(nodesize + servicesize + hintssize);
274
286
  if (!alloc_ptr) {
275
- uv_set_sys_error(WSAENOBUFS);
287
+ uv_set_sys_error(loop, WSAENOBUFS);
276
288
  goto error;
277
289
  }
278
290
 
279
291
  /* save alloc_ptr now so we can free if error */
280
292
  handle->alloc = (void*)alloc_ptr;
281
293
 
282
- /* convert node string to UTF16 into allocated memory and save pointer in handle */
294
+ /* convert node string to UTF16 into allocated memory and save pointer in */
295
+ /* handle */
283
296
  if (node != NULL) {
284
297
  handle->node = (wchar_t*)alloc_ptr;
285
- if (uv_utf8_to_utf16(node, (wchar_t*)alloc_ptr, nodesize / sizeof(wchar_t)) == 0) {
286
- uv_set_sys_error(GetLastError());
298
+ if (uv_utf8_to_utf16(node,
299
+ (wchar_t*) alloc_ptr,
300
+ nodesize / sizeof(wchar_t)) == 0) {
301
+ uv_set_sys_error(loop, GetLastError());
287
302
  goto error;
288
303
  }
289
304
  alloc_ptr += nodesize;
@@ -291,11 +306,14 @@ int uv_getaddrinfo(uv_getaddrinfo_t* handle,
291
306
  handle->node = NULL;
292
307
  }
293
308
 
294
- /* convert service string to UTF16 into allocated memory and save pointer in handle */
309
+ /* convert service string to UTF16 into allocated memory and save pointer */
310
+ /* in handle */
295
311
  if (service != NULL) {
296
312
  handle->service = (wchar_t*)alloc_ptr;
297
- if (uv_utf8_to_utf16(service, (wchar_t*)alloc_ptr, servicesize / sizeof(wchar_t)) == 0) {
298
- uv_set_sys_error(GetLastError());
313
+ if (uv_utf8_to_utf16(service,
314
+ (wchar_t*) alloc_ptr,
315
+ servicesize / sizeof(wchar_t)) == 0) {
316
+ uv_set_sys_error(loop, GetLastError());
299
317
  goto error;
300
318
  }
301
319
  alloc_ptr += servicesize;
@@ -319,17 +337,19 @@ int uv_getaddrinfo(uv_getaddrinfo_t* handle,
319
337
  }
320
338
 
321
339
  /* init request for Post handling */
322
- uv_req_init(&handle->getadddrinfo_req);
340
+ uv_req_init(loop, &handle->getadddrinfo_req);
323
341
  handle->getadddrinfo_req.data = handle;
324
342
  handle->getadddrinfo_req.type = UV_GETADDRINFO_REQ;
325
343
 
326
344
  /* Ask thread to run. Treat this as a long operation */
327
- if (QueueUserWorkItem(&getaddrinfo_thread_proc, handle, WT_EXECUTELONGFUNCTION) == 0) {
328
- uv_set_sys_error(GetLastError());
345
+ if (QueueUserWorkItem(&getaddrinfo_thread_proc,
346
+ handle,
347
+ WT_EXECUTELONGFUNCTION) == 0) {
348
+ uv_set_sys_error(loop, GetLastError());
329
349
  goto error;
330
350
  }
331
351
 
332
- uv_ref();
352
+ uv_ref(loop);
333
353
 
334
354
  return 0;
335
355
 
@@ -39,18 +39,37 @@ int uv_is_active(uv_handle_t* handle) {
39
39
  }
40
40
 
41
41
 
42
- /* TODO: integrate this with uv_close. */
43
- static void uv_close_error(uv_handle_t* handle, uv_err_t e) {
42
+ int uv_getsockname(uv_handle_t* handle, struct sockaddr* name, int* namelen) {
43
+ uv_loop_t* loop = handle->loop;
44
+
45
+ switch (handle->type) {
46
+ case UV_TCP:
47
+ return uv_tcp_getsockname(loop, (uv_tcp_t*) handle, name, namelen);
48
+
49
+ case UV_UDP:
50
+ return uv_udp_getsockname(loop, (uv_udp_t*) handle, name, namelen);
51
+
52
+ default:
53
+ uv_set_sys_error(loop, WSAENOTSOCK);
54
+ return -1;
55
+ }
56
+ }
57
+
58
+
59
+ void uv_close(uv_handle_t* handle, uv_close_cb cb) {
44
60
  uv_tcp_t* tcp;
45
61
  uv_pipe_t* pipe;
62
+ uv_udp_t* udp;
46
63
  uv_process_t* process;
47
64
 
65
+ uv_loop_t* loop = handle->loop;
66
+
48
67
  if (handle->flags & UV_HANDLE_CLOSING) {
49
68
  return;
50
69
  }
51
70
 
52
- handle->error = e;
53
71
  handle->flags |= UV_HANDLE_CLOSING;
72
+ handle->close_cb = cb;
54
73
 
55
74
  /* Handle-specific close actions */
56
75
  switch (handle->type) {
@@ -65,7 +84,7 @@ static void uv_close_error(uv_handle_t* handle, uv_err_t e) {
65
84
  tcp->flags &= ~(UV_HANDLE_READING | UV_HANDLE_LISTENING);
66
85
  closesocket(tcp->socket);
67
86
  if (tcp->reqs_pending == 0) {
68
- uv_want_endgame(handle);
87
+ uv_want_endgame(loop, handle);
69
88
  }
70
89
  return;
71
90
 
@@ -74,39 +93,48 @@ static void uv_close_error(uv_handle_t* handle, uv_err_t e) {
74
93
  pipe->flags &= ~(UV_HANDLE_READING | UV_HANDLE_LISTENING);
75
94
  close_pipe(pipe, NULL, NULL);
76
95
  if (pipe->reqs_pending == 0) {
77
- uv_want_endgame(handle);
96
+ uv_want_endgame(loop, handle);
97
+ }
98
+ return;
99
+
100
+ case UV_UDP:
101
+ udp = (uv_udp_t*) handle;
102
+ uv_udp_recv_stop(udp);
103
+ closesocket(udp->socket);
104
+ if (udp->reqs_pending == 0) {
105
+ uv_want_endgame(loop, handle);
78
106
  }
79
107
  return;
80
108
 
81
109
  case UV_TIMER:
82
110
  uv_timer_stop((uv_timer_t*)handle);
83
- uv_want_endgame(handle);
111
+ uv_want_endgame(loop, handle);
84
112
  return;
85
113
 
86
114
  case UV_PREPARE:
87
115
  uv_prepare_stop((uv_prepare_t*)handle);
88
- uv_want_endgame(handle);
116
+ uv_want_endgame(loop, handle);
89
117
  return;
90
118
 
91
119
  case UV_CHECK:
92
120
  uv_check_stop((uv_check_t*)handle);
93
- uv_want_endgame(handle);
121
+ uv_want_endgame(loop, handle);
94
122
  return;
95
123
 
96
124
  case UV_IDLE:
97
125
  uv_idle_stop((uv_idle_t*)handle);
98
- uv_want_endgame(handle);
126
+ uv_want_endgame(loop, handle);
99
127
  return;
100
128
 
101
129
  case UV_ASYNC:
102
130
  if (!((uv_async_t*)handle)->async_sent) {
103
- uv_want_endgame(handle);
131
+ uv_want_endgame(loop, handle);
104
132
  }
105
133
  return;
106
134
 
107
135
  case UV_PROCESS:
108
136
  process = (uv_process_t*)handle;
109
- uv_process_close(process);
137
+ uv_process_close(loop, process);
110
138
  return;
111
139
 
112
140
  default:
@@ -116,56 +144,54 @@ static void uv_close_error(uv_handle_t* handle, uv_err_t e) {
116
144
  }
117
145
 
118
146
 
119
- void uv_close(uv_handle_t* handle, uv_close_cb close_cb) {
120
- handle->close_cb = close_cb;
121
- uv_close_error(handle, uv_ok_);
122
- }
123
-
124
-
125
- void uv_want_endgame(uv_handle_t* handle) {
147
+ void uv_want_endgame(uv_loop_t* loop, uv_handle_t* handle) {
126
148
  if (!(handle->flags & UV_HANDLE_ENDGAME_QUEUED)) {
127
149
  handle->flags |= UV_HANDLE_ENDGAME_QUEUED;
128
150
 
129
- handle->endgame_next = LOOP->endgame_handles;
130
- LOOP->endgame_handles = handle;
151
+ handle->endgame_next = loop->endgame_handles;
152
+ loop->endgame_handles = handle;
131
153
  }
132
154
  }
133
155
 
134
156
 
135
- void uv_process_endgames() {
157
+ void uv_process_endgames(uv_loop_t* loop) {
136
158
  uv_handle_t* handle;
137
159
 
138
- while (LOOP->endgame_handles) {
139
- handle = LOOP->endgame_handles;
140
- LOOP->endgame_handles = handle->endgame_next;
160
+ while (loop->endgame_handles) {
161
+ handle = loop->endgame_handles;
162
+ loop->endgame_handles = handle->endgame_next;
141
163
 
142
164
  handle->flags &= ~UV_HANDLE_ENDGAME_QUEUED;
143
165
 
144
166
  switch (handle->type) {
145
167
  case UV_TCP:
146
- uv_tcp_endgame((uv_tcp_t*)handle);
168
+ uv_tcp_endgame(loop, (uv_tcp_t*) handle);
147
169
  break;
148
170
 
149
171
  case UV_NAMED_PIPE:
150
- uv_pipe_endgame((uv_pipe_t*)handle);
172
+ uv_pipe_endgame(loop, (uv_pipe_t*) handle);
173
+ break;
174
+
175
+ case UV_UDP:
176
+ uv_udp_endgame(loop, (uv_udp_t*) handle);
151
177
  break;
152
178
 
153
179
  case UV_TIMER:
154
- uv_timer_endgame((uv_timer_t*)handle);
180
+ uv_timer_endgame(loop, (uv_timer_t*) handle);
155
181
  break;
156
182
 
157
183
  case UV_PREPARE:
158
184
  case UV_CHECK:
159
185
  case UV_IDLE:
160
- uv_loop_watcher_endgame(handle);
186
+ uv_loop_watcher_endgame(loop, handle);
161
187
  break;
162
188
 
163
189
  case UV_ASYNC:
164
- uv_async_endgame((uv_async_t*)handle);
190
+ uv_async_endgame(loop, (uv_async_t*) handle);
165
191
  break;
166
192
 
167
193
  case UV_PROCESS:
168
- uv_process_endgame((uv_process_t*)handle);
194
+ uv_process_endgame(loop, (uv_process_t*) handle);
169
195
  break;
170
196
 
171
197
  default: