common: use common uv__count_bufs code
Until now it was reimplemented in 2 different places (unix, win).
This commit is contained in:
parent
d17bfc617e
commit
f63e073be2
@ -63,18 +63,6 @@ static void uv__stream_io(uv_loop_t* loop, uv__io_t* w, unsigned int events);
|
|||||||
static size_t uv__write_req_size(uv_write_t* req);
|
static size_t uv__write_req_size(uv_write_t* req);
|
||||||
|
|
||||||
|
|
||||||
static 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 += bufs[i].len;
|
|
||||||
|
|
||||||
return bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void uv__stream_init(uv_loop_t* loop,
|
void uv__stream_init(uv_loop_t* loop,
|
||||||
uv_stream_t* stream,
|
uv_stream_t* stream,
|
||||||
uv_handle_type type) {
|
uv_handle_type type) {
|
||||||
@ -660,8 +648,8 @@ static size_t uv__write_req_size(uv_write_t* req) {
|
|||||||
size_t size;
|
size_t size;
|
||||||
|
|
||||||
assert(req->bufs != NULL);
|
assert(req->bufs != NULL);
|
||||||
size = uv_count_bufs(req->bufs + req->write_index,
|
size = uv__count_bufs(req->bufs + req->write_index,
|
||||||
req->nbufs - req->write_index);
|
req->nbufs - req->write_index);
|
||||||
assert(req->handle->write_queue_size >= size);
|
assert(req->handle->write_queue_size >= size);
|
||||||
|
|
||||||
return size;
|
return size;
|
||||||
@ -1327,7 +1315,7 @@ int uv_write2(uv_write_t* req,
|
|||||||
memcpy(req->bufs, bufs, nbufs * sizeof(bufs[0]));
|
memcpy(req->bufs, bufs, nbufs * sizeof(bufs[0]));
|
||||||
req->nbufs = nbufs;
|
req->nbufs = nbufs;
|
||||||
req->write_index = 0;
|
req->write_index = 0;
|
||||||
stream->write_queue_size += uv_count_bufs(bufs, nbufs);
|
stream->write_queue_size += uv__count_bufs(bufs, nbufs);
|
||||||
|
|
||||||
/* Append the request to write_queue. */
|
/* Append the request to write_queue. */
|
||||||
QUEUE_INSERT_TAIL(&stream->write_queue, &req->queue);
|
QUEUE_INSERT_TAIL(&stream->write_queue, &req->queue);
|
||||||
@ -1395,7 +1383,7 @@ int uv_try_write(uv_stream_t* stream,
|
|||||||
return r;
|
return r;
|
||||||
|
|
||||||
/* Remove not written bytes from write queue size */
|
/* Remove not written bytes from write queue size */
|
||||||
written = uv_count_bufs(bufs, nbufs);
|
written = uv__count_bufs(bufs, nbufs);
|
||||||
if (req.bufs != NULL)
|
if (req.bufs != NULL)
|
||||||
req_size = uv__write_req_size(&req);
|
req_size = uv__write_req_size(&req);
|
||||||
else
|
else
|
||||||
|
|||||||
@ -446,6 +446,19 @@ int uv__getaddrinfo_translate_error(int sys_err) {
|
|||||||
return 0; /* Pacify compiler. */
|
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) {
|
int uv_fs_event_getpath(uv_fs_event_t* handle, char* buf, size_t* len) {
|
||||||
size_t required_len;
|
size_t required_len;
|
||||||
|
|
||||||
|
|||||||
@ -99,6 +99,8 @@ void uv__work_submit(uv_loop_t* loop,
|
|||||||
|
|
||||||
void uv__work_done(uv_async_t* handle);
|
void uv__work_done(uv_async_t* handle);
|
||||||
|
|
||||||
|
size_t uv__count_bufs(const uv_buf_t bufs[], unsigned int nbufs);
|
||||||
|
|
||||||
#define uv__has_active_reqs(loop) \
|
#define uv__has_active_reqs(loop) \
|
||||||
(QUEUE_EMPTY(&(loop)->active_reqs) == 0)
|
(QUEUE_EMPTY(&(loop)->active_reqs) == 0)
|
||||||
|
|
||||||
|
|||||||
@ -1254,7 +1254,7 @@ static int uv_pipe_write_impl(uv_loop_t* loop,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Request queued by the kernel. */
|
/* Request queued by the kernel. */
|
||||||
req->queued_bytes = uv_count_bufs(bufs, nbufs);
|
req->queued_bytes = uv__count_bufs(bufs, nbufs);
|
||||||
handle->write_queue_size += req->queued_bytes;
|
handle->write_queue_size += req->queued_bytes;
|
||||||
} else if (handle->flags & UV_HANDLE_BLOCKING_WRITES) {
|
} else if (handle->flags & UV_HANDLE_BLOCKING_WRITES) {
|
||||||
/* Using overlapped IO, but wait for completion before returning */
|
/* Using overlapped IO, but wait for completion before returning */
|
||||||
@ -1311,7 +1311,7 @@ static int uv_pipe_write_impl(uv_loop_t* loop,
|
|||||||
req->queued_bytes = 0;
|
req->queued_bytes = 0;
|
||||||
} else {
|
} else {
|
||||||
/* Request queued by the kernel. */
|
/* Request queued by the kernel. */
|
||||||
req->queued_bytes = uv_count_bufs(bufs, nbufs);
|
req->queued_bytes = uv__count_bufs(bufs, nbufs);
|
||||||
handle->write_queue_size += req->queued_bytes;
|
handle->write_queue_size += req->queued_bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -53,15 +53,4 @@ INLINE static void uv_connection_init(uv_stream_t* handle) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
INLINE static 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* UV_WIN_STREAM_INL_H_ */
|
#endif /* UV_WIN_STREAM_INL_H_ */
|
||||||
|
|||||||
@ -839,7 +839,7 @@ int uv_tcp_write(uv_loop_t* loop,
|
|||||||
uv_insert_pending_req(loop, (uv_req_t*) req);
|
uv_insert_pending_req(loop, (uv_req_t*) req);
|
||||||
} else if (UV_SUCCEEDED_WITH_IOCP(result == 0)) {
|
} else if (UV_SUCCEEDED_WITH_IOCP(result == 0)) {
|
||||||
/* Request queued by the kernel. */
|
/* Request queued by the kernel. */
|
||||||
req->queued_bytes = uv_count_bufs(bufs, nbufs);
|
req->queued_bytes = uv__count_bufs(bufs, nbufs);
|
||||||
handle->reqs_pending++;
|
handle->reqs_pending++;
|
||||||
handle->write_reqs_pending++;
|
handle->write_reqs_pending++;
|
||||||
REGISTER_HANDLE_REQ(loop, handle, req);
|
REGISTER_HANDLE_REQ(loop, handle, req);
|
||||||
|
|||||||
@ -400,7 +400,7 @@ static int uv__send(uv_udp_send_t* req,
|
|||||||
uv_insert_pending_req(loop, (uv_req_t*)req);
|
uv_insert_pending_req(loop, (uv_req_t*)req);
|
||||||
} else if (UV_SUCCEEDED_WITH_IOCP(result == 0)) {
|
} else if (UV_SUCCEEDED_WITH_IOCP(result == 0)) {
|
||||||
/* Request queued by the kernel. */
|
/* Request queued by the kernel. */
|
||||||
req->queued_bytes = uv_count_bufs(bufs, nbufs);
|
req->queued_bytes = uv__count_bufs(bufs, nbufs);
|
||||||
handle->reqs_pending++;
|
handle->reqs_pending++;
|
||||||
REGISTER_HANDLE_REQ(loop, handle, req);
|
REGISTER_HANDLE_REQ(loop, handle, req);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user