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
@@ -0,0 +1,250 @@
1
+ /* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
2
+ *
3
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ * of this software and associated documentation files (the "Software"), to
5
+ * deal in the Software without restriction, including without limitation the
6
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
+ * sell copies of the Software, and to permit persons to whom the Software is
8
+ * furnished to do so, subject to the following conditions:
9
+ *
10
+ * The above copyright notice and this permission notice shall be included in
11
+ * all copies or substantial portions of the Software.
12
+ *
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
+ * IN THE SOFTWARE.
20
+ */
21
+
22
+ #include "task.h"
23
+ #include "uv.h"
24
+
25
+ #include <stdio.h>
26
+ #include <stdlib.h>
27
+ #include <string.h>
28
+
29
+ #define EXPECTED "RANG TANG DING DONG I AM THE JAPANESE SANDMAN" /* "Take eight!" */
30
+
31
+ #define TEST_DURATION 5000 /* ms */
32
+
33
+ #define MAX_SENDERS 1000
34
+ #define MAX_RECEIVERS 1000
35
+
36
+ #define BASE_PORT 12345
37
+
38
+ #define ARRAY_SIZE(a) (sizeof((a)) / sizeof((a)[0]))
39
+
40
+ static uv_loop_t* loop;
41
+
42
+ static int n_senders_;
43
+ static int n_receivers_;
44
+ static uv_udp_t senders[MAX_SENDERS];
45
+ static uv_udp_t receivers[MAX_RECEIVERS];
46
+ static uv_buf_t bufs[5];
47
+
48
+ static int send_cb_called;
49
+ static int recv_cb_called;
50
+ static int close_cb_called;
51
+ static int stopping = 0;
52
+
53
+ typedef struct {
54
+ struct sockaddr_in addr;
55
+ } sender_state_t;
56
+
57
+
58
+ static uv_buf_t alloc_cb(uv_handle_t* handle, size_t suggested_size) {
59
+ static char slab[65536];
60
+ ASSERT(suggested_size <= sizeof slab);
61
+ return uv_buf_init(slab, sizeof slab);
62
+ }
63
+
64
+
65
+ static void send_cb(uv_udp_send_t* req, int status) {
66
+ sender_state_t* ss;
67
+ int r;
68
+
69
+ if (stopping) {
70
+ return;
71
+ }
72
+
73
+ ASSERT(req != NULL);
74
+ ASSERT(status == 0);
75
+
76
+ ss = req->data;
77
+
78
+ r = uv_udp_send(req, req->handle, bufs, ARRAY_SIZE(bufs), ss->addr, send_cb);
79
+ ASSERT(r == 0);
80
+
81
+ req->data = ss;
82
+
83
+ send_cb_called++;
84
+ }
85
+
86
+
87
+ static void recv_cb(uv_udp_t* handle,
88
+ ssize_t nread,
89
+ uv_buf_t buf,
90
+ struct sockaddr* addr,
91
+ unsigned flags) {
92
+ if (nread == 0)
93
+ return;
94
+
95
+ if (nread == -1) {
96
+ ASSERT(uv_last_error(loop).code == UV_EINTR); /* FIXME change error code */
97
+ return;
98
+ }
99
+
100
+ ASSERT(addr->sa_family == AF_INET);
101
+ ASSERT(!memcmp(buf.base, EXPECTED, nread));
102
+
103
+ recv_cb_called++;
104
+ }
105
+
106
+
107
+ static void close_cb(uv_handle_t* handle) {
108
+ ASSERT(handle != NULL);
109
+ close_cb_called++;
110
+ }
111
+
112
+
113
+ static void timeout_cb(uv_timer_t* timer, int status) {
114
+ int i;
115
+
116
+ stopping = 1;
117
+
118
+ for (i = 0; i < n_senders_; i++)
119
+ uv_close((uv_handle_t*)&senders[i], close_cb);
120
+
121
+ for (i = 0; i < n_receivers_; i++)
122
+ uv_close((uv_handle_t*)&receivers[i], close_cb);
123
+ }
124
+
125
+
126
+ static int do_packet_storm(int n_senders, int n_receivers) {
127
+ uv_timer_t timeout;
128
+ sender_state_t *ss;
129
+ uv_udp_send_t* req;
130
+ uv_udp_t* handle;
131
+ int i;
132
+ int r;
133
+
134
+ ASSERT(n_senders <= MAX_SENDERS);
135
+ ASSERT(n_receivers <= MAX_RECEIVERS);
136
+
137
+ uv_init();
138
+ loop = uv_default_loop();
139
+
140
+ n_senders_ = n_senders;
141
+ n_receivers_ = n_receivers;
142
+
143
+ r = uv_timer_init(loop, &timeout);
144
+ ASSERT(r == 0);
145
+
146
+ r = uv_timer_start(&timeout, timeout_cb, TEST_DURATION, 0);
147
+ ASSERT(r == 0);
148
+
149
+ /* Timer should not keep loop alive. */
150
+ uv_unref(loop);
151
+
152
+ for (i = 0; i < n_receivers; i++) {
153
+ struct sockaddr_in addr;
154
+ handle = &receivers[i];
155
+
156
+ r = uv_udp_init(loop, handle);
157
+ ASSERT(r == 0);
158
+
159
+ addr = uv_ip4_addr("0.0.0.0", BASE_PORT + i);
160
+
161
+ r = uv_udp_bind(handle, addr, 0);
162
+ ASSERT(r == 0);
163
+
164
+ r = uv_udp_recv_start(handle, alloc_cb, recv_cb);
165
+ ASSERT(r == 0);
166
+ }
167
+
168
+ bufs[0] = uv_buf_init(EXPECTED + 0, 10);
169
+ bufs[1] = uv_buf_init(EXPECTED + 10, 10);
170
+ bufs[2] = uv_buf_init(EXPECTED + 20, 10);
171
+ bufs[3] = uv_buf_init(EXPECTED + 30, 10);
172
+ bufs[4] = uv_buf_init(EXPECTED + 40, 5);
173
+
174
+ for (i = 0; i < n_senders; i++) {
175
+ handle = &senders[i];
176
+
177
+ r = uv_udp_init(loop, handle);
178
+ ASSERT(r == 0);
179
+
180
+ req = malloc(sizeof(*req) + sizeof(*ss));
181
+
182
+ ss = (void*)(req + 1);
183
+ ss->addr = uv_ip4_addr("127.0.0.1", BASE_PORT + (i % n_receivers));
184
+
185
+ r = uv_udp_send(req, handle, bufs, ARRAY_SIZE(bufs), ss->addr, send_cb);
186
+ ASSERT(r == 0);
187
+
188
+ req->data = ss;
189
+ }
190
+
191
+ uv_run(loop);
192
+
193
+ printf("udp_packet_storm_%dv%d: %.0f/s received, %.0f/s sent\n",
194
+ n_receivers,
195
+ n_senders,
196
+ recv_cb_called / (TEST_DURATION / 1000.0),
197
+ send_cb_called / (TEST_DURATION / 1000.0));
198
+
199
+ return 0;
200
+ }
201
+
202
+
203
+ BENCHMARK_IMPL(udp_packet_storm_1v1) {
204
+ return do_packet_storm(1, 1);
205
+ }
206
+
207
+
208
+ BENCHMARK_IMPL(udp_packet_storm_1v10) {
209
+ return do_packet_storm(1, 10);
210
+ }
211
+
212
+
213
+ BENCHMARK_IMPL(udp_packet_storm_1v100) {
214
+ return do_packet_storm(1, 100);
215
+ }
216
+
217
+
218
+ BENCHMARK_IMPL(udp_packet_storm_1v1000) {
219
+ return do_packet_storm(1, 1000);
220
+ }
221
+
222
+
223
+ BENCHMARK_IMPL(udp_packet_storm_10v10) {
224
+ return do_packet_storm(10, 10);
225
+ }
226
+
227
+
228
+ BENCHMARK_IMPL(udp_packet_storm_10v100) {
229
+ return do_packet_storm(10, 100);
230
+ }
231
+
232
+
233
+ BENCHMARK_IMPL(udp_packet_storm_10v1000) {
234
+ return do_packet_storm(10, 1000);
235
+ }
236
+
237
+
238
+ BENCHMARK_IMPL(udp_packet_storm_100v100) {
239
+ return do_packet_storm(100, 100);
240
+ }
241
+
242
+
243
+ BENCHMARK_IMPL(udp_packet_storm_100v1000) {
244
+ return do_packet_storm(100, 1000);
245
+ }
246
+
247
+
248
+ BENCHMARK_IMPL(udp_packet_storm_1000v1000) {
249
+ return do_packet_storm(1000, 1000);
250
+ }
@@ -47,6 +47,9 @@ typedef struct {
47
47
  } dnshandle;
48
48
 
49
49
 
50
+ static uv_loop_t* loop;
51
+
52
+
50
53
  static int server_closed;
51
54
  static uv_tcp_t server;
52
55
 
@@ -71,7 +74,7 @@ static void after_write(uv_write_t* req, int status) {
71
74
  write_req_t* wr;
72
75
 
73
76
  if (status) {
74
- uv_err_t err = uv_last_error();
77
+ uv_err_t err = uv_last_error(loop);
75
78
  fprintf(stderr, "uv_write error: %s\n", uv_strerror(err));
76
79
  ASSERT(0);
77
80
  }
@@ -220,7 +223,7 @@ static void after_read(uv_stream_t* handle, ssize_t nread, uv_buf_t buf) {
220
223
 
221
224
  if (nread < 0) {
222
225
  /* Error or EOF */
223
- ASSERT (uv_last_error().code == UV_EOF);
226
+ ASSERT (uv_last_error(loop).code == UV_EOF);
224
227
 
225
228
  if (buf.base) {
226
229
  free(buf.base);
@@ -247,7 +250,7 @@ static void on_close(uv_handle_t* peer) {
247
250
  }
248
251
 
249
252
 
250
- static uv_buf_t buf_alloc(uv_stream_t* handle, size_t suggested_size) {
253
+ static uv_buf_t buf_alloc(uv_handle_t* handle, size_t suggested_size) {
251
254
  uv_buf_t buf;
252
255
  buf.base = (char*) malloc(suggested_size);
253
256
  buf.len = suggested_size;
@@ -269,7 +272,7 @@ static void on_connection(uv_stream_t* server, int status) {
269
272
  handle->state.prevbuf_pos = 0;
270
273
  handle->state.prevbuf_rem = 0;
271
274
 
272
- uv_tcp_init((uv_tcp_t*)handle);
275
+ uv_tcp_init(loop, (uv_tcp_t*)handle);
273
276
 
274
277
  r = uv_accept(server, (uv_stream_t*)handle);
275
278
  ASSERT(r == 0);
@@ -288,7 +291,7 @@ static int dns_start(int port) {
288
291
  struct sockaddr_in addr = uv_ip4_addr("0.0.0.0", port);
289
292
  int r;
290
293
 
291
- r = uv_tcp_init(&server);
294
+ r = uv_tcp_init(loop, &server);
292
295
  if (r) {
293
296
  /* TODO: Error codes */
294
297
  fprintf(stderr, "Socket creation error\n");
@@ -315,9 +318,11 @@ static int dns_start(int port) {
315
318
 
316
319
  HELPER_IMPL(dns_server) {
317
320
  uv_init();
321
+ loop = uv_default_loop();
322
+
318
323
  if (dns_start(TEST_PORT_2))
319
324
  return 1;
320
325
 
321
- uv_run();
326
+ uv_run(loop);
322
327
  return 0;
323
328
  }
@@ -29,6 +29,8 @@ typedef struct {
29
29
  uv_buf_t buf;
30
30
  } write_req_t;
31
31
 
32
+ static uv_loop_t* loop;
33
+
32
34
  static int server_closed;
33
35
  static stream_type serverType;
34
36
  static uv_tcp_t tcpServer;
@@ -46,7 +48,7 @@ static void after_write(uv_write_t* req, int status) {
46
48
  write_req_t* wr;
47
49
 
48
50
  if (status) {
49
- uv_err_t err = uv_last_error();
51
+ uv_err_t err = uv_last_error(loop);
50
52
  fprintf(stderr, "uv_write error: %s\n", uv_strerror(err));
51
53
  ASSERT(0);
52
54
  }
@@ -72,7 +74,7 @@ static void after_read(uv_stream_t* handle, ssize_t nread, uv_buf_t buf) {
72
74
 
73
75
  if (nread < 0) {
74
76
  /* Error or EOF */
75
- ASSERT (uv_last_error().code == UV_EOF);
77
+ ASSERT (uv_last_error(loop).code == UV_EOF);
76
78
 
77
79
  if (buf.base) {
78
80
  free(buf.base);
@@ -111,8 +113,7 @@ static void after_read(uv_stream_t* handle, ssize_t nread, uv_buf_t buf) {
111
113
 
112
114
  wr = (write_req_t*) malloc(sizeof *wr);
113
115
 
114
- wr->buf.base = buf.base;
115
- wr->buf.len = nread;
116
+ wr->buf = uv_buf_init(buf.base, nread);
116
117
  if (uv_write(&wr->req, handle, &wr->buf, 1, after_write)) {
117
118
  FATAL("uv_write failed");
118
119
  }
@@ -124,11 +125,8 @@ static void on_close(uv_handle_t* peer) {
124
125
  }
125
126
 
126
127
 
127
- static uv_buf_t echo_alloc(uv_stream_t* handle, size_t suggested_size) {
128
- uv_buf_t buf;
129
- buf.base = (char*) malloc(suggested_size);
130
- buf.len = suggested_size;
131
- return buf;
128
+ static uv_buf_t echo_alloc(uv_handle_t* handle, size_t suggested_size) {
129
+ return uv_buf_init(malloc(suggested_size), suggested_size);
132
130
  }
133
131
 
134
132
 
@@ -137,7 +135,8 @@ static void on_connection(uv_stream_t* server, int status) {
137
135
  int r;
138
136
 
139
137
  if (status != 0) {
140
- fprintf(stderr, "Connect error %d\n", uv_last_error().code);
138
+ fprintf(stderr, "Connect error %d\n",
139
+ uv_last_error(loop).code);
141
140
  }
142
141
  ASSERT(status == 0);
143
142
 
@@ -145,13 +144,13 @@ static void on_connection(uv_stream_t* server, int status) {
145
144
  case TCP:
146
145
  stream = malloc(sizeof(uv_tcp_t));
147
146
  ASSERT(stream != NULL);
148
- uv_tcp_init((uv_tcp_t*)stream);
147
+ uv_tcp_init(loop, (uv_tcp_t*)stream);
149
148
  break;
150
149
 
151
150
  case PIPE:
152
151
  stream = malloc(sizeof(uv_pipe_t));
153
152
  ASSERT(stream != NULL);
154
- uv_pipe_init((uv_pipe_t*)stream);
153
+ uv_pipe_init(loop, (uv_pipe_t*)stream);
155
154
  break;
156
155
 
157
156
  default:
@@ -182,7 +181,7 @@ static int tcp4_echo_start(int port) {
182
181
  server = (uv_handle_t*)&tcpServer;
183
182
  serverType = TCP;
184
183
 
185
- r = uv_tcp_init(&tcpServer);
184
+ r = uv_tcp_init(loop, &tcpServer);
186
185
  if (r) {
187
186
  /* TODO: Error codes */
188
187
  fprintf(stderr, "Socket creation error\n");
@@ -199,7 +198,8 @@ static int tcp4_echo_start(int port) {
199
198
  r = uv_listen((uv_stream_t*)&tcpServer, SOMAXCONN, on_connection);
200
199
  if (r) {
201
200
  /* TODO: Error codes */
202
- fprintf(stderr, "Listen error\n");
201
+ fprintf(stderr, "Listen error %s\n",
202
+ uv_err_name(uv_last_error(loop)));
203
203
  return 1;
204
204
  }
205
205
 
@@ -214,7 +214,7 @@ static int tcp6_echo_start(int port) {
214
214
  server = (uv_handle_t*)&tcpServer;
215
215
  serverType = TCP;
216
216
 
217
- r = uv_tcp_init(&tcpServer);
217
+ r = uv_tcp_init(loop, &tcpServer);
218
218
  if (r) {
219
219
  /* TODO: Error codes */
220
220
  fprintf(stderr, "Socket creation error\n");
@@ -246,21 +246,24 @@ static int pipe_echo_start(char* pipeName) {
246
246
  server = (uv_handle_t*)&pipeServer;
247
247
  serverType = PIPE;
248
248
 
249
- r = uv_pipe_init(&pipeServer);
249
+ r = uv_pipe_init(loop, &pipeServer);
250
250
  if (r) {
251
- fprintf(stderr, "uv_pipe_init: %s\n", uv_strerror(uv_last_error()));
251
+ fprintf(stderr, "uv_pipe_init: %s\n",
252
+ uv_strerror(uv_last_error(loop)));
252
253
  return 1;
253
254
  }
254
255
 
255
256
  r = uv_pipe_bind(&pipeServer, pipeName);
256
257
  if (r) {
257
- fprintf(stderr, "uv_pipe_bind: %s\n", uv_strerror(uv_last_error()));
258
+ fprintf(stderr, "uv_pipe_bind: %s\n",
259
+ uv_strerror(uv_last_error(loop)));
258
260
  return 1;
259
261
  }
260
262
 
261
263
  r = uv_listen((uv_stream_t*)&pipeServer, SOMAXCONN, on_connection);
262
264
  if (r) {
263
- fprintf(stderr, "uv_pipe_listen: %s\n", uv_strerror(uv_last_error()));
265
+ fprintf(stderr, "uv_pipe_listen: %s\n",
266
+ uv_strerror(uv_last_error(loop)));
264
267
  return 1;
265
268
  }
266
269
 
@@ -270,30 +273,35 @@ static int pipe_echo_start(char* pipeName) {
270
273
 
271
274
  HELPER_IMPL(tcp4_echo_server) {
272
275
  uv_init();
276
+ loop = uv_default_loop();
277
+
273
278
  if (tcp4_echo_start(TEST_PORT))
274
279
  return 1;
275
280
 
276
- uv_run();
281
+ uv_run(loop);
277
282
  return 0;
278
283
  }
279
284
 
280
285
 
281
286
  HELPER_IMPL(tcp6_echo_server) {
282
287
  uv_init();
288
+ loop = uv_default_loop();
289
+
283
290
  if (tcp6_echo_start(TEST_PORT))
284
291
  return 1;
285
292
 
286
- uv_run();
293
+ uv_run(loop);
287
294
  return 0;
288
295
  }
289
296
 
290
297
 
291
298
  HELPER_IMPL(pipe_echo_server) {
292
299
  uv_init();
300
+ loop = uv_default_loop();
293
301
 
294
302
  if (pipe_echo_start(TEST_PIPENAME))
295
303
  return 1;
296
304
 
297
- uv_run();
305
+ uv_run(loop);
298
306
  return 0;
299
307
  }
@@ -184,12 +184,12 @@ TEST_IMPL(async) {
184
184
 
185
185
  uv_init();
186
186
 
187
- r = uv_prepare_init(&prepare_handle);
187
+ r = uv_prepare_init(uv_default_loop(), &prepare_handle);
188
188
  ASSERT(r == 0);
189
189
  r = uv_prepare_start(&prepare_handle, prepare_cb);
190
190
  ASSERT(r == 0);
191
191
 
192
- r = uv_async_init(&async1_handle, async1_cb);
192
+ r = uv_async_init(uv_default_loop(), &async1_handle, async1_cb);
193
193
  ASSERT(r == 0);
194
194
 
195
195
  #if 0
@@ -197,7 +197,7 @@ TEST_IMPL(async) {
197
197
  ASSERT(r == 0);
198
198
  #endif
199
199
 
200
- r = uv_run();
200
+ r = uv_run(uv_default_loop());
201
201
  ASSERT(r == 0);
202
202
 
203
203
  r = uv_wait_thread(thread1_id);
@@ -45,7 +45,7 @@ static int bytes_received = 0;
45
45
  static int shutdown_cb_called = 0;
46
46
 
47
47
 
48
- static uv_buf_t alloc_cb(uv_stream_t* tcp, size_t size) {
48
+ static uv_buf_t alloc_cb(uv_handle_t* handle, size_t size) {
49
49
  uv_buf_t buf;
50
50
  buf.len = size;
51
51
  buf.base = (char*) malloc(size);
@@ -76,11 +76,11 @@ static void read_cb(uv_stream_t* tcp, ssize_t nread, uv_buf_t buf) {
76
76
  free(buf.base);
77
77
 
78
78
  if (nread == 0) {
79
- ASSERT(uv_last_error().code == UV_EAGAIN);
79
+ ASSERT(uv_last_error(uv_default_loop()).code == UV_EAGAIN);
80
80
  return;
81
81
 
82
82
  } else if (nread == -1) {
83
- ASSERT(uv_last_error().code == UV_EOF);
83
+ ASSERT(uv_last_error(uv_default_loop()).code == UV_EOF);
84
84
 
85
85
  nested++;
86
86
  uv_close((uv_handle_t*)tcp, close_cb);
@@ -140,7 +140,7 @@ static void write_cb(uv_write_t* req, int status) {
140
140
  /* back to our receive buffer when we start reading. This maximizes the */
141
141
  /* tempation for the backend to use dirty stack for calling read_cb. */
142
142
  nested++;
143
- r = uv_timer_init(&timer);
143
+ r = uv_timer_init(uv_default_loop(), &timer);
144
144
  ASSERT(r == 0);
145
145
  r = uv_timer_start(&timer, timer_cb, 500, 0);
146
146
  ASSERT(r == 0);
@@ -178,7 +178,7 @@ TEST_IMPL(callback_stack) {
178
178
 
179
179
  uv_init();
180
180
 
181
- if (uv_tcp_init(&client)) {
181
+ if (uv_tcp_init(uv_default_loop(), &client)) {
182
182
  FATAL("uv_tcp_init failed");
183
183
  }
184
184
 
@@ -191,7 +191,7 @@ TEST_IMPL(callback_stack) {
191
191
  }
192
192
  nested--;
193
193
 
194
- uv_run();
194
+ uv_run(uv_default_loop());
195
195
 
196
196
  ASSERT(nested == 0);
197
197
  ASSERT(connect_cb_called == 1 && "connect_cb must be called exactly once");
@@ -69,7 +69,7 @@ static void timer_cb(uv_timer_t* handle, int status) {
69
69
  static void on_connect_with_close(uv_connect_t *req, int status) {
70
70
  ASSERT((uv_stream_t*) &tcp == req->handle);
71
71
  ASSERT(status == -1);
72
- ASSERT(uv_last_error().code == UV_ECONNREFUSED);
72
+ ASSERT(uv_last_error(uv_default_loop()).code == UV_ECONNREFUSED);
73
73
  connect_cb_calls++;
74
74
 
75
75
  ASSERT(close_cb_calls == 0);
@@ -79,7 +79,7 @@ static void on_connect_with_close(uv_connect_t *req, int status) {
79
79
 
80
80
  static void on_connect_without_close(uv_connect_t *req, int status) {
81
81
  ASSERT(status == -1);
82
- ASSERT(uv_last_error().code == UV_ECONNREFUSED);
82
+ ASSERT(uv_last_error(uv_default_loop()).code == UV_ECONNREFUSED);
83
83
  connect_cb_calls++;
84
84
 
85
85
  uv_timer_start(&timer, timer_cb, 100, 0);
@@ -98,7 +98,7 @@ void connection_fail(uv_connect_cb connect_cb) {
98
98
  server_addr = uv_ip4_addr("127.0.0.1", TEST_PORT);
99
99
 
100
100
  /* Try to connec to the server and do NUM_PINGS ping-pongs. */
101
- r = uv_tcp_init(&tcp);
101
+ r = uv_tcp_init(uv_default_loop(), &tcp);
102
102
  ASSERT(!r);
103
103
 
104
104
  /* We are never doing multiple reads/connects at a time anyway. */
@@ -107,7 +107,7 @@ void connection_fail(uv_connect_cb connect_cb) {
107
107
  r = uv_tcp_connect(&req, &tcp, server_addr, connect_cb);
108
108
  ASSERT(!r);
109
109
 
110
- uv_run();
110
+ uv_run(uv_default_loop());
111
111
 
112
112
  ASSERT(connect_cb_calls == 1);
113
113
  ASSERT(close_cb_calls == 1);
@@ -138,7 +138,8 @@ TEST_IMPL(connection_fail) {
138
138
  TEST_IMPL(connection_fail_doesnt_auto_close) {
139
139
  uv_init();
140
140
 
141
- uv_timer_init(&timer);
141
+
142
+ uv_timer_init(uv_default_loop(), &timer);
142
143
 
143
144
  connection_fail(on_connect_without_close);
144
145
 
@@ -30,7 +30,7 @@ static int close_cb_called = 0;
30
30
  static int connect_cb_called = 0;
31
31
 
32
32
 
33
- static uv_buf_t alloc_cb(uv_stream_t* tcp, size_t size) {
33
+ static uv_buf_t alloc_cb(uv_handle_t* handle, size_t size) {
34
34
  uv_buf_t buf;
35
35
  buf.base = (char*)malloc(size);
36
36
  buf.len = size;
@@ -57,16 +57,16 @@ static void do_accept(uv_timer_t* timer_handle, int status) {
57
57
  ASSERT(status == 0);
58
58
  ASSERT(accepted_handle != NULL);
59
59
 
60
- uv_tcp_init(accepted_handle);
60
+ uv_tcp_init(uv_default_loop(), accepted_handle);
61
61
 
62
- /* Test to that uv_counters()->tcp_init does not increase across the uv_accept. */
63
- tcpcnt = uv_counters()->tcp_init;
62
+ /* Test to that uv_default_loop()->counters.tcp_init does not increase across the uv_accept. */
63
+ tcpcnt = uv_default_loop()->counters.tcp_init;
64
64
 
65
65
  server = (uv_tcp_t*)timer_handle->data;
66
66
  r = uv_accept((uv_stream_t*)server, (uv_stream_t*)accepted_handle);
67
67
  ASSERT(r == 0);
68
68
 
69
- ASSERT(uv_counters()->tcp_init == tcpcnt);
69
+ ASSERT(uv_default_loop()->counters.tcp_init == tcpcnt);
70
70
 
71
71
  do_accept_called++;
72
72
 
@@ -93,7 +93,7 @@ static void connection_cb(uv_stream_t* tcp, int status) {
93
93
  ASSERT(timer_handle != NULL);
94
94
 
95
95
  /* Accept the client after 1 second */
96
- r = uv_timer_init(timer_handle);
96
+ r = uv_timer_init(uv_default_loop(), timer_handle);
97
97
  ASSERT(r == 0);
98
98
 
99
99
  timer_handle->data = tcp;
@@ -112,10 +112,10 @@ static void start_server() {
112
112
 
113
113
  ASSERT(server != NULL);
114
114
 
115
- r = uv_tcp_init(server);
115
+ r = uv_tcp_init(uv_default_loop(), server);
116
116
  ASSERT(r == 0);
117
- ASSERT(uv_counters()->tcp_init == 1);
118
- ASSERT(uv_counters()->handle_init == 1);
117
+ ASSERT(uv_default_loop()->counters.tcp_init == 1);
118
+ ASSERT(uv_default_loop()->counters.handle_init == 1);
119
119
 
120
120
  r = uv_tcp_bind(server, addr);
121
121
  ASSERT(r == 0);
@@ -134,11 +134,11 @@ static void read_cb(uv_stream_t* tcp, ssize_t nread, uv_buf_t buf) {
134
134
 
135
135
  if (nread != -1) {
136
136
  ASSERT(nread == 0);
137
- ASSERT(uv_last_error().code == UV_EAGAIN);
137
+ ASSERT(uv_last_error(uv_default_loop()).code == UV_EAGAIN);
138
138
  } else {
139
139
  ASSERT(tcp != NULL);
140
140
  ASSERT(nread == -1);
141
- ASSERT(uv_last_error().code == UV_EOF);
141
+ ASSERT(uv_last_error(uv_default_loop()).code == UV_EOF);
142
142
  uv_close((uv_handle_t*)tcp, close_cb);
143
143
  }
144
144
  }
@@ -170,7 +170,7 @@ static void client_connect() {
170
170
  ASSERT(client != NULL);
171
171
  ASSERT(connect_req != NULL);
172
172
 
173
- r = uv_tcp_init(client);
173
+ r = uv_tcp_init(uv_default_loop(), client);
174
174
  ASSERT(r == 0);
175
175
 
176
176
  r = uv_tcp_connect(connect_req, client, addr, connect_cb);
@@ -187,7 +187,7 @@ TEST_IMPL(delayed_accept) {
187
187
  client_connect();
188
188
  client_connect();
189
189
 
190
- uv_run();
190
+ uv_run(uv_default_loop());
191
191
 
192
192
  ASSERT(connection_cb_called == 2);
193
193
  ASSERT(do_accept_called == 2);