diff options
author | Fedor Indutny <fedor@indutny.com> | 2014-06-27 04:44:36 +0400 |
---|---|---|
committer | Fedor Indutny <fedor@indutny.com> | 2014-06-27 04:44:36 +0400 |
commit | 1a1b1a75347a4d68aedefb71b8bacce050b1768b (patch) | |
tree | 91c44f684db1e8aacc879e2a9cededbb126eba8d /deps/uv/include/uv.h | |
parent | 35b9580cd84452dd76aa19715479a47074d1761b (diff) | |
download | android-node-v8-1a1b1a75347a4d68aedefb71b8bacce050b1768b.tar.gz android-node-v8-1a1b1a75347a4d68aedefb71b8bacce050b1768b.tar.bz2 android-node-v8-1a1b1a75347a4d68aedefb71b8bacce050b1768b.zip |
deps: update libuv to v0.11.26
Diffstat (limited to 'deps/uv/include/uv.h')
-rw-r--r-- | deps/uv/include/uv.h | 73 |
1 files changed, 64 insertions, 9 deletions
diff --git a/deps/uv/include/uv.h b/deps/uv/include/uv.h index d4566268b9..ef2f840d76 100644 --- a/deps/uv/include/uv.h +++ b/deps/uv/include/uv.h @@ -83,7 +83,6 @@ extern "C" { XX(EAI_PROTOCOL, "resolved protocol is unknown") \ XX(EAI_SERVICE, "service not available for socket type") \ XX(EAI_SOCKTYPE, "socket type not supported") \ - XX(EAI_SYSTEM, "system error") \ XX(EALREADY, "connection already in progress") \ XX(EBADF, "bad file descriptor") \ XX(EBUSY, "resource busy or locked") \ @@ -167,6 +166,7 @@ extern "C" { XX(FS, fs) \ XX(WORK, work) \ XX(GETADDRINFO, getaddrinfo) \ + XX(GETNAMEINFO, getnameinfo) \ typedef enum { #define XX(code, _) UV_ ## code = UV__ ## code, @@ -216,6 +216,7 @@ typedef struct uv_signal_s uv_signal_t; /* Request types. */ typedef struct uv_req_s uv_req_t; typedef struct uv_getaddrinfo_s uv_getaddrinfo_t; +typedef struct uv_getnameinfo_s uv_getnameinfo_t; typedef struct uv_shutdown_s uv_shutdown_t; typedef struct uv_write_s uv_write_t; typedef struct uv_connect_s uv_connect_t; @@ -288,6 +289,11 @@ UV_EXTERN uv_loop_t* uv_loop_new(void); UV_EXTERN void uv_loop_delete(uv_loop_t*); /* + * Returns size of the loop struct, useful for dynamic lookup with FFI + */ +UV_EXTERN size_t uv_loop_size(void); + +/* * This function runs the event loop. It will act differently depending on the * specified mode: * - UV_RUN_DEFAULT: Runs the event loop until the reference count drops to @@ -297,7 +303,9 @@ UV_EXTERN void uv_loop_delete(uv_loop_t*); * or requests left), or non-zero if more events are expected (meaning you * should run the event loop again sometime in the future). * - UV_RUN_NOWAIT: Poll for new events once but don't block if there are no - * pending events. + * pending events. Returns zero when done (no active handles + * or requests left), or non-zero if more events are expected (meaning you + * should run the event loop again sometime in the future). */ UV_EXTERN int uv_run(uv_loop_t*, uv_run_mode mode); @@ -419,6 +427,10 @@ typedef void (*uv_after_work_cb)(uv_work_t* req, int status); typedef void (*uv_getaddrinfo_cb)(uv_getaddrinfo_t* req, int status, struct addrinfo* res); +typedef void (*uv_getnameinfo_cb)(uv_getnameinfo_t* req, + int status, + const char* hostname, + const char* service); typedef struct { long tv_sec; @@ -1451,6 +1463,33 @@ UV_EXTERN int uv_getaddrinfo(uv_loop_t* loop, UV_EXTERN void uv_freeaddrinfo(struct addrinfo* ai); +/* +* uv_getnameinfo_t is a subclass of uv_req_t +* +* Request object for uv_getnameinfo. +*/ +struct uv_getnameinfo_s { + UV_REQ_FIELDS + /* read-only */ + uv_loop_t* loop; + UV_GETNAMEINFO_PRIVATE_FIELDS +}; + +/* + * Asynchronous getnameinfo. + * + * Returns 0 on success or an error code < 0 on failure. + * + * If successful, your callback gets called sometime in the future with the + * lookup result. + */ +UV_EXTERN int uv_getnameinfo(uv_loop_t* loop, + uv_getnameinfo_t* req, + uv_getnameinfo_cb getnameinfo_cb, + const struct sockaddr* addr, + int flags); + + /* uv_spawn() options */ typedef enum { UV_IGNORE = 0x00, @@ -2124,7 +2163,7 @@ UV_EXTERN int uv_dlsym(uv_lib_t* lib, const char* name, void** ptr); /* * Returns the last uv_dlopen() or uv_dlsym() error message. */ -UV_EXTERN const char* uv_dlerror(uv_lib_t* lib); +UV_EXTERN const char* uv_dlerror(const uv_lib_t* lib); /* * The mutex functions return 0 on success or an error code < 0 @@ -2164,6 +2203,19 @@ UV_EXTERN int uv_cond_init(uv_cond_t* cond); UV_EXTERN void uv_cond_destroy(uv_cond_t* cond); UV_EXTERN void uv_cond_signal(uv_cond_t* cond); UV_EXTERN void uv_cond_broadcast(uv_cond_t* cond); + +/* + * Same goes for the barrier functions. Note that uv_barrier_wait() returns + * a value > 0 to an arbitrarily chosen "serializer" thread to facilitate + * cleanup, i.e.: + * + * if (uv_barrier_wait(&barrier) > 0) + * uv_barrier_destroy(&barrier); + */ +UV_EXTERN int uv_barrier_init(uv_barrier_t* barrier, unsigned int count); +UV_EXTERN void uv_barrier_destroy(uv_barrier_t* barrier); +UV_EXTERN int uv_barrier_wait(uv_barrier_t* barrier); + /* Waits on a condition variable without a timeout. * * Note: @@ -2182,10 +2234,6 @@ UV_EXTERN void uv_cond_wait(uv_cond_t* cond, uv_mutex_t* mutex); UV_EXTERN int uv_cond_timedwait(uv_cond_t* cond, uv_mutex_t* mutex, uint64_t timeout); -UV_EXTERN int uv_barrier_init(uv_barrier_t* barrier, unsigned int count); -UV_EXTERN void uv_barrier_destroy(uv_barrier_t* barrier); -UV_EXTERN void uv_barrier_wait(uv_barrier_t* barrier); - /* Runs a function once and only once. Concurrent calls to uv_once() with the * same guard will block all callers except one (it's unspecified which one). * The guard should be initialized statically with the UV_ONCE_INIT macro. @@ -2204,8 +2252,14 @@ UV_EXTERN void uv_key_delete(uv_key_t* key); UV_EXTERN void* uv_key_get(uv_key_t* key); UV_EXTERN void uv_key_set(uv_key_t* key, void* value); -UV_EXTERN int uv_thread_create(uv_thread_t *tid, - void (*entry)(void *arg), void *arg); +/* + * Callback that is invoked to initialize thread execution. + * + * `arg` is the same value that was passed to uv_thread_create(). + */ +typedef void (*uv_thread_cb)(void* arg); + +UV_EXTERN int uv_thread_create(uv_thread_t* tid, uv_thread_cb entry, void* arg); UV_EXTERN unsigned long uv_thread_self(void); UV_EXTERN int uv_thread_join(uv_thread_t *tid); @@ -2246,6 +2300,7 @@ struct uv_loop_s { #undef UV_ASYNC_PRIVATE_FIELDS #undef UV_TIMER_PRIVATE_FIELDS #undef UV_GETADDRINFO_PRIVATE_FIELDS +#undef UV_GETNAMEINFO_PRIVATE_FIELDS #undef UV_FS_REQ_PRIVATE_FIELDS #undef UV_WORK_PRIVATE_FIELDS #undef UV_FS_EVENT_PRIVATE_FIELDS |