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.
- data/ext/noderb_extension/libuv/AUTHORS +11 -1
- data/ext/noderb_extension/libuv/LICENSE +0 -8
- data/ext/noderb_extension/libuv/Makefile +5 -5
- data/ext/noderb_extension/libuv/README +11 -6
- data/ext/noderb_extension/libuv/common.gypi +158 -7
- data/ext/noderb_extension/libuv/config-unix.mk +34 -26
- data/ext/noderb_extension/libuv/gyp_uv +22 -4
- data/ext/noderb_extension/libuv/include/{eio.h → uv-private/eio.h} +2 -2
- data/ext/noderb_extension/libuv/include/{uv-unix.h → uv-private/uv-unix.h} +40 -0
- data/ext/noderb_extension/libuv/include/{uv-win.h → uv-private/uv-win.h} +96 -14
- data/ext/noderb_extension/libuv/include/uv.h +508 -83
- data/ext/noderb_extension/libuv/src/unix/cares.c +185 -0
- data/ext/noderb_extension/libuv/src/unix/core.c +828 -0
- data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_darwin.h +4 -0
- data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_linux.h +5 -15
- data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.c +23 -2
- data/ext/noderb_extension/libuv/src/unix/error.c +102 -0
- data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_linux.h +26 -15
- data/ext/noderb_extension/libuv/src/unix/fs.c +562 -0
- data/ext/noderb_extension/libuv/src/unix/internal.h +75 -0
- data/ext/noderb_extension/libuv/src/unix/pipe.c +282 -0
- data/ext/noderb_extension/libuv/src/unix/process.c +287 -0
- data/ext/noderb_extension/libuv/src/unix/stream.c +727 -0
- data/ext/noderb_extension/libuv/src/unix/tcp.c +226 -0
- data/ext/noderb_extension/libuv/src/unix/udp.c +524 -0
- data/ext/noderb_extension/libuv/src/{uv-eio.c → unix/uv-eio.c} +48 -27
- data/ext/noderb_extension/libuv/src/{uv-eio.h → unix/uv-eio.h} +1 -1
- data/ext/noderb_extension/libuv/src/uv-common.c +24 -14
- data/ext/noderb_extension/libuv/src/uv-common.h +12 -7
- data/ext/noderb_extension/libuv/src/win/async.c +14 -16
- data/ext/noderb_extension/libuv/src/win/cares.c +64 -79
- data/ext/noderb_extension/libuv/src/win/core.c +105 -53
- data/ext/noderb_extension/libuv/src/win/error.c +23 -13
- data/ext/noderb_extension/libuv/src/win/fs.c +807 -0
- data/ext/noderb_extension/libuv/src/win/getaddrinfo.c +61 -41
- data/ext/noderb_extension/libuv/src/win/handle.c +56 -30
- data/ext/noderb_extension/libuv/src/win/internal.h +134 -95
- data/ext/noderb_extension/libuv/src/win/loop-watcher.c +21 -18
- data/ext/noderb_extension/libuv/src/win/pipe.c +313 -158
- data/ext/noderb_extension/libuv/src/win/process.c +117 -131
- data/ext/noderb_extension/libuv/src/win/req.c +55 -31
- data/ext/noderb_extension/libuv/src/win/stdio.c +5 -5
- data/ext/noderb_extension/libuv/src/win/stream.c +19 -14
- data/ext/noderb_extension/libuv/src/win/tcp.c +278 -336
- data/ext/noderb_extension/libuv/src/win/threadpool.c +73 -0
- data/ext/noderb_extension/libuv/src/win/timer.c +44 -37
- data/ext/noderb_extension/libuv/src/win/udp.c +592 -0
- data/ext/noderb_extension/libuv/src/win/util.c +20 -6
- data/ext/noderb_extension/libuv/src/win/winapi.c +23 -6
- data/ext/noderb_extension/libuv/src/win/winapi.h +4206 -0
- data/ext/noderb_extension/libuv/src/win/winsock.c +270 -0
- data/ext/noderb_extension/libuv/src/win/winsock.h +134 -0
- data/ext/noderb_extension/libuv/test/benchmark-ares.c +10 -6
- data/ext/noderb_extension/libuv/test/benchmark-getaddrinfo.c +10 -7
- data/ext/noderb_extension/libuv/test/benchmark-list.h +21 -0
- data/ext/noderb_extension/libuv/test/benchmark-ping-pongs.c +11 -7
- data/ext/noderb_extension/libuv/test/benchmark-pound.c +147 -58
- data/ext/noderb_extension/libuv/test/benchmark-pump.c +29 -23
- data/ext/noderb_extension/libuv/test/benchmark-spawn.c +13 -10
- data/ext/noderb_extension/libuv/test/benchmark-udp-packet-storm.c +250 -0
- data/ext/noderb_extension/libuv/test/dns-server.c +11 -6
- data/ext/noderb_extension/libuv/test/echo-server.c +30 -22
- data/ext/noderb_extension/libuv/test/test-async.c +3 -3
- data/ext/noderb_extension/libuv/test/test-callback-stack.c +6 -6
- data/ext/noderb_extension/libuv/test/test-connection-fail.c +6 -5
- data/ext/noderb_extension/libuv/test/test-delayed-accept.c +13 -13
- data/ext/noderb_extension/libuv/test/test-fs.c +715 -0
- data/ext/noderb_extension/libuv/test/test-getaddrinfo.c +11 -8
- data/ext/noderb_extension/libuv/test/test-gethostbyname.c +8 -9
- data/ext/noderb_extension/libuv/test/test-getsockname.c +142 -16
- data/ext/noderb_extension/libuv/test/test-idle.c +4 -3
- data/ext/noderb_extension/libuv/test/test-list.h +29 -2
- data/ext/noderb_extension/libuv/test/test-loop-handles.c +9 -8
- data/ext/noderb_extension/libuv/test/test-ping-pong.c +9 -9
- data/ext/noderb_extension/libuv/test/test-pipe-bind-error.c +18 -14
- data/ext/noderb_extension/libuv/test/test-ref.c +17 -16
- data/ext/noderb_extension/libuv/test/test-shutdown-eof.c +5 -5
- data/ext/noderb_extension/libuv/test/test-spawn.c +17 -17
- data/ext/noderb_extension/libuv/test/test-tcp-bind-error.c +24 -18
- data/ext/noderb_extension/libuv/test/test-tcp-bind6-error.c +19 -14
- data/ext/noderb_extension/libuv/test/test-tcp-writealot.c +6 -5
- data/ext/noderb_extension/libuv/test/test-threadpool.c +59 -0
- data/ext/noderb_extension/libuv/test/test-timer-again.c +15 -12
- data/ext/noderb_extension/libuv/test/test-timer.c +8 -8
- data/ext/noderb_extension/libuv/test/test-udp-dgram-too-big.c +88 -0
- data/ext/noderb_extension/libuv/test/test-udp-ipv6.c +158 -0
- data/ext/noderb_extension/libuv/test/test-udp-send-and-recv.c +210 -0
- data/ext/noderb_extension/libuv/{all.gyp → uv.gyp} +75 -77
- data/ext/noderb_extension/libuv/vcbuild.bat +93 -0
- data/ext/noderb_extension/noderb.c +13 -0
- data/ext/noderb_extension/noderb_common.h +2 -1
- data/ext/noderb_extension/noderb_defer.c +54 -0
- data/ext/noderb_extension/noderb_defer.h +15 -0
- data/ext/noderb_extension/noderb_dns.c +1 -1
- data/ext/noderb_extension/noderb_fs.c +277 -0
- data/ext/noderb_extension/noderb_fs.h +27 -0
- data/ext/noderb_extension/noderb_process.c +5 -5
- data/ext/noderb_extension/noderb_tcp.c +10 -6
- data/ext/noderb_extension/noderb_timers.c +1 -1
- data/ext/noderb_extension/noderb_tools.c +42 -8
- data/ext/noderb_extension/noderb_tools.h +3 -1
- data/lib/noderb/defer.rb +25 -0
- data/lib/noderb/file.rb +119 -0
- data/lib/noderb/fs.rb +72 -0
- data/lib/noderb/version.rb +1 -1
- data/lib/noderb.rb +8 -0
- metadata +102 -266
- data/ext/noderb_extension/libuv/BSDmakefile +0 -2
- data/ext/noderb_extension/libuv/create-msvs-files.bat +0 -21
- data/ext/noderb_extension/libuv/deps/pthread-win32/ANNOUNCE +0 -482
- data/ext/noderb_extension/libuv/deps/pthread-win32/BUGS +0 -141
- data/ext/noderb_extension/libuv/deps/pthread-win32/Bmakefile +0 -268
- data/ext/noderb_extension/libuv/deps/pthread-win32/CONTRIBUTORS +0 -140
- data/ext/noderb_extension/libuv/deps/pthread-win32/COPYING +0 -150
- data/ext/noderb_extension/libuv/deps/pthread-win32/COPYING.LIB +0 -504
- data/ext/noderb_extension/libuv/deps/pthread-win32/ChangeLog +0 -5194
- data/ext/noderb_extension/libuv/deps/pthread-win32/FAQ +0 -451
- data/ext/noderb_extension/libuv/deps/pthread-win32/GNUmakefile +0 -593
- data/ext/noderb_extension/libuv/deps/pthread-win32/MAINTAINERS +0 -4
- data/ext/noderb_extension/libuv/deps/pthread-win32/Makefile +0 -516
- data/ext/noderb_extension/libuv/deps/pthread-win32/NEWS +0 -1245
- data/ext/noderb_extension/libuv/deps/pthread-win32/Nmakefile +0 -24
- data/ext/noderb_extension/libuv/deps/pthread-win32/Nmakefile.tests +0 -260
- data/ext/noderb_extension/libuv/deps/pthread-win32/PROGRESS +0 -4
- data/ext/noderb_extension/libuv/deps/pthread-win32/README +0 -601
- data/ext/noderb_extension/libuv/deps/pthread-win32/README.Borland +0 -57
- data/ext/noderb_extension/libuv/deps/pthread-win32/README.CV +0 -3036
- data/ext/noderb_extension/libuv/deps/pthread-win32/README.NONPORTABLE +0 -783
- data/ext/noderb_extension/libuv/deps/pthread-win32/README.Watcom +0 -62
- data/ext/noderb_extension/libuv/deps/pthread-win32/README.WinCE +0 -6
- data/ext/noderb_extension/libuv/deps/pthread-win32/TODO +0 -7
- data/ext/noderb_extension/libuv/deps/pthread-win32/WinCE-PORT +0 -222
- data/ext/noderb_extension/libuv/deps/pthread-win32/attr.c +0 -53
- data/ext/noderb_extension/libuv/deps/pthread-win32/autostatic.c +0 -69
- data/ext/noderb_extension/libuv/deps/pthread-win32/barrier.c +0 -47
- data/ext/noderb_extension/libuv/deps/pthread-win32/build/all.gyp +0 -207
- data/ext/noderb_extension/libuv/deps/pthread-win32/builddmc.bat +0 -9
- data/ext/noderb_extension/libuv/deps/pthread-win32/cancel.c +0 -44
- data/ext/noderb_extension/libuv/deps/pthread-win32/cleanup.c +0 -148
- data/ext/noderb_extension/libuv/deps/pthread-win32/condvar.c +0 -50
- data/ext/noderb_extension/libuv/deps/pthread-win32/config.h +0 -153
- data/ext/noderb_extension/libuv/deps/pthread-win32/context.h +0 -74
- data/ext/noderb_extension/libuv/deps/pthread-win32/create.c +0 -308
- data/ext/noderb_extension/libuv/deps/pthread-win32/dll.c +0 -92
- data/ext/noderb_extension/libuv/deps/pthread-win32/errno.c +0 -94
- data/ext/noderb_extension/libuv/deps/pthread-win32/exit.c +0 -44
- data/ext/noderb_extension/libuv/deps/pthread-win32/fork.c +0 -39
- data/ext/noderb_extension/libuv/deps/pthread-win32/global.c +0 -107
- data/ext/noderb_extension/libuv/deps/pthread-win32/implement.h +0 -944
- data/ext/noderb_extension/libuv/deps/pthread-win32/misc.c +0 -50
- data/ext/noderb_extension/libuv/deps/pthread-win32/mutex.c +0 -62
- data/ext/noderb_extension/libuv/deps/pthread-win32/need_errno.h +0 -145
- data/ext/noderb_extension/libuv/deps/pthread-win32/nonportable.c +0 -47
- data/ext/noderb_extension/libuv/deps/pthread-win32/private.c +0 -54
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.c +0 -66
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.dsp +0 -142
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.dsw +0 -29
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.h +0 -1368
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_destroy.c +0 -79
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getdetachstate.c +0 -86
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getinheritsched.c +0 -51
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getschedparam.c +0 -52
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getschedpolicy.c +0 -61
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getscope.c +0 -54
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getstackaddr.c +0 -97
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getstacksize.c +0 -100
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_init.c +0 -117
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setdetachstate.c +0 -91
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setinheritsched.c +0 -57
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setschedparam.c +0 -63
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setschedpolicy.c +0 -55
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setscope.c +0 -62
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setstackaddr.c +0 -97
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setstacksize.c +0 -110
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_destroy.c +0 -103
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_init.c +0 -69
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_wait.c +0 -104
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_destroy.c +0 -83
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_getpshared.c +0 -95
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_init.c +0 -85
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_setpshared.c +0 -119
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cancel.c +0 -189
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_destroy.c +0 -253
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_init.c +0 -167
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_signal.c +0 -231
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_wait.c +0 -567
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_destroy.c +0 -86
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_getpshared.c +0 -97
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_init.c +0 -87
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_setpshared.c +0 -117
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_delay_np.c +0 -172
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_detach.c +0 -136
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_equal.c +0 -76
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_exit.c +0 -106
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getconcurrency.c +0 -45
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getschedparam.c +0 -75
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getspecific.c +0 -87
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getunique_np.c +0 -47
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getw32threadhandle_np.c +0 -65
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_join.c +0 -157
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_key_create.c +0 -108
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_key_delete.c +0 -125
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_kill.c +0 -105
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_consistent.c +0 -187
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_destroy.c +0 -148
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_init.c +0 -130
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_lock.c +0 -269
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_timedlock.c +0 -324
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_trylock.c +0 -154
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_unlock.c +0 -175
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_destroy.c +0 -83
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getkind_np.c +0 -44
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getpshared.c +0 -95
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getrobust.c +0 -113
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_gettype.c +0 -56
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_init.c +0 -86
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setkind_np.c +0 -44
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setpshared.c +0 -119
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setrobust.c +0 -119
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_settype.c +0 -143
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_num_processors_np.c +0 -56
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_once.c +0 -79
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_destroy.c +0 -143
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_init.c +0 -109
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_rdlock.c +0 -102
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_timedrdlock.c +0 -109
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_timedwrlock.c +0 -139
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_tryrdlock.c +0 -102
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_trywrlock.c +0 -122
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_unlock.c +0 -93
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_wrlock.c +0 -133
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_destroy.c +0 -84
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_getpshared.c +0 -97
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_init.c +0 -83
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_setpshared.c +0 -120
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_self.c +0 -141
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setcancelstate.c +0 -125
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setcanceltype.c +0 -126
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setconcurrency.c +0 -53
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setschedparam.c +0 -123
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setspecific.c +0 -167
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_destroy.c +0 -111
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_init.c +0 -123
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_lock.c +0 -80
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_trylock.c +0 -77
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_unlock.c +0 -71
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_testcancel.c +0 -103
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_timechange_handler_np.c +0 -108
- data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_win32_attach_detach_np.c +0 -258
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_MCS_lock.c +0 -278
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_callUserDestroyRoutines.c +0 -232
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_calloc.c +0 -56
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_cond_check_need_init.c +0 -78
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_getprocessors.c +0 -91
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_is_attr.c +0 -47
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_mutex_check_need_init.c +0 -92
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_new.c +0 -94
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_processInitialize.c +0 -92
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_processTerminate.c +0 -105
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_relmillisecs.c +0 -132
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_reuse.c +0 -151
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_rwlock_cancelwrwait.c +0 -50
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_rwlock_check_need_init.c +0 -77
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_semwait.c +0 -135
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_spinlock_check_need_init.c +0 -78
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_threadDestroy.c +0 -79
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_threadStart.c +0 -357
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_throw.c +0 -189
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_timespec.c +0 -83
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_tkAssocCreate.c +0 -118
- data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_tkAssocDestroy.c +0 -114
- data/ext/noderb_extension/libuv/deps/pthread-win32/rwlock.c +0 -51
- data/ext/noderb_extension/libuv/deps/pthread-win32/sched.c +0 -53
- data/ext/noderb_extension/libuv/deps/pthread-win32/sched.h +0 -183
- data/ext/noderb_extension/libuv/deps/pthread-win32/sched_get_priority_max.c +0 -134
- data/ext/noderb_extension/libuv/deps/pthread-win32/sched_get_priority_min.c +0 -135
- data/ext/noderb_extension/libuv/deps/pthread-win32/sched_getscheduler.c +0 -71
- data/ext/noderb_extension/libuv/deps/pthread-win32/sched_setscheduler.c +0 -83
- data/ext/noderb_extension/libuv/deps/pthread-win32/sched_yield.c +0 -71
- data/ext/noderb_extension/libuv/deps/pthread-win32/sem_close.c +0 -58
- data/ext/noderb_extension/libuv/deps/pthread-win32/sem_destroy.c +0 -144
- data/ext/noderb_extension/libuv/deps/pthread-win32/sem_getvalue.c +0 -110
- data/ext/noderb_extension/libuv/deps/pthread-win32/sem_init.c +0 -169
- data/ext/noderb_extension/libuv/deps/pthread-win32/sem_open.c +0 -58
- data/ext/noderb_extension/libuv/deps/pthread-win32/sem_post.c +0 -128
- data/ext/noderb_extension/libuv/deps/pthread-win32/sem_post_multiple.c +0 -142
- data/ext/noderb_extension/libuv/deps/pthread-win32/sem_timedwait.c +0 -238
- data/ext/noderb_extension/libuv/deps/pthread-win32/sem_trywait.c +0 -117
- data/ext/noderb_extension/libuv/deps/pthread-win32/sem_unlink.c +0 -58
- data/ext/noderb_extension/libuv/deps/pthread-win32/sem_wait.c +0 -187
- data/ext/noderb_extension/libuv/deps/pthread-win32/semaphore.c +0 -69
- data/ext/noderb_extension/libuv/deps/pthread-win32/semaphore.h +0 -169
- data/ext/noderb_extension/libuv/deps/pthread-win32/signal.c +0 -179
- data/ext/noderb_extension/libuv/deps/pthread-win32/spin.c +0 -46
- data/ext/noderb_extension/libuv/deps/pthread-win32/sync.c +0 -43
- data/ext/noderb_extension/libuv/deps/pthread-win32/tsd.c +0 -44
- data/ext/noderb_extension/libuv/deps/pthread-win32/version.rc +0 -388
- data/ext/noderb_extension/libuv/deps/pthread-win32/w32_CancelableWait.c +0 -161
- data/ext/noderb_extension/libuv/doc/iocp-links.html +0 -574
- data/ext/noderb_extension/libuv/src/uv-unix.c +0 -2421
- data/ext/noderb_extension/libuv/src/win/ntdll.h +0 -130
- /data/ext/noderb_extension/libuv/include/{ev.h → uv-private/ev.h} +0 -0
- /data/ext/noderb_extension/libuv/include/{ngx-queue.h → uv-private/ngx-queue.h} +0 -0
- /data/ext/noderb_extension/libuv/include/{tree.h → uv-private/tree.h} +0 -0
- /data/ext/noderb_extension/libuv/src/{uv-cygwin.c → unix/cygwin.c} +0 -0
- /data/ext/noderb_extension/libuv/src/{uv-darwin.c → unix/darwin.c} +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/Changes +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/LICENSE +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/Makefile.am +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/aclocal.m4 +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/autogen.sh +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config.h.in +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_cygwin.h +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_freebsd.h +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_sunos.h +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/configure.ac +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/demo.c +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/ecb.h +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.3 +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.pod +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/libeio.m4 +0 -0
- /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/xthread.h +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Changes +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/LICENSE +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Makefile.am +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Makefile.in +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/README +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/aclocal.m4 +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/autogen.sh +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.guess +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.h.in +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.sub +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_cygwin.h +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_darwin.h +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_freebsd.h +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_sunos.h +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/configure +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/configure.ac +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/depcomp +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev++.h +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.3 +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.c +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.pod +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_epoll.c +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_kqueue.c +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_poll.c +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_port.c +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_select.c +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_vars.h +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_win32.c +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_wrap.h +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/event.c +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/event.h +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/install-sh +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/libev.m4 +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ltmain.sh +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/missing +0 -0
- /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/mkinstalldirs +0 -0
- /data/ext/noderb_extension/libuv/src/{uv-freebsd.c → unix/freebsd.c} +0 -0
- /data/ext/noderb_extension/libuv/src/{uv-linux.c → unix/linux.c} +0 -0
- /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
|
|
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
|
-
|
|
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(
|
|
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,
|
|
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
|
-
|
|
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
|
|
122
|
-
|
|
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 (
|
|
127
|
-
|
|
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
|
|
136
|
-
|
|
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 (
|
|
141
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
173
|
-
|
|
174
|
-
ASSERT(r == 0);
|
|
225
|
+
r = uv_pipe_init(loop, (uv_pipe_t*)&p->stream);
|
|
226
|
+
ASSERT(r == 0);
|
|
175
227
|
|
|
176
|
-
|
|
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
|
-
|
|
201
|
-
ASSERT(!r);
|
|
289
|
+
do_setup(concurrency, arg);
|
|
202
290
|
|
|
203
|
-
|
|
291
|
+
r = do_connect(concurrency, make_connect, arg);
|
|
292
|
+
ASSERT(!r);
|
|
204
293
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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);
|