asyncengine 0.0.1.testing
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +0 -0
- data/asyncengine.gemspec +26 -0
- data/ext/asyncengine_ext/asyncengine_ruby.c +82 -0
- data/ext/asyncengine_ext/extconf.rb +47 -0
- data/ext/asyncengine_ext/libuv/AUTHORS +45 -0
- data/ext/asyncengine_ext/libuv/LICENSE +42 -0
- data/ext/asyncengine_ext/libuv/Makefile +119 -0
- data/ext/asyncengine_ext/libuv/README.md +88 -0
- data/ext/asyncengine_ext/libuv/build/gcc_version.py +20 -0
- data/ext/asyncengine_ext/libuv/common.gypi +176 -0
- data/ext/asyncengine_ext/libuv/config-mingw.mk +61 -0
- data/ext/asyncengine_ext/libuv/config-unix.mk +173 -0
- data/ext/asyncengine_ext/libuv/gyp_uv +60 -0
- data/ext/asyncengine_ext/libuv/include/ares.h +591 -0
- data/ext/asyncengine_ext/libuv/include/ares_version.h +24 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/eio.h +403 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/ev.h +838 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/ngx-queue.h +106 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/tree.h +768 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/uv-unix.h +256 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/uv-win.h +458 -0
- data/ext/asyncengine_ext/libuv/include/uv.h +1556 -0
- data/ext/asyncengine_ext/libuv/src/ares/AUTHORS +37 -0
- data/ext/asyncengine_ext/libuv/src/ares/CHANGES +1218 -0
- data/ext/asyncengine_ext/libuv/src/ares/CMakeLists.txt +22 -0
- data/ext/asyncengine_ext/libuv/src/ares/NEWS +21 -0
- data/ext/asyncengine_ext/libuv/src/ares/README +60 -0
- data/ext/asyncengine_ext/libuv/src/ares/README.cares +13 -0
- data/ext/asyncengine_ext/libuv/src/ares/README.msvc +142 -0
- data/ext/asyncengine_ext/libuv/src/ares/README.node +21 -0
- data/ext/asyncengine_ext/libuv/src/ares/RELEASE-NOTES +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/TODO +23 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares__close_sockets.c +66 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares__get_hostent.c +263 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares__read_line.c +71 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares__timeval.c +111 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_cancel.c +63 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_data.c +190 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_data.h +65 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_destroy.c +105 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_dns.h +90 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_expand_name.c +200 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_expand_string.c +75 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_fds.c +63 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_free_hostent.c +42 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_free_string.c +25 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getenv.c +30 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getenv.h +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_gethostbyaddr.c +301 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_gethostbyname.c +523 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getnameinfo.c +427 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getopt.c +122 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getopt.h +53 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getsock.c +72 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_init.c +1809 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_iphlpapi.h +221 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_ipv6.h +78 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_library_init.c +142 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_library_init.h +42 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_llist.c +86 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_llist.h +42 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_mkquery.c +195 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_nowarn.c +181 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_nowarn.h +55 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_options.c +248 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_a_reply.c +263 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_aaaa_reply.c +259 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_mx_reply.c +170 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_ns_reply.c +182 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_ptr_reply.c +217 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_srv_reply.c +179 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_txt_reply.c +201 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_platform.c +11035 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_platform.h +43 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_private.h +355 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_process.c +1295 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_query.c +183 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_rules.h +144 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_search.c +321 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_send.c +134 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_setup.h +199 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strcasecmp.c +66 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strcasecmp.h +30 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strdup.c +42 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strdup.h +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strerror.c +56 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_timeout.c +80 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_version.c +11 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_writev.c +79 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_writev.h +36 -0
- data/ext/asyncengine_ext/libuv/src/ares/bitncmp.c +59 -0
- data/ext/asyncengine_ext/libuv/src/ares/bitncmp.h +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_cygwin/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_darwin/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_freebsd/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_linux/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_netbsd/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_openbsd/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_sunos/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_win32/ares_config.h +369 -0
- data/ext/asyncengine_ext/libuv/src/ares/get_ver.awk +35 -0
- data/ext/asyncengine_ext/libuv/src/ares/inet_net_pton.c +451 -0
- data/ext/asyncengine_ext/libuv/src/ares/inet_net_pton.h +31 -0
- data/ext/asyncengine_ext/libuv/src/ares/inet_ntop.c +208 -0
- data/ext/asyncengine_ext/libuv/src/ares/inet_ntop.h +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/nameser.h +203 -0
- data/ext/asyncengine_ext/libuv/src/ares/setup_once.h +504 -0
- data/ext/asyncengine_ext/libuv/src/ares/windows_port.c +22 -0
- data/ext/asyncengine_ext/libuv/src/unix/async.c +58 -0
- data/ext/asyncengine_ext/libuv/src/unix/cares.c +194 -0
- data/ext/asyncengine_ext/libuv/src/unix/check.c +80 -0
- data/ext/asyncengine_ext/libuv/src/unix/core.c +588 -0
- data/ext/asyncengine_ext/libuv/src/unix/cygwin.c +84 -0
- data/ext/asyncengine_ext/libuv/src/unix/darwin.c +341 -0
- data/ext/asyncengine_ext/libuv/src/unix/dl.c +91 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/Changes +63 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/LICENSE +36 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/Makefile.am +15 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/aclocal.m4 +8957 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/autogen.sh +3 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config.h.in +86 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_cygwin.h +80 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_darwin.h +141 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_freebsd.h +81 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_linux.h +94 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_netbsd.h +81 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_openbsd.h +137 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_sunos.h +84 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/configure.ac +22 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/demo.c +194 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/ecb.h +370 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/eio.3 +3428 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/eio.c +2593 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/eio.pod +969 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/libeio.m4 +195 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/xthread.h +164 -0
- data/ext/asyncengine_ext/libuv/src/unix/error.c +98 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/Changes +388 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/LICENSE +36 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/Makefile.am +18 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/Makefile.in +771 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/README +58 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/aclocal.m4 +8957 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/autogen.sh +6 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config.guess +1526 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config.h.in +125 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config.sub +1658 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_cygwin.h +123 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_darwin.h +122 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_freebsd.h +120 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_linux.h +141 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_netbsd.h +120 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_openbsd.h +126 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_sunos.h +122 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/configure +13037 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/configure.ac +18 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/depcomp +630 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev++.h +816 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev.3 +5311 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev.c +3921 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev.pod +5243 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_epoll.c +266 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_kqueue.c +235 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_poll.c +148 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_port.c +179 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_select.c +310 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_vars.h +203 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_win32.c +153 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_wrap.h +196 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/event.c +402 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/event.h +170 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/install-sh +294 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/libev.m4 +39 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ltmain.sh +8413 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/missing +336 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/mkinstalldirs +111 -0
- data/ext/asyncengine_ext/libuv/src/unix/freebsd.c +312 -0
- data/ext/asyncengine_ext/libuv/src/unix/fs.c +707 -0
- data/ext/asyncengine_ext/libuv/src/unix/idle.c +79 -0
- data/ext/asyncengine_ext/libuv/src/unix/internal.h +161 -0
- data/ext/asyncengine_ext/libuv/src/unix/kqueue.c +127 -0
- data/ext/asyncengine_ext/libuv/src/unix/linux/core.c +474 -0
- data/ext/asyncengine_ext/libuv/src/unix/linux/inotify.c +211 -0
- data/ext/asyncengine_ext/libuv/src/unix/linux/syscalls.c +230 -0
- data/ext/asyncengine_ext/libuv/src/unix/linux/syscalls.h +87 -0
- data/ext/asyncengine_ext/libuv/src/unix/loop.c +58 -0
- data/ext/asyncengine_ext/libuv/src/unix/netbsd.c +108 -0
- data/ext/asyncengine_ext/libuv/src/unix/openbsd.c +295 -0
- data/ext/asyncengine_ext/libuv/src/unix/pipe.c +266 -0
- data/ext/asyncengine_ext/libuv/src/unix/prepare.c +79 -0
- data/ext/asyncengine_ext/libuv/src/unix/process.c +369 -0
- data/ext/asyncengine_ext/libuv/src/unix/stream.c +1033 -0
- data/ext/asyncengine_ext/libuv/src/unix/sunos.c +466 -0
- data/ext/asyncengine_ext/libuv/src/unix/tcp.c +327 -0
- data/ext/asyncengine_ext/libuv/src/unix/thread.c +154 -0
- data/ext/asyncengine_ext/libuv/src/unix/timer.c +127 -0
- data/ext/asyncengine_ext/libuv/src/unix/tty.c +146 -0
- data/ext/asyncengine_ext/libuv/src/unix/udp.c +670 -0
- data/ext/asyncengine_ext/libuv/src/unix/uv-eio.c +124 -0
- data/ext/asyncengine_ext/libuv/src/unix/uv-eio.h +13 -0
- data/ext/asyncengine_ext/libuv/src/uv-common.c +354 -0
- data/ext/asyncengine_ext/libuv/src/uv-common.h +87 -0
- data/ext/asyncengine_ext/libuv/src/win/async.c +127 -0
- data/ext/asyncengine_ext/libuv/src/win/cares.c +290 -0
- data/ext/asyncengine_ext/libuv/src/win/core.c +270 -0
- data/ext/asyncengine_ext/libuv/src/win/dl.c +82 -0
- data/ext/asyncengine_ext/libuv/src/win/error.c +132 -0
- data/ext/asyncengine_ext/libuv/src/win/fs-event.c +514 -0
- data/ext/asyncengine_ext/libuv/src/win/fs.c +1576 -0
- data/ext/asyncengine_ext/libuv/src/win/getaddrinfo.c +372 -0
- data/ext/asyncengine_ext/libuv/src/win/handle.c +225 -0
- data/ext/asyncengine_ext/libuv/src/win/internal.h +352 -0
- data/ext/asyncengine_ext/libuv/src/win/loop-watcher.c +131 -0
- data/ext/asyncengine_ext/libuv/src/win/pipe.c +1661 -0
- data/ext/asyncengine_ext/libuv/src/win/process.c +1140 -0
- data/ext/asyncengine_ext/libuv/src/win/req.c +174 -0
- data/ext/asyncengine_ext/libuv/src/win/stream.c +201 -0
- data/ext/asyncengine_ext/libuv/src/win/tcp.c +1282 -0
- data/ext/asyncengine_ext/libuv/src/win/thread.c +332 -0
- data/ext/asyncengine_ext/libuv/src/win/threadpool.c +73 -0
- data/ext/asyncengine_ext/libuv/src/win/timer.c +276 -0
- data/ext/asyncengine_ext/libuv/src/win/tty.c +1795 -0
- data/ext/asyncengine_ext/libuv/src/win/udp.c +709 -0
- data/ext/asyncengine_ext/libuv/src/win/util.c +719 -0
- data/ext/asyncengine_ext/libuv/src/win/winapi.c +117 -0
- data/ext/asyncengine_ext/libuv/src/win/winapi.h +4419 -0
- data/ext/asyncengine_ext/libuv/src/win/winsock.c +470 -0
- data/ext/asyncengine_ext/libuv/src/win/winsock.h +138 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-ares.c +118 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-getaddrinfo.c +94 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-list.h +105 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-ping-pongs.c +213 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-pound.c +324 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-pump.c +462 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-sizes.c +40 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-spawn.c +156 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-tcp-write-batch.c +140 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-thread.c +64 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-udp-packet-storm.c +247 -0
- data/ext/asyncengine_ext/libuv/test/blackhole-server.c +118 -0
- data/ext/asyncengine_ext/libuv/test/dns-server.c +321 -0
- data/ext/asyncengine_ext/libuv/test/echo-server.c +370 -0
- data/ext/asyncengine_ext/libuv/test/fixtures/empty_file +0 -0
- data/ext/asyncengine_ext/libuv/test/fixtures/load_error.node +1 -0
- data/ext/asyncengine_ext/libuv/test/run-benchmarks.c +64 -0
- data/ext/asyncengine_ext/libuv/test/run-tests.c +108 -0
- data/ext/asyncengine_ext/libuv/test/runner-unix.c +315 -0
- data/ext/asyncengine_ext/libuv/test/runner-unix.h +36 -0
- data/ext/asyncengine_ext/libuv/test/runner-win.c +343 -0
- data/ext/asyncengine_ext/libuv/test/runner-win.h +42 -0
- data/ext/asyncengine_ext/libuv/test/runner.c +317 -0
- data/ext/asyncengine_ext/libuv/test/runner.h +159 -0
- data/ext/asyncengine_ext/libuv/test/task.h +117 -0
- data/ext/asyncengine_ext/libuv/test/test-async.c +216 -0
- data/ext/asyncengine_ext/libuv/test/test-callback-stack.c +203 -0
- data/ext/asyncengine_ext/libuv/test/test-connection-fail.c +148 -0
- data/ext/asyncengine_ext/libuv/test/test-counters-init.c +216 -0
- data/ext/asyncengine_ext/libuv/test/test-cwd-and-chdir.c +64 -0
- data/ext/asyncengine_ext/libuv/test/test-delayed-accept.c +197 -0
- data/ext/asyncengine_ext/libuv/test/test-dlerror.c +49 -0
- data/ext/asyncengine_ext/libuv/test/test-eio-overflow.c +90 -0
- data/ext/asyncengine_ext/libuv/test/test-error.c +59 -0
- data/ext/asyncengine_ext/libuv/test/test-fail-always.c +29 -0
- data/ext/asyncengine_ext/libuv/test/test-fs-event.c +442 -0
- data/ext/asyncengine_ext/libuv/test/test-fs.c +1731 -0
- data/ext/asyncengine_ext/libuv/test/test-get-currentexe.c +63 -0
- data/ext/asyncengine_ext/libuv/test/test-get-loadavg.c +36 -0
- data/ext/asyncengine_ext/libuv/test/test-get-memory.c +38 -0
- data/ext/asyncengine_ext/libuv/test/test-getaddrinfo.c +122 -0
- data/ext/asyncengine_ext/libuv/test/test-gethostbyname.c +189 -0
- data/ext/asyncengine_ext/libuv/test/test-getsockname.c +342 -0
- data/ext/asyncengine_ext/libuv/test/test-hrtime.c +51 -0
- data/ext/asyncengine_ext/libuv/test/test-idle.c +81 -0
- data/ext/asyncengine_ext/libuv/test/test-ipc-send-recv.c +209 -0
- data/ext/asyncengine_ext/libuv/test/test-ipc.c +614 -0
- data/ext/asyncengine_ext/libuv/test/test-list.h +371 -0
- data/ext/asyncengine_ext/libuv/test/test-loop-handles.c +359 -0
- data/ext/asyncengine_ext/libuv/test/test-multiple-listen.c +102 -0
- data/ext/asyncengine_ext/libuv/test/test-mutexes.c +63 -0
- data/ext/asyncengine_ext/libuv/test/test-pass-always.c +28 -0
- data/ext/asyncengine_ext/libuv/test/test-ping-pong.c +253 -0
- data/ext/asyncengine_ext/libuv/test/test-pipe-bind-error.c +140 -0
- data/ext/asyncengine_ext/libuv/test/test-pipe-connect-error.c +96 -0
- data/ext/asyncengine_ext/libuv/test/test-platform-output.c +87 -0
- data/ext/asyncengine_ext/libuv/test/test-process-title.c +42 -0
- data/ext/asyncengine_ext/libuv/test/test-ref.c +322 -0
- data/ext/asyncengine_ext/libuv/test/test-run-once.c +44 -0
- data/ext/asyncengine_ext/libuv/test/test-shutdown-close.c +103 -0
- data/ext/asyncengine_ext/libuv/test/test-shutdown-eof.c +183 -0
- data/ext/asyncengine_ext/libuv/test/test-spawn.c +499 -0
- data/ext/asyncengine_ext/libuv/test/test-stdio-over-pipes.c +256 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-bind-error.c +191 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-bind6-error.c +154 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-close.c +129 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-connect-error.c +70 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-connect6-error.c +68 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-flags.c +51 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-write-error.c +168 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-write-to-half-open-connection.c +135 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-writealot.c +195 -0
- data/ext/asyncengine_ext/libuv/test/test-thread.c +183 -0
- data/ext/asyncengine_ext/libuv/test/test-threadpool.c +57 -0
- data/ext/asyncengine_ext/libuv/test/test-timer-again.c +141 -0
- data/ext/asyncengine_ext/libuv/test/test-timer.c +130 -0
- data/ext/asyncengine_ext/libuv/test/test-tty.c +110 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-dgram-too-big.c +86 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-ipv6.c +156 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-multicast-join.c +139 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-multicast-ttl.c +86 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-options.c +86 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-send-and-recv.c +208 -0
- data/ext/asyncengine_ext/libuv/test/test-util.c +97 -0
- data/ext/asyncengine_ext/libuv/uv.gyp +435 -0
- data/ext/asyncengine_ext/libuv/vcbuild.bat +105 -0
- data/lib/asyncengine/version.rb +3 -0
- data/lib/asyncengine.rb +41 -0
- metadata +384 -0
data/README.markdown
ADDED
File without changes
|
data/asyncengine.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require "./lib/asyncengine/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "asyncengine"
|
7
|
+
spec.version = AsyncEngine::VERSION
|
8
|
+
spec.date = Time.now
|
9
|
+
spec.authors = ["Inaki Baz Castillo"]
|
10
|
+
spec.email = "ibc@aliax.net"
|
11
|
+
spec.summary = "Ruby asynchronous event driven library based on libuv"
|
12
|
+
spec.homepage = "https://github.com/ibc/AsyncEngine"
|
13
|
+
spec.description = "Ruby asynchronous event driven library based on libuv"
|
14
|
+
spec.extensions = ["ext/asyncengine_ext/extconf.rb"]
|
15
|
+
spec.required_ruby_version = ">= 1.9.2"
|
16
|
+
|
17
|
+
files = %w{
|
18
|
+
asyncengine.gemspec
|
19
|
+
README.markdown
|
20
|
+
lib/**/**
|
21
|
+
ext/asyncengine_ext/{*.c,*.h,*.rb}
|
22
|
+
ext/asyncengine_ext/libuv/**/**/**/**/**/**/**/**/**
|
23
|
+
}.join(",")
|
24
|
+
spec.files = Dir.glob "{#{files}}"
|
25
|
+
spec.require_paths = ["lib"]
|
26
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
#include <ruby.h>
|
2
|
+
//#include <libuv/include/uv.h> // No hace falta por el dir_config() en extconf.rb.
|
3
|
+
#include <uv.h>
|
4
|
+
#include <signal.h>
|
5
|
+
|
6
|
+
|
7
|
+
static VALUE mAsyncEngine;
|
8
|
+
static ID id_trapped_signals;
|
9
|
+
static ID method_call;
|
10
|
+
|
11
|
+
void timer_callback(uv_timer_t* handle, int status)
|
12
|
+
{
|
13
|
+
rb_funcall(mAsyncEngine, rb_intern("timer_cb"), 0, 0);
|
14
|
+
}
|
15
|
+
|
16
|
+
void signal_handler(int signal_number)
|
17
|
+
{
|
18
|
+
VALUE trapped_signals = rb_ivar_get(mAsyncEngine, id_trapped_signals);
|
19
|
+
rb_funcall(rb_hash_lookup(trapped_signals, INT2FIX(signal_number)), method_call, 0, 0);
|
20
|
+
}
|
21
|
+
|
22
|
+
//void (*uv_prepare_cb)(uv_prepare_t* handle, int status);
|
23
|
+
|
24
|
+
|
25
|
+
VALUE AsyncEngine_trap_signal(VALUE self, VALUE rb_signal_number)
|
26
|
+
{
|
27
|
+
// TODO: Check http://linux.die.net/man/2/sigaction (recommended by http://linux.die.net/man/2/signal).
|
28
|
+
// TODO: En teoria devuelve EINVAL si el numero de signal pasado no existe, pero me da error porque
|
29
|
+
// no hay EINVAL en signal.h.
|
30
|
+
if (signal(FIX2INT(rb_signal_number), signal_handler) < 0)
|
31
|
+
return Qfalse;
|
32
|
+
return Qtrue;
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
VALUE _uv_run(void *data)
|
38
|
+
{
|
39
|
+
int res;
|
40
|
+
res = uv_run(uv_default_loop());
|
41
|
+
printf("NOTICE: uv_run() ends with status %d\n", res);
|
42
|
+
}
|
43
|
+
|
44
|
+
// Starts the event loop and adds one reference to ensure loop will run.
|
45
|
+
VALUE AsyncEngine_start(VALUE self)
|
46
|
+
{
|
47
|
+
uv_ref(uv_default_loop());
|
48
|
+
if (rb_block_given_p()) {
|
49
|
+
rb_yield(Qnil);
|
50
|
+
}
|
51
|
+
|
52
|
+
// uv_timer_t* handle = (uv_timer_t*) malloc(sizeof(uv_timer_t));
|
53
|
+
// uv_timer_init(uv_default_loop(), handle);
|
54
|
+
// uv_timer_start(handle, timer_callback, 2000, 1000);
|
55
|
+
|
56
|
+
// TODO: Habría que solbar el GVL porque uv_run bloquea y otros threads de Ruby no funcarian jamas.
|
57
|
+
// uv_prepare() se ejecuta en cada inicio de iteracion. Que llame a una funcion de Ruby que mire los
|
58
|
+
// signals recibidos.
|
59
|
+
//uv_run(uv_default_loop());
|
60
|
+
// TODO: Tal vez aqui tenga que coger de nuevo el GIL.
|
61
|
+
// EJ: https://github.com/saghul/pyuv/blob/master/src/loop.c#L76
|
62
|
+
|
63
|
+
if (rb_thread_blocking_region(_uv_run, 0, RUBY_UBF_IO, 0) == Qfalse) {
|
64
|
+
// an error occurred, we're not active anymore
|
65
|
+
//MARK_CONN_INACTIVE(self);
|
66
|
+
rb_raise(rb_eSystemCallError, "rb_thread_blocking_region returns false !!!");
|
67
|
+
}
|
68
|
+
printf("return self !!!!!!!\n");
|
69
|
+
|
70
|
+
return self;
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
void Init_asyncengine_ext()
|
75
|
+
{
|
76
|
+
mAsyncEngine = rb_define_module("AsyncEngine");
|
77
|
+
rb_define_module_function(mAsyncEngine, "start", AsyncEngine_start, 0);
|
78
|
+
rb_define_module_function(mAsyncEngine, "trap_signal", AsyncEngine_trap_signal, 1);
|
79
|
+
|
80
|
+
id_trapped_signals = rb_intern("@trapped_signals");
|
81
|
+
method_call = rb_intern("call");
|
82
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require "mkmf"
|
2
|
+
require "rbconfig"
|
3
|
+
require "fileutils"
|
4
|
+
|
5
|
+
|
6
|
+
def sys cmd
|
7
|
+
puts "system command: #{cmd}"
|
8
|
+
unless ret = xsystem(cmd)
|
9
|
+
raise "system command `#{cmd}' failed, please report to https://github.com/ibc/AsyncEngine/issues"
|
10
|
+
end
|
11
|
+
ret
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
case host_os = RbConfig::CONFIG["host_os"]
|
16
|
+
|
17
|
+
when /solaris/i
|
18
|
+
cflags = " -G -fPIC "
|
19
|
+
RbConfig::CONFIG["LDSHARED"] = "$(CXX) -G -fPIC"
|
20
|
+
if RbConfig::CONFIG["CC"] == "cc"
|
21
|
+
cflags = "-g -O2 -fPIC"
|
22
|
+
RbConfig::CONFIG["CCDLFLAGS"] = "-fPIC"
|
23
|
+
end
|
24
|
+
ldflags = ""
|
25
|
+
|
26
|
+
when /darwin|mac os/i
|
27
|
+
cflags = "-shared -fPIC"
|
28
|
+
ldflags = "-framework CoreServices"
|
29
|
+
|
30
|
+
else
|
31
|
+
cflags = "-shared -fPIC"
|
32
|
+
ldflags = ""
|
33
|
+
end
|
34
|
+
|
35
|
+
$CFLAGS = RbConfig::CONFIG["CFLAGS"] = " #{cflags} "
|
36
|
+
$LDFLAGS = RbConfig::CONFIG["LDFLAGS"] = " #{ldflags} "
|
37
|
+
|
38
|
+
here = File.expand_path(File.dirname(__FILE__), "libuv/")
|
39
|
+
|
40
|
+
Dir.chdir(here) do
|
41
|
+
sys "CFLAGS='#{cflags}' make"
|
42
|
+
FileUtils.mv "uv.a", "../libuv.a"
|
43
|
+
end
|
44
|
+
|
45
|
+
dir_config("uv", File.expand_path("../libuv/include", __FILE__), File.expand_path("../libuv", __FILE__))
|
46
|
+
have_library("uv")
|
47
|
+
create_makefile("asyncengine_ext")
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# Authors ordered by first contribution.
|
2
|
+
Ryan Dahl <ryan@joyent.com>
|
3
|
+
Bert Belder <bertbelder@gmail.com>
|
4
|
+
Josh Roesslein <jroesslein@gmail.com>
|
5
|
+
Alan Gutierrez <alan@prettyrobots.com>
|
6
|
+
Joshua Peek <josh@joshpeek.com>
|
7
|
+
Igor Zinkovsky <igorzi@microsoft.com>
|
8
|
+
San-Tai Hsu <vanilla@fatpipi.com>
|
9
|
+
Ben Noordhuis <info@bnoordhuis.nl>
|
10
|
+
Henry Rawas <henryr@schakra.com>
|
11
|
+
Robert Mustacchi <rm@joyent.com>
|
12
|
+
Matt Stevens <matt@alloysoft.com>
|
13
|
+
Paul Querna <pquerna@apache.org>
|
14
|
+
Shigeki Ohtsu <ohtsu@iij.ad.jp>
|
15
|
+
Tom Hughes <tom.hughes@palm.com>
|
16
|
+
Peter Bright <drpizza@quiscalusmexicanus.org>
|
17
|
+
Jeroen Janssen <jeroen.janssen@gmail.com>
|
18
|
+
Andrea Lattuada <ndr.lattuada@gmail.com>
|
19
|
+
Augusto Henrique Hentz <ahhentz@gmail.com>
|
20
|
+
Clifford Heath <clifford.heath@gmail.com>
|
21
|
+
Jorge Chamorro Bieling <jorge@jorgechamorro.com>
|
22
|
+
Luis Lavena <luislavena@gmail.com>
|
23
|
+
Matthew Sporleder <msporleder@gmail.com>
|
24
|
+
Erick Tryzelaar <erick.tryzelaar@gmail.com>
|
25
|
+
Isaac Z. Schlueter <i@izs.me>
|
26
|
+
Pieter Noordhuis <pcnoordhuis@gmail.com>
|
27
|
+
Marek Jelen <marek@jelen.biz>
|
28
|
+
Fedor Indutny <fedor.indutny@gmail.com>
|
29
|
+
Saúl Ibarra Corretgé <saghul@gmail.com>
|
30
|
+
Felix Geisendörfer <felix@debuggable.com>
|
31
|
+
Yuki OKUMURA <mjt@cltn.org>
|
32
|
+
Roman Shtylman <shtylman@gmail.com>
|
33
|
+
Frank Denis <github@pureftpd.org>
|
34
|
+
Carter Allen <CarterA@opt-6.com>
|
35
|
+
Tj Holowaychuk <tj@vision-media.ca>
|
36
|
+
Shimon Doodkin <helpmepro1@gmail.com>
|
37
|
+
Ryan Emery <seebees@gmail.com>
|
38
|
+
Bruce Mitchener <bruce.mitchener@gmail.com>
|
39
|
+
Maciej Małecki <maciej.malecki@notimplemented.org>
|
40
|
+
Yasuhiro Matsumoto <mattn.jp@gmail.com>
|
41
|
+
Daisuke Murase <typester@cpan.org>
|
42
|
+
Paddy Byers <paddy.byers@gmail.com>
|
43
|
+
Dan VerWeire <dverweire@gmail.com>
|
44
|
+
Brandon Benvie <brandon@bbenvie.com>
|
45
|
+
Brandon Philips <brandon.philips@rackspace.com>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
libuv is part of the Node project: http://nodejs.org/
|
2
|
+
libuv may be distributed alone under Node's license:
|
3
|
+
|
4
|
+
====
|
5
|
+
|
6
|
+
Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
|
+
of this software and associated documentation files (the "Software"), to
|
9
|
+
deal in the Software without restriction, including without limitation the
|
10
|
+
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
11
|
+
sell copies of the Software, and to permit persons to whom the Software is
|
12
|
+
furnished to do so, subject to the following conditions:
|
13
|
+
|
14
|
+
The above copyright notice and this permission notice shall be included in
|
15
|
+
all copies or substantial portions of the Software.
|
16
|
+
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
20
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
22
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
23
|
+
IN THE SOFTWARE.
|
24
|
+
|
25
|
+
====
|
26
|
+
|
27
|
+
This license applies to all parts of libuv that are not externally
|
28
|
+
maintained libraries.
|
29
|
+
|
30
|
+
The externally maintained libraries used by libuv are:
|
31
|
+
|
32
|
+
- tree.h (from FreeBSD), copyright Niels Provos. Two clause BSD license.
|
33
|
+
|
34
|
+
- ngx_queue.h (from Nginx), copyright Igor Sysoev. Two clause BSD license.
|
35
|
+
|
36
|
+
- c-ares, copyright Daniel Stenberg and others. MIT licensed.
|
37
|
+
|
38
|
+
- libev, located at ev/ is copyright Marc Alexander Lehmann, and
|
39
|
+
dual-licensed under the MIT license and GPL2.
|
40
|
+
|
41
|
+
- libeio, located at eio/ is copyright Marc Alexander Lehmann, and
|
42
|
+
dual-licensed under the MIT license and GPL2.
|
@@ -0,0 +1,119 @@
|
|
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
|
+
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
|
22
|
+
|
23
|
+
ifdef MSVC
|
24
|
+
uname_S := MINGW
|
25
|
+
endif
|
26
|
+
|
27
|
+
CPPFLAGS += -Iinclude -Iinclude/uv-private
|
28
|
+
|
29
|
+
CARES_OBJS =
|
30
|
+
CARES_OBJS += src/ares/ares__close_sockets.o
|
31
|
+
CARES_OBJS += src/ares/ares__get_hostent.o
|
32
|
+
CARES_OBJS += src/ares/ares__read_line.o
|
33
|
+
CARES_OBJS += src/ares/ares__timeval.o
|
34
|
+
CARES_OBJS += src/ares/ares_cancel.o
|
35
|
+
CARES_OBJS += src/ares/ares_data.o
|
36
|
+
CARES_OBJS += src/ares/ares_destroy.o
|
37
|
+
CARES_OBJS += src/ares/ares_expand_name.o
|
38
|
+
CARES_OBJS += src/ares/ares_expand_string.o
|
39
|
+
CARES_OBJS += src/ares/ares_fds.o
|
40
|
+
CARES_OBJS += src/ares/ares_free_hostent.o
|
41
|
+
CARES_OBJS += src/ares/ares_free_string.o
|
42
|
+
CARES_OBJS += src/ares/ares_gethostbyaddr.o
|
43
|
+
CARES_OBJS += src/ares/ares_gethostbyname.o
|
44
|
+
CARES_OBJS += src/ares/ares_getnameinfo.o
|
45
|
+
CARES_OBJS += src/ares/ares_getopt.o
|
46
|
+
CARES_OBJS += src/ares/ares_getsock.o
|
47
|
+
CARES_OBJS += src/ares/ares_init.o
|
48
|
+
CARES_OBJS += src/ares/ares_library_init.o
|
49
|
+
CARES_OBJS += src/ares/ares_llist.o
|
50
|
+
CARES_OBJS += src/ares/ares_mkquery.o
|
51
|
+
CARES_OBJS += src/ares/ares_nowarn.o
|
52
|
+
CARES_OBJS += src/ares/ares_options.o
|
53
|
+
CARES_OBJS += src/ares/ares_parse_a_reply.o
|
54
|
+
CARES_OBJS += src/ares/ares_parse_aaaa_reply.o
|
55
|
+
CARES_OBJS += src/ares/ares_parse_mx_reply.o
|
56
|
+
CARES_OBJS += src/ares/ares_parse_ns_reply.o
|
57
|
+
CARES_OBJS += src/ares/ares_parse_ptr_reply.o
|
58
|
+
CARES_OBJS += src/ares/ares_parse_srv_reply.o
|
59
|
+
CARES_OBJS += src/ares/ares_parse_txt_reply.o
|
60
|
+
CARES_OBJS += src/ares/ares_process.o
|
61
|
+
CARES_OBJS += src/ares/ares_query.o
|
62
|
+
CARES_OBJS += src/ares/ares_search.o
|
63
|
+
CARES_OBJS += src/ares/ares_send.o
|
64
|
+
CARES_OBJS += src/ares/ares_strcasecmp.o
|
65
|
+
CARES_OBJS += src/ares/ares_strdup.o
|
66
|
+
CARES_OBJS += src/ares/ares_strerror.o
|
67
|
+
CARES_OBJS += src/ares/ares_timeout.o
|
68
|
+
CARES_OBJS += src/ares/ares_version.o
|
69
|
+
CARES_OBJS += src/ares/ares_writev.o
|
70
|
+
CARES_OBJS += src/ares/bitncmp.o
|
71
|
+
CARES_OBJS += src/ares/inet_net_pton.o
|
72
|
+
CARES_OBJS += src/ares/inet_ntop.o
|
73
|
+
|
74
|
+
ifneq (,$(findstring MINGW,$(uname_S)))
|
75
|
+
include config-mingw.mk
|
76
|
+
else
|
77
|
+
include config-unix.mk
|
78
|
+
endif
|
79
|
+
|
80
|
+
TESTS=test/blackhole-server.c test/echo-server.c test/test-*.c
|
81
|
+
BENCHMARKS=test/blackhole-server.c test/echo-server.c test/dns-server.c test/benchmark-*.c
|
82
|
+
|
83
|
+
all: uv.a
|
84
|
+
|
85
|
+
$(CARES_OBJS): %.o: %.c
|
86
|
+
$(CC) -o $*.o -c $(CFLAGS) $(CPPFLAGS) $< -DHAVE_CONFIG_H
|
87
|
+
|
88
|
+
test/run-tests$(E): test/*.h test/run-tests.c $(RUNNER_SRC) test/runner-unix.c $(TESTS) uv.a
|
89
|
+
$(CC) $(CPPFLAGS) $(RUNNER_CFLAGS) -o test/run-tests test/run-tests.c \
|
90
|
+
test/runner.c $(RUNNER_SRC) $(TESTS) uv.a $(RUNNER_LIBS) $(RUNNER_LINKFLAGS)
|
91
|
+
|
92
|
+
test/run-benchmarks$(E): test/*.h test/run-benchmarks.c test/runner.c $(RUNNER_SRC) $(BENCHMARKS) uv.a
|
93
|
+
$(CC) $(CPPFLAGS) $(RUNNER_CFLAGS) -o test/run-benchmarks test/run-benchmarks.c \
|
94
|
+
test/runner.c $(RUNNER_SRC) $(BENCHMARKS) uv.a $(RUNNER_LIBS) $(RUNNER_LINKFLAGS)
|
95
|
+
|
96
|
+
test/echo.o: test/echo.c test/echo.h
|
97
|
+
$(CC) $(CPPFLAGS) $(CFLAGS) -c test/echo.c -o test/echo.o
|
98
|
+
|
99
|
+
|
100
|
+
.PHONY: clean clean-platform distclean distclean-platform test bench
|
101
|
+
|
102
|
+
|
103
|
+
test: test/run-tests$(E)
|
104
|
+
test/run-tests
|
105
|
+
|
106
|
+
#test-%: test/run-tests$(E)
|
107
|
+
# test/run-tests $(@:test-%=%)
|
108
|
+
|
109
|
+
bench: test/run-benchmarks$(E)
|
110
|
+
test/run-benchmarks
|
111
|
+
|
112
|
+
#bench-%: test/run-benchmarks$(E)
|
113
|
+
# test/run-benchmarks $(@:bench-%=%)
|
114
|
+
|
115
|
+
clean: clean-platform
|
116
|
+
$(RM) -f src/*.o *.a test/run-tests$(E) test/run-benchmarks$(E)
|
117
|
+
|
118
|
+
distclean: distclean-platform
|
119
|
+
$(RM) -f src/*.o *.a test/run-tests$(E) test/run-benchmarks$(E)
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# libuv [![Build Status](https://secure.travis-ci.org/joyent/libuv.png)](http://travis-ci.org/joyent/libuv)
|
2
|
+
|
3
|
+
libuv is a new platform layer for Node. Its purpose is to abstract IOCP on
|
4
|
+
Windows and libev on Unix systems. We intend to eventually contain all
|
5
|
+
platform differences in this library.
|
6
|
+
|
7
|
+
http://nodejs.org/
|
8
|
+
|
9
|
+
## Features
|
10
|
+
|
11
|
+
* Non-blocking TCP sockets
|
12
|
+
|
13
|
+
* Non-blocking named pipes
|
14
|
+
|
15
|
+
* UDP
|
16
|
+
|
17
|
+
* Timers
|
18
|
+
|
19
|
+
* Child process spawning
|
20
|
+
|
21
|
+
* Asynchronous DNS via c-ares or `uv_getaddrinfo`.
|
22
|
+
|
23
|
+
* Asynchronous file system APIs `uv_fs_*`
|
24
|
+
|
25
|
+
* High resolution time `uv_hrtime`
|
26
|
+
|
27
|
+
* Current executable path look up `uv_exepath`
|
28
|
+
|
29
|
+
* Thread pool scheduling `uv_queue_work`
|
30
|
+
|
31
|
+
* ANSI escape code controlled TTY `uv_tty_t`
|
32
|
+
|
33
|
+
* File system events Currently supports inotify, `ReadDirectoryChangesW`
|
34
|
+
and kqueue. Event ports in the near future.
|
35
|
+
`uv_fs_event_t`
|
36
|
+
|
37
|
+
* IPC and socket sharing between processes `uv_write2`
|
38
|
+
|
39
|
+
|
40
|
+
## Documentation
|
41
|
+
|
42
|
+
See `include/uv.h`.
|
43
|
+
|
44
|
+
|
45
|
+
## Build Instructions
|
46
|
+
|
47
|
+
For GCC (including MinGW) there are two methods building: via normal
|
48
|
+
makefiles or via GYP. GYP is a meta-build system which can generate MSVS,
|
49
|
+
Makefile, and XCode backends. It is best used for integration into other
|
50
|
+
projects. The old (more stable) system is using Makefiles.
|
51
|
+
|
52
|
+
To build via Makefile simply execute:
|
53
|
+
|
54
|
+
make
|
55
|
+
|
56
|
+
To build with Visual Studio run the vcbuilds.bat file which will
|
57
|
+
checkout the GYP code into build/gyp and generate the uv.sln and
|
58
|
+
related files.
|
59
|
+
|
60
|
+
Windows users can also build from cmd-line using msbuild. This is
|
61
|
+
done by running vcbuild.bat from Visual Studio command prompt.
|
62
|
+
|
63
|
+
To have GYP generate build script for another system you will need to
|
64
|
+
checkout GYP into the project tree manually:
|
65
|
+
|
66
|
+
svn co http://gyp.googlecode.com/svn/trunk build/gyp
|
67
|
+
|
68
|
+
Unix users run
|
69
|
+
|
70
|
+
./gyp_uv -f make
|
71
|
+
make
|
72
|
+
|
73
|
+
Macintosh users run
|
74
|
+
|
75
|
+
./gyp_uv -f xcode
|
76
|
+
xcodebuild -project uv.xcodeproj -configuration Release -target All
|
77
|
+
|
78
|
+
|
79
|
+
## Supported Platforms
|
80
|
+
|
81
|
+
Microsoft Windows operating systems since Windows XP SP2. It can be built
|
82
|
+
with either Visual Studio or MinGW.
|
83
|
+
|
84
|
+
Linux 2.6 using the GCC toolchain.
|
85
|
+
|
86
|
+
MacOS using the GCC or XCode toolchain.
|
87
|
+
|
88
|
+
Solaris 121 and later using GCC toolchain.
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
|
3
|
+
import os
|
4
|
+
import re
|
5
|
+
import subprocess
|
6
|
+
import sys
|
7
|
+
|
8
|
+
|
9
|
+
def DoMain(*args):
|
10
|
+
cc = os.environ.get('CC', 'gcc')
|
11
|
+
stdin, stderr = os.pipe()
|
12
|
+
subprocess.call([cc, '-v'], stderr=stderr)
|
13
|
+
output = os.read(stdin, 4096)
|
14
|
+
match = re.search("\ngcc version (\d+\.\d+\.\d+)", output)
|
15
|
+
if match:
|
16
|
+
print(match.group(1))
|
17
|
+
|
18
|
+
|
19
|
+
if __name__ == '__main__':
|
20
|
+
DoMain(*sys.argv)
|
@@ -0,0 +1,176 @@
|
|
1
|
+
{
|
2
|
+
'variables': {
|
3
|
+
'visibility%': 'hidden', # V8's visibility setting
|
4
|
+
'target_arch%': 'ia32', # set v8's target architecture
|
5
|
+
'host_arch%': 'ia32', # set v8's host architecture
|
6
|
+
'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
|
7
|
+
'component%': 'static_library', # NB. these names match with what V8 expects
|
8
|
+
'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way
|
9
|
+
},
|
10
|
+
|
11
|
+
'target_defaults': {
|
12
|
+
'default_configuration': 'Debug',
|
13
|
+
'configurations': {
|
14
|
+
'Debug': {
|
15
|
+
'defines': [ 'DEBUG', '_DEBUG' ],
|
16
|
+
'cflags': [ '-g', '-O0' ],
|
17
|
+
'msvs_settings': {
|
18
|
+
'VCCLCompilerTool': {
|
19
|
+
'target_conditions': [
|
20
|
+
['library=="static_library"', {
|
21
|
+
'RuntimeLibrary': 1, # static debug
|
22
|
+
}, {
|
23
|
+
'RuntimeLibrary': 3, # DLL debug
|
24
|
+
}],
|
25
|
+
],
|
26
|
+
'Optimization': 0, # /Od, no optimization
|
27
|
+
'MinimalRebuild': 'true',
|
28
|
+
'OmitFramePointers': 'false',
|
29
|
+
'BasicRuntimeChecks': 3, # /RTC1
|
30
|
+
},
|
31
|
+
'VCLinkerTool': {
|
32
|
+
'LinkIncremental': 2, # enable incremental linking
|
33
|
+
},
|
34
|
+
},
|
35
|
+
'conditions': [
|
36
|
+
['OS != "win"', {
|
37
|
+
'defines': [ 'EV_VERIFY=2' ],
|
38
|
+
}],
|
39
|
+
]
|
40
|
+
},
|
41
|
+
'Release': {
|
42
|
+
'defines': [ 'NDEBUG' ],
|
43
|
+
'cflags': [ '-O3', '-fomit-frame-pointer', '-fdata-sections', '-ffunction-sections' ],
|
44
|
+
'msvs_settings': {
|
45
|
+
'VCCLCompilerTool': {
|
46
|
+
'target_conditions': [
|
47
|
+
['library=="static_library"', {
|
48
|
+
'RuntimeLibrary': 0, # static release
|
49
|
+
}, {
|
50
|
+
'RuntimeLibrary': 2, # debug release
|
51
|
+
}],
|
52
|
+
],
|
53
|
+
'Optimization': 3, # /Ox, full optimization
|
54
|
+
'FavorSizeOrSpeed': 1, # /Ot, favour speed over size
|
55
|
+
'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible
|
56
|
+
'WholeProgramOptimization': 'true', # /GL, whole program optimization, needed for LTCG
|
57
|
+
'OmitFramePointers': 'true',
|
58
|
+
'EnableFunctionLevelLinking': 'true',
|
59
|
+
'EnableIntrinsicFunctions': 'true',
|
60
|
+
'AdditionalOptions': [
|
61
|
+
'/MP', # compile across multiple CPUs
|
62
|
+
],
|
63
|
+
},
|
64
|
+
'VCLibrarianTool': {
|
65
|
+
'AdditionalOptions': [
|
66
|
+
'/LTCG', # link time code generation
|
67
|
+
],
|
68
|
+
},
|
69
|
+
'VCLinkerTool': {
|
70
|
+
'LinkTimeCodeGeneration': 1, # link-time code generation
|
71
|
+
'OptimizeReferences': 2, # /OPT:REF
|
72
|
+
'EnableCOMDATFolding': 2, # /OPT:ICF
|
73
|
+
'LinkIncremental': 1, # disable incremental linking
|
74
|
+
},
|
75
|
+
},
|
76
|
+
}
|
77
|
+
},
|
78
|
+
'msvs_settings': {
|
79
|
+
'VCCLCompilerTool': {
|
80
|
+
'StringPooling': 'true', # pool string literals
|
81
|
+
'DebugInformationFormat': 3, # Generate a PDB
|
82
|
+
'WarningLevel': 3,
|
83
|
+
'BufferSecurityCheck': 'true',
|
84
|
+
'ExceptionHandling': 1, # /EHsc
|
85
|
+
'SuppressStartupBanner': 'true',
|
86
|
+
'WarnAsError': 'false',
|
87
|
+
},
|
88
|
+
'VCLibrarianTool': {
|
89
|
+
},
|
90
|
+
'VCLinkerTool': {
|
91
|
+
'GenerateDebugInformation': 'true',
|
92
|
+
'RandomizedBaseAddress': 2, # enable ASLR
|
93
|
+
'DataExecutionPrevention': 2, # enable DEP
|
94
|
+
'AllowIsolation': 'true',
|
95
|
+
'SuppressStartupBanner': 'true',
|
96
|
+
'target_conditions': [
|
97
|
+
['_type=="executable"', {
|
98
|
+
'SubSystem': 1, # console executable
|
99
|
+
}],
|
100
|
+
],
|
101
|
+
},
|
102
|
+
},
|
103
|
+
'conditions': [
|
104
|
+
['OS == "win"', {
|
105
|
+
'msvs_cygwin_shell': 0, # prevent actions from trying to use cygwin
|
106
|
+
'defines': [
|
107
|
+
'WIN32',
|
108
|
+
# we don't really want VC++ warning us about
|
109
|
+
# how dangerous C functions are...
|
110
|
+
'_CRT_SECURE_NO_DEPRECATE',
|
111
|
+
# ... or that C implementations shouldn't use
|
112
|
+
# POSIX names
|
113
|
+
'_CRT_NONSTDC_NO_DEPRECATE',
|
114
|
+
],
|
115
|
+
}],
|
116
|
+
[ 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
|
117
|
+
'variables': {
|
118
|
+
'gcc_version%': '<!(python build/gcc_version.py)>)',
|
119
|
+
},
|
120
|
+
'cflags': [ '-Wall' ],
|
121
|
+
'cflags_cc': [ '-fno-rtti', '-fno-exceptions' ],
|
122
|
+
'conditions': [
|
123
|
+
[ 'host_arch != target_arch and target_arch=="ia32"', {
|
124
|
+
'cflags': [ '-m32' ],
|
125
|
+
'ldflags': [ '-m32' ],
|
126
|
+
}],
|
127
|
+
[ 'OS=="linux"', {
|
128
|
+
'cflags': [ '-ansi' ],
|
129
|
+
}],
|
130
|
+
[ 'OS=="solaris"', {
|
131
|
+
'cflags': [ '-pthreads' ],
|
132
|
+
'ldflags': [ '-pthreads' ],
|
133
|
+
}, {
|
134
|
+
'cflags': [ '-pthread' ],
|
135
|
+
'ldflags': [ '-pthread' ],
|
136
|
+
}],
|
137
|
+
[ 'visibility=="hidden" and gcc_version >= "4.0.0"', {
|
138
|
+
'cflags': [ '-fvisibility=hidden' ],
|
139
|
+
}],
|
140
|
+
],
|
141
|
+
}],
|
142
|
+
['OS=="mac"', {
|
143
|
+
'xcode_settings': {
|
144
|
+
'ALWAYS_SEARCH_USER_PATHS': 'NO',
|
145
|
+
'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks
|
146
|
+
'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic
|
147
|
+
# (Equivalent to -fPIC)
|
148
|
+
'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions
|
149
|
+
'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti
|
150
|
+
'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings
|
151
|
+
# GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
|
152
|
+
'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
|
153
|
+
'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden
|
154
|
+
'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics
|
155
|
+
'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES', # -Wnewline-eof
|
156
|
+
'PREBINDING': 'NO', # No -Wl,-prebind
|
157
|
+
'USE_HEADERMAP': 'NO',
|
158
|
+
'OTHER_CFLAGS': [
|
159
|
+
'-fno-strict-aliasing',
|
160
|
+
],
|
161
|
+
'WARNING_CFLAGS': [
|
162
|
+
'-Wall',
|
163
|
+
'-Wendif-labels',
|
164
|
+
'-W',
|
165
|
+
'-Wno-unused-parameter',
|
166
|
+
],
|
167
|
+
},
|
168
|
+
'target_conditions': [
|
169
|
+
['_type!="static_library"', {
|
170
|
+
'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']},
|
171
|
+
}],
|
172
|
+
],
|
173
|
+
}],
|
174
|
+
],
|
175
|
+
},
|
176
|
+
}
|