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