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
@@ -28,47 +28,59 @@
28
28
  #undef NANOSEC
29
29
  #define NANOSEC ((uint64_t)10e8)
30
30
 
31
+ #define DEBUG 0
32
+
33
+ struct conn_rec_s;
34
+
35
+ typedef void (*setup_fn)(int num, void* arg);
36
+ typedef void (*make_connect_fn)(struct conn_rec_s* conn);
37
+ typedef int (*connect_fn)(int num, make_connect_fn make_connect, void* arg);
38
+
31
39
  /* Base class for tcp_conn_rec and pipe_conn_rec.
32
40
  * The ordering of fields matters!
33
41
  */
34
- typedef struct {
42
+ typedef struct conn_rec_s {
43
+ int i;
35
44
  uv_connect_t conn_req;
36
45
  uv_write_t write_req;
46
+ make_connect_fn make_connect;
37
47
  uv_stream_t stream;
38
48
  } conn_rec;
39
49
 
40
50
  typedef struct {
51
+ int i;
41
52
  uv_connect_t conn_req;
42
53
  uv_write_t write_req;
54
+ make_connect_fn make_connect;
43
55
  uv_tcp_t stream;
44
56
  } tcp_conn_rec;
45
57
 
46
58
  typedef struct {
59
+ int i;
47
60
  uv_connect_t conn_req;
48
61
  uv_write_t write_req;
62
+ make_connect_fn make_connect;
49
63
  uv_pipe_t stream;
50
64
  } pipe_conn_rec;
51
65
 
52
66
  static char buffer[] = "QS";
53
67
 
68
+ static uv_loop_t* loop;
69
+
54
70
  static tcp_conn_rec tcp_conns[MAX_CONNS];
55
71
  static pipe_conn_rec pipe_conns[MAX_CONNS];
56
72
 
57
- static uint64_t start_time;
58
- static uint64_t end_time;
73
+ static uint64_t start; /* in ms */
59
74
  static int closed_streams;
60
75
  static int conns_failed;
61
76
 
62
- typedef void *(*setup_fn)(int num, void* arg);
63
- typedef int (*connect_fn)(int num, void* handles, void* arg);
64
-
65
- static uv_buf_t alloc_cb(uv_stream_t* stream, size_t suggested_size);
77
+ static uv_buf_t alloc_cb(uv_handle_t* handle, size_t suggested_size);
66
78
  static void connect_cb(uv_connect_t* conn_req, int status);
67
79
  static void read_cb(uv_stream_t* stream, ssize_t nread, uv_buf_t buf);
68
80
  static void close_cb(uv_handle_t* handle);
69
81
 
70
82
 
71
- static uv_buf_t alloc_cb(uv_stream_t* stream, size_t suggested_size) {
83
+ static uv_buf_t alloc_cb(uv_handle_t* handle, size_t suggested_size) {
72
84
  static char slab[65536];
73
85
  uv_buf_t buf;
74
86
  buf.base = slab;
@@ -77,12 +89,25 @@ static uv_buf_t alloc_cb(uv_stream_t* stream, size_t suggested_size) {
77
89
  }
78
90
 
79
91
 
92
+ static void after_write(uv_write_t* req, int status) {
93
+ if (status != 0) {
94
+ fprintf(stderr, "write error %s\n", uv_err_name(uv_last_error(loop)));
95
+ uv_close((uv_handle_t*)req->handle, close_cb);
96
+ conns_failed++;
97
+ return;
98
+ }
99
+ }
100
+
101
+
80
102
  static void connect_cb(uv_connect_t* req, int status) {
81
103
  conn_rec* conn;
82
104
  uv_buf_t buf;
83
105
  int r;
84
106
 
85
107
  if (status != 0) {
108
+ #if DEBUG
109
+ fprintf(stderr, "connect error %s\n", uv_err_name(uv_last_error()));
110
+ #endif
86
111
  uv_close((uv_handle_t*)req->handle, close_cb);
87
112
  conns_failed++;
88
113
  return;
@@ -91,89 +116,150 @@ static void connect_cb(uv_connect_t* req, int status) {
91
116
  ASSERT(req != NULL);
92
117
  ASSERT(status == 0);
93
118
 
94
- conn = req->data;
119
+ conn = (conn_rec*)req->data;
95
120
  ASSERT(conn != NULL);
96
121
 
122
+ #if DEBUG
123
+ printf("connect_cb %d\n", conn->i);
124
+ #endif
125
+
97
126
  r = uv_read_start(&conn->stream, alloc_cb, read_cb);
98
127
  ASSERT(r == 0);
99
128
 
100
129
  buf.base = buffer;
101
130
  buf.len = sizeof(buffer) - 1;
102
131
 
103
- r = uv_write(&conn->write_req, &conn->stream, &buf, 1, NULL);
132
+ r = uv_write(&conn->write_req, &conn->stream, &buf, 1, after_write);
104
133
  ASSERT(r == 0);
105
134
  }
106
135
 
107
136
 
108
137
  static void read_cb(uv_stream_t* stream, ssize_t nread, uv_buf_t buf) {
138
+ conn_rec* p = (conn_rec*)stream->data;
139
+ uv_err_t err = uv_last_error(loop);
140
+
109
141
  ASSERT(stream != NULL);
110
- ASSERT(nread == -1 && uv_last_error().code == UV_EOF);
142
+
143
+ #if DEBUG
144
+ printf("read_cb %d\n", p->i);
145
+ #endif
146
+
111
147
  uv_close((uv_handle_t*)stream, close_cb);
148
+
149
+ if (nread == -1) {
150
+ if (err.code == UV_EOF) {
151
+ ;
152
+ } else if (err.code == UV_ECONNRESET) {
153
+ conns_failed++;
154
+ } else {
155
+ fprintf(stderr, "read error %s\n", uv_err_name(uv_last_error(loop)));
156
+ ASSERT(0);
157
+ }
158
+ }
112
159
  }
113
160
 
114
161
 
115
162
  static void close_cb(uv_handle_t* handle) {
163
+ conn_rec* p = (conn_rec*)handle->data;
164
+
116
165
  ASSERT(handle != NULL);
117
166
  closed_streams++;
167
+
168
+ #if DEBUG
169
+ printf("close_cb %d\n", p->i);
170
+ #endif
171
+
172
+ if (uv_now(loop) - start < 10000) {
173
+ p->make_connect(p);
174
+ }
118
175
  }
119
176
 
120
177
 
121
- static void* tcp_do_setup(int num, void* arg) {
122
- tcp_conn_rec* pe;
123
- tcp_conn_rec* p;
124
- int r;
178
+ static void tcp_do_setup(int num, void* arg) {
179
+ int i;
125
180
 
126
- for (p = tcp_conns, pe = p + num; p < pe; p++) {
127
- r = uv_tcp_init(&p->stream);
128
- ASSERT(r == 0);
181
+ for (i = 0; i < num; i++) {
182
+ tcp_conns[i].i = i;
129
183
  }
130
-
131
- return tcp_conns;
132
184
  }
133
185
 
134
186
 
135
- static void* pipe_do_setup(int num, void* arg) {
136
- pipe_conn_rec* pe;
137
- pipe_conn_rec* p;
138
- int r;
187
+ static void pipe_do_setup(int num, void* arg) {
188
+ int i;
139
189
 
140
- for (p = pipe_conns, pe = p + num; p < pe; p++) {
141
- r = uv_pipe_init(&p->stream);
142
- ASSERT(r == 0);
190
+ for (i = 0; i < num; i++) {
191
+ pipe_conns[i].i = i;
143
192
  }
144
-
145
- return pipe_conns;
146
193
  }
147
194
 
148
195
 
149
- static int tcp_do_connect(int num, void* conns, void* arg) {
196
+ static void tcp_make_connect(conn_rec* p) {
150
197
  struct sockaddr_in addr;
151
- tcp_conn_rec* pe;
152
- tcp_conn_rec* p;
153
198
  int r;
154
199
 
200
+ r = uv_tcp_init(loop, (uv_tcp_t*)&p->stream);
201
+ ASSERT(r == 0);
202
+
155
203
  addr = uv_ip4_addr("127.0.0.1", TEST_PORT);
156
- for (p = tcp_conns, pe = p + num; p < pe; p++) {
157
- r = uv_tcp_connect(&p->conn_req, &p->stream, addr, connect_cb);
158
- ASSERT(r == 0);
159
204
 
160
- p->conn_req.data = p;
205
+ r = uv_tcp_connect(&((tcp_conn_rec*)p)->conn_req, (uv_tcp_t*)&p->stream, addr, connect_cb);
206
+ if (r) {
207
+ fprintf(stderr, "uv_tcp_connect error %s\n",
208
+ uv_err_name(uv_last_error(loop)));
209
+ ASSERT(0);
161
210
  }
162
211
 
163
- return 0;
212
+ #if DEBUG
213
+ printf("make connect %d\n", p->i);
214
+ #endif
215
+
216
+ p->conn_req.data = p;
217
+ p->write_req.data = p;
218
+ p->stream.data = p;
164
219
  }
165
220
 
166
221
 
167
- static int pipe_do_connect(int num, void* conns, void* arg) {
168
- pipe_conn_rec* pe;
169
- pipe_conn_rec* p;
222
+ static void pipe_make_connect(conn_rec* p) {
170
223
  int r;
171
224
 
172
- for (p = pipe_conns, pe = p + num; p < pe; p++) {
173
- r = uv_pipe_connect(&p->conn_req, &p->stream, TEST_PIPENAME, connect_cb);
174
- ASSERT(r == 0);
225
+ r = uv_pipe_init(loop, (uv_pipe_t*)&p->stream);
226
+ ASSERT(r == 0);
175
227
 
176
- p->conn_req.data = p;
228
+ r = uv_pipe_connect(&((pipe_conn_rec*)p)->conn_req, (uv_pipe_t*)&p->stream, TEST_PIPENAME, connect_cb);
229
+ if (r) {
230
+ fprintf(stderr, "uv_tcp_connect error %s\n",
231
+ uv_err_name(uv_last_error(loop)));
232
+ ASSERT(0);
233
+ }
234
+
235
+ #if DEBUG
236
+ printf("make connect %d\n", p->i);
237
+ #endif
238
+
239
+ p->conn_req.data = p;
240
+ p->write_req.data = p;
241
+ p->stream.data = p;
242
+ }
243
+
244
+
245
+ static int tcp_do_connect(int num, make_connect_fn make_connect, void* arg) {
246
+ int i;
247
+
248
+ for (i = 0; i < num; i++) {
249
+ tcp_make_connect((conn_rec*)&tcp_conns[i]);
250
+ tcp_conns[i].make_connect = make_connect;
251
+ }
252
+
253
+ return 0;
254
+ }
255
+
256
+
257
+ static int pipe_do_connect(int num, make_connect_fn make_connect, void* arg) {
258
+ int i;
259
+
260
+ for (i = 0; i < num; i++) {
261
+ pipe_make_connect((conn_rec*)&pipe_conns[i]);
262
+ pipe_conns[i].make_connect = make_connect;
177
263
  }
178
264
 
179
265
  return 0;
@@ -184,27 +270,30 @@ static int pound_it(int concurrency,
184
270
  const char* type,
185
271
  setup_fn do_setup,
186
272
  connect_fn do_connect,
273
+ make_connect_fn make_connect,
187
274
  void* arg) {
188
275
  double secs;
189
- void* state;
190
276
  int r;
277
+ uint64_t start_time; /* in ns */
278
+ uint64_t end_time;
191
279
 
192
280
  uv_init();
281
+ loop = uv_default_loop();
282
+
283
+ uv_update_time(loop);
284
+ start = uv_now(loop);
193
285
 
194
286
  /* Run benchmark for at least five seconds. */
195
287
  start_time = uv_hrtime();
196
- do {
197
- state = do_setup(concurrency, arg);
198
- ASSERT(state != NULL);
199
288
 
200
- r = do_connect(concurrency, state, arg);
201
- ASSERT(!r);
289
+ do_setup(concurrency, arg);
202
290
 
203
- uv_run();
291
+ r = do_connect(concurrency, make_connect, arg);
292
+ ASSERT(!r);
204
293
 
205
- end_time = uv_hrtime();
206
- }
207
- while ((end_time - start_time) < 5 * NANOSEC);
294
+ uv_run(loop);
295
+
296
+ end_time = uv_hrtime();
208
297
 
209
298
  /* Number of fractional seconds it took to run the benchmark. */
210
299
  secs = (double)(end_time - start_time) / NANOSEC;
@@ -220,20 +309,20 @@ static int pound_it(int concurrency,
220
309
 
221
310
 
222
311
  BENCHMARK_IMPL(tcp4_pound_100) {
223
- return pound_it(100, "tcp", tcp_do_setup, tcp_do_connect, NULL);
312
+ return pound_it(100, "tcp", tcp_do_setup, tcp_do_connect, tcp_make_connect, NULL);
224
313
  }
225
314
 
226
315
 
227
316
  BENCHMARK_IMPL(tcp4_pound_1000) {
228
- return pound_it(1000, "tcp", tcp_do_setup, tcp_do_connect, NULL);
317
+ return pound_it(1000, "tcp", tcp_do_setup, tcp_do_connect, tcp_make_connect, NULL);
229
318
  }
230
319
 
231
320
 
232
321
  BENCHMARK_IMPL(pipe_pound_100) {
233
- return pound_it(100, "pipe", pipe_do_setup, pipe_do_connect, NULL);
322
+ return pound_it(100, "pipe", pipe_do_setup, pipe_do_connect, pipe_make_connect, NULL);
234
323
  }
235
324
 
236
325
 
237
326
  BENCHMARK_IMPL(pipe_pound_1000) {
238
- return pound_it(1000, "pipe", pipe_do_setup, pipe_do_connect, NULL);
327
+ return pound_it(1000, "pipe", pipe_do_setup, pipe_do_connect, pipe_make_connect, NULL);
239
328
  }
@@ -41,9 +41,10 @@ static void maybe_connect_some();
41
41
  static uv_req_t* req_alloc();
42
42
  static void req_free(uv_req_t* uv_req);
43
43
 
44
- static uv_buf_t buf_alloc(uv_stream_t*, size_t size);
44
+ static uv_buf_t buf_alloc(uv_handle_t*, size_t size);
45
45
  static void buf_free(uv_buf_t uv_buf_t);
46
46
 
47
+ static uv_loop_t* loop;
47
48
 
48
49
  static uv_tcp_t tcpServer;
49
50
  static uv_pipe_t pipeServer;
@@ -97,8 +98,8 @@ static void show_stats(uv_timer_t* handle, int status) {
97
98
  /* Exit if the show is over */
98
99
  if (!--stats_left) {
99
100
 
100
- uv_update_time();
101
- diff = uv_now() - start_time;
101
+ uv_update_time(loop);
102
+ diff = uv_now(loop) - start_time;
102
103
 
103
104
  LOGF("%s_pump%d_client: %.1f gbit/s\n", type == TCP ? "tcp" : "pipe", write_sockets,
104
105
  gbit(nsent_total, diff));
@@ -119,8 +120,8 @@ static void show_stats(uv_timer_t* handle, int status) {
119
120
  static void read_show_stats() {
120
121
  int64_t diff;
121
122
 
122
- uv_update_time();
123
- diff = uv_now() - start_time;
123
+ uv_update_time(loop);
124
+ diff = uv_now(loop) - start_time;
124
125
 
125
126
  LOGF("%s_pump%d_server: %.1f gbit/s\n", type == TCP ? "tcp" : "pipe", max_read_sockets,
126
127
  gbit(nrecv_total, diff));
@@ -141,7 +142,7 @@ void read_sockets_close_cb(uv_handle_t* handle) {
141
142
  /* If it's past the first second and everyone has closed their connection
142
143
  * Then print stats.
143
144
  */
144
- if (uv_now() - start_time > 1000 && read_sockets == 0) {
145
+ if (uv_now(loop) - start_time > 1000 && read_sockets == 0) {
145
146
  read_show_stats();
146
147
  uv_close((uv_handle_t*)server, NULL);
147
148
  }
@@ -153,21 +154,21 @@ static void start_stats_collection() {
153
154
 
154
155
  /* Show-stats timer */
155
156
  stats_left = STATS_COUNT;
156
- r = uv_timer_init(&timer_handle);
157
+ r = uv_timer_init(loop, &timer_handle);
157
158
  ASSERT(r == 0);
158
159
  r = uv_timer_start(&timer_handle, show_stats, STATS_INTERVAL, STATS_INTERVAL);
159
160
  ASSERT(r == 0);
160
161
 
161
- uv_update_time();
162
- start_time = uv_now();
162
+ uv_update_time(loop);
163
+ start_time = uv_now(loop);
163
164
  }
164
165
 
165
166
 
166
167
  static void read_cb(uv_stream_t* stream, ssize_t bytes, uv_buf_t buf) {
167
168
  if (nrecv_total == 0) {
168
169
  ASSERT(start_time == 0);
169
- uv_update_time();
170
- start_time = uv_now();
170
+ uv_update_time(loop);
171
+ start_time = uv_now(loop);
171
172
  }
172
173
 
173
174
  if (bytes < 0) {
@@ -213,7 +214,7 @@ static void do_write(uv_stream_t* stream) {
213
214
  static void connect_cb(uv_connect_t* req, int status) {
214
215
  int i;
215
216
 
216
- if (status) LOG(uv_strerror(uv_last_error()));
217
+ if (status) LOG(uv_strerror(uv_last_error(loop)));
217
218
  ASSERT(status == 0);
218
219
 
219
220
  write_sockets++;
@@ -243,7 +244,7 @@ static void maybe_connect_some() {
243
244
  if (type == TCP) {
244
245
  tcp = &tcp_write_handles[max_connect_socket++];
245
246
 
246
- r = uv_tcp_init(tcp);
247
+ r = uv_tcp_init(loop, tcp);
247
248
  ASSERT(r == 0);
248
249
 
249
250
  req = (uv_connect_t*) req_alloc();
@@ -252,7 +253,7 @@ static void maybe_connect_some() {
252
253
  } else {
253
254
  pipe = &pipe_write_handles[max_connect_socket++];
254
255
 
255
- r = uv_pipe_init(pipe);
256
+ r = uv_pipe_init(loop, pipe);
256
257
  ASSERT(r == 0);
257
258
 
258
259
  req = (uv_connect_t*) req_alloc();
@@ -272,10 +273,10 @@ static void connection_cb(uv_stream_t* s, int status) {
272
273
 
273
274
  if (type == TCP) {
274
275
  stream = (uv_stream_t*)malloc(sizeof(uv_tcp_t));
275
- uv_tcp_init((uv_tcp_t*)stream);
276
+ uv_tcp_init(loop, (uv_tcp_t*)stream);
276
277
  } else {
277
278
  stream = (uv_stream_t*)malloc(sizeof(uv_pipe_t));
278
- uv_pipe_init((uv_pipe_t*)stream);
279
+ uv_pipe_init(loop, (uv_pipe_t*)stream);
279
280
  }
280
281
 
281
282
  r = uv_accept(s, stream);
@@ -337,7 +338,7 @@ typedef struct buf_list_s {
337
338
  static buf_list_t* buf_freelist = NULL;
338
339
 
339
340
 
340
- static uv_buf_t buf_alloc(uv_stream_t* stream, size_t size) {
341
+ static uv_buf_t buf_alloc(uv_handle_t* handle, size_t size) {
341
342
  buf_list_t* buf;
342
343
 
343
344
  buf = buf_freelist;
@@ -367,18 +368,20 @@ HELPER_IMPL(tcp_pump_server) {
367
368
 
368
369
  type = TCP;
369
370
  uv_init();
371
+ loop = uv_default_loop();
372
+
370
373
  listen_addr = uv_ip4_addr("0.0.0.0", TEST_PORT);
371
374
 
372
375
  /* Server */
373
376
  server = (uv_stream_t*)&tcpServer;
374
- r = uv_tcp_init(&tcpServer);
377
+ r = uv_tcp_init(loop, &tcpServer);
375
378
  ASSERT(r == 0);
376
379
  r = uv_tcp_bind(&tcpServer, listen_addr);
377
380
  ASSERT(r == 0);
378
381
  r = uv_listen((uv_stream_t*)&tcpServer, MAX_WRITE_HANDLES, connection_cb);
379
382
  ASSERT(r == 0);
380
383
 
381
- uv_run();
384
+ uv_run(loop);
382
385
 
383
386
  return 0;
384
387
  }
@@ -389,17 +392,18 @@ HELPER_IMPL(pipe_pump_server) {
389
392
  type = PIPE;
390
393
 
391
394
  uv_init();
395
+ loop = uv_default_loop();
392
396
 
393
397
  /* Server */
394
398
  server = (uv_stream_t*)&pipeServer;
395
- r = uv_pipe_init(&pipeServer);
399
+ r = uv_pipe_init(loop, &pipeServer);
396
400
  ASSERT(r == 0);
397
401
  r = uv_pipe_bind(&pipeServer, TEST_PIPENAME);
398
402
  ASSERT(r == 0);
399
403
  r = uv_listen((uv_stream_t*)&pipeServer, MAX_WRITE_HANDLES, connection_cb);
400
404
  ASSERT(r == 0);
401
405
 
402
- uv_run();
406
+ uv_run(loop);
403
407
 
404
408
  return 0;
405
409
  }
@@ -411,13 +415,14 @@ void tcp_pump(int n) {
411
415
  type = TCP;
412
416
 
413
417
  uv_init();
418
+ loop = uv_default_loop();
414
419
 
415
420
  connect_addr = uv_ip4_addr("127.0.0.1", TEST_PORT);
416
421
 
417
422
  /* Start making connections */
418
423
  maybe_connect_some();
419
424
 
420
- uv_run();
425
+ uv_run(loop);
421
426
  }
422
427
 
423
428
 
@@ -427,11 +432,12 @@ void pipe_pump(int n) {
427
432
  type = PIPE;
428
433
 
429
434
  uv_init();
435
+ loop = uv_default_loop();
430
436
 
431
437
  /* Start making connections */
432
438
  maybe_connect_some();
433
439
 
434
- uv_run();
440
+ uv_run(loop);
435
441
  }
436
442
 
437
443
 
@@ -24,6 +24,8 @@
24
24
  #include "task.h"
25
25
  #include "uv.h"
26
26
 
27
+ static uv_loop_t* loop;
28
+
27
29
  static int N = 1000;
28
30
  static int done;
29
31
 
@@ -69,7 +71,7 @@ static void exit_cb(uv_process_t* process, int exit_status, int term_signal) {
69
71
  }
70
72
 
71
73
 
72
- uv_buf_t on_alloc(uv_stream_t* tcp, size_t suggested_size) {
74
+ uv_buf_t on_alloc(uv_handle_t* handle, size_t suggested_size) {
73
75
  uv_buf_t buf;
74
76
  buf.base = output + output_used;
75
77
  buf.len = OUTPUT_SIZE - output_used;
@@ -85,7 +87,7 @@ void pipe_close_cb(uv_handle_t* pipe) {
85
87
 
86
88
 
87
89
  void on_read(uv_stream_t* pipe, ssize_t nread, uv_buf_t buf) {
88
- uv_err_t err = uv_last_error();
90
+ uv_err_t err = uv_last_error(loop);
89
91
 
90
92
  if (nread > 0) {
91
93
  ASSERT(pipe_open == 1);
@@ -111,10 +113,10 @@ static void spawn() {
111
113
  options.args = args;
112
114
  options.exit_cb = exit_cb;
113
115
 
114
- uv_pipe_init(&out);
116
+ uv_pipe_init(loop, &out);
115
117
  options.stdout_stream = &out;
116
118
 
117
- r = uv_spawn(&process, options);
119
+ r = uv_spawn(loop, &process, options);
118
120
  ASSERT(r == 0);
119
121
 
120
122
  process_open = 1;
@@ -127,25 +129,26 @@ static void spawn() {
127
129
 
128
130
 
129
131
  BENCHMARK_IMPL(spawn) {
130
- int r;
132
+ int r;
131
133
  static int64_t start_time, end_time;
132
134
 
133
135
  uv_init();
136
+ loop = uv_default_loop();
134
137
 
135
138
  r = uv_exepath(exepath, &exepath_size);
136
139
  ASSERT(r == 0);
137
140
  exepath[exepath_size] = '\0';
138
141
 
139
- uv_update_time();
140
- start_time = uv_now();
142
+ uv_update_time(loop);
143
+ start_time = uv_now(loop);
141
144
 
142
145
  spawn();
143
146
 
144
- r = uv_run();
147
+ r = uv_run(loop);
145
148
  ASSERT(r == 0);
146
149
 
147
- uv_update_time();
148
- end_time = uv_now();
150
+ uv_update_time(loop);
151
+ end_time = uv_now(loop);
149
152
 
150
153
  LOGF("spawn: %.0f spawns/s\n",
151
154
  (double) N / (double) (end_time - start_time) * 1000.0);