From f63e073be24c05180c634df7d8d35195b6e942df Mon Sep 17 00:00:00 2001 From: Andrius Bentkus Date: Tue, 24 Jun 2014 13:18:15 +0300 Subject: [PATCH] common: use common uv__count_bufs code Until now it was reimplemented in 2 different places (unix, win). --- src/unix/stream.c | 20 ++++---------------- src/uv-common.c | 13 +++++++++++++ src/uv-common.h | 2 ++ src/win/pipe.c | 4 ++-- src/win/stream-inl.h | 11 ----------- src/win/tcp.c | 2 +- src/win/udp.c | 2 +- 7 files changed, 23 insertions(+), 31 deletions(-) diff --git a/src/unix/stream.c b/src/unix/stream.c index 43334f0e..85e958bd 100644 --- a/src/unix/stream.c +++ b/src/unix/stream.c @@ -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_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, uv_stream_t* stream, uv_handle_type type) { @@ -660,8 +648,8 @@ static size_t uv__write_req_size(uv_write_t* req) { size_t size; assert(req->bufs != NULL); - size = uv_count_bufs(req->bufs + req->write_index, - req->nbufs - req->write_index); + size = uv__count_bufs(req->bufs + req->write_index, + req->nbufs - req->write_index); assert(req->handle->write_queue_size >= size); return size; @@ -1327,7 +1315,7 @@ int uv_write2(uv_write_t* req, memcpy(req->bufs, bufs, nbufs * sizeof(bufs[0])); req->nbufs = nbufs; 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. */ QUEUE_INSERT_TAIL(&stream->write_queue, &req->queue); @@ -1395,7 +1383,7 @@ int uv_try_write(uv_stream_t* stream, return r; /* Remove not written bytes from write queue size */ - written = uv_count_bufs(bufs, nbufs); + written = uv__count_bufs(bufs, nbufs); if (req.bufs != NULL) req_size = uv__write_req_size(&req); else diff --git a/src/uv-common.c b/src/uv-common.c index d9553c91..e3255031 100644 --- a/src/uv-common.c +++ b/src/uv-common.c @@ -446,6 +446,19 @@ int uv__getaddrinfo_translate_error(int sys_err) { 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; diff --git a/src/uv-common.h b/src/uv-common.h index 97d1c5d6..be8991d6 100644 --- a/src/uv-common.h +++ b/src/uv-common.h @@ -99,6 +99,8 @@ void uv__work_submit(uv_loop_t* loop, 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) \ (QUEUE_EMPTY(&(loop)->active_reqs) == 0) diff --git a/src/win/pipe.c b/src/win/pipe.c index 2fcedde3..0f03a59d 100644 --- a/src/win/pipe.c +++ b/src/win/pipe.c @@ -1254,7 +1254,7 @@ static int uv_pipe_write_impl(uv_loop_t* loop, } /* 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; } else if (handle->flags & UV_HANDLE_BLOCKING_WRITES) { /* 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; } else { /* 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; } diff --git a/src/win/stream-inl.h b/src/win/stream-inl.h index e4bf0863..97a6b90b 100644 --- a/src/win/stream-inl.h +++ b/src/win/stream-inl.h @@ -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_ */ diff --git a/src/win/tcp.c b/src/win/tcp.c index ccd7a11e..27ad8dfd 100644 --- a/src/win/tcp.c +++ b/src/win/tcp.c @@ -839,7 +839,7 @@ int uv_tcp_write(uv_loop_t* loop, uv_insert_pending_req(loop, (uv_req_t*) req); } else if (UV_SUCCEEDED_WITH_IOCP(result == 0)) { /* 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->write_reqs_pending++; REGISTER_HANDLE_REQ(loop, handle, req); diff --git a/src/win/udp.c b/src/win/udp.c index 86589045..c445e33d 100644 --- a/src/win/udp.c +++ b/src/win/udp.c @@ -400,7 +400,7 @@ static int uv__send(uv_udp_send_t* req, uv_insert_pending_req(loop, (uv_req_t*)req); } else if (UV_SUCCEEDED_WITH_IOCP(result == 0)) { /* Request queued by the kernel. */ - req->queued_bytes = uv_count_bufs(bufs, nbufs); + req->queued_bytes = uv__count_bufs(bufs, nbufs); handle->reqs_pending++; REGISTER_HANDLE_REQ(loop, handle, req); } else {