ext/libuv/src/uv-common.c in libuv-1.0.0 vs ext/libuv/src/uv-common.c in libuv-1.0.2

- old
+ new

@@ -65,10 +65,15 @@ } #undef XX +size_t uv_loop_size(void) { + return sizeof(uv_loop_t); +} + + uv_buf_t uv_buf_init(char* base, unsigned int len) { uv_buf_t buf; buf.base = base; buf.len = len; return buf; @@ -226,10 +231,30 @@ return uv__udp_send(req, handle, bufs, nbufs, addr, addrlen, send_cb); } +int uv_udp_try_send(uv_udp_t* handle, + const uv_buf_t bufs[], + unsigned int nbufs, + const struct sockaddr* addr) { + unsigned int addrlen; + + if (handle->type != UV_UDP) + return UV_EINVAL; + + if (addr->sa_family == AF_INET) + addrlen = sizeof(struct sockaddr_in); + else if (addr->sa_family == AF_INET6) + addrlen = sizeof(struct sockaddr_in6); + else + return UV_EINVAL; + + return uv__udp_try_send(handle, bufs, nbufs, addr, addrlen); +} + + int uv_udp_recv_start(uv_udp_t* handle, uv_alloc_cb alloc_cb, uv_udp_recv_cb recv_cb) { if (handle->type != UV_UDP || alloc_cb == NULL || recv_cb == NULL) return UV_EINVAL; @@ -431,16 +456,29 @@ #endif #if defined(EAI_SOCKTYPE) case EAI_SOCKTYPE: return UV_EAI_SOCKTYPE; #endif #if defined(EAI_SYSTEM) - case EAI_SYSTEM: return UV_EAI_SYSTEM; + case EAI_SYSTEM: return -errno; #endif } assert(!"unknown EAI_* error code"); abort(); return 0; /* Pacify compiler. */ } + + +size_t uv__count_bufs(const uv_buf_t bufs[], unsigned int nbufs) { + unsigned int i; + size_t bytes; + + bytes = 0; + for (i = 0; i < nbufs; i++) + bytes += (size_t) bufs[i].len; + + return bytes; +} + int uv_fs_event_getpath(uv_fs_event_t* handle, char* buf, size_t* len) { size_t required_len; if (!uv__is_active(handle)) {