From eb987bcc5c8743876f86c23d3658559dce2fc33a Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Sat, 10 Sep 2011 01:40:47 +0200 Subject: [PATCH] unix: deduplicate stream init logic Move shared init logic into uv__stream_init(). --- src/unix/internal.h | 2 ++ src/unix/pipe.c | 19 ++----------------- src/unix/stream.c | 28 ++++++++++++++++++++++++++++ src/unix/tcp.c | 22 +--------------------- 4 files changed, 33 insertions(+), 38 deletions(-) diff --git a/src/unix/internal.h b/src/unix/internal.h index 024a9b37..f5677c76 100644 --- a/src/unix/internal.h +++ b/src/unix/internal.h @@ -80,6 +80,8 @@ uv_err_t uv_err_new_artificial(uv_loop_t* loop, int code); void uv_fatal_error(const int errorno, const char* syscall); /* stream */ +void uv__stream_init(uv_loop_t* loop, uv_stream_t* stream, + uv_handle_type type); int uv__stream_open(uv_stream_t*, int fd, int flags); void uv__stream_io(EV_P_ ev_io* watcher, int revents); void uv__server_io(EV_P_ ev_io* watcher, int revents); diff --git a/src/unix/pipe.c b/src/unix/pipe.c index 6f1d8168..fb420dd5 100644 --- a/src/unix/pipe.c +++ b/src/unix/pipe.c @@ -30,24 +30,9 @@ #include int uv_pipe_init(uv_loop_t* loop, uv_pipe_t* handle) { - memset(handle, 0, sizeof *handle); - - uv__handle_init(loop, (uv_handle_t*)handle, UV_NAMED_PIPE); + uv__stream_init(loop, (uv_stream_t*)handle, UV_NAMED_PIPE); loop->counters.pipe_init++; - - handle->type = UV_NAMED_PIPE; - handle->pipe_fname = NULL; /* Only set by listener. */ - - ev_init(&handle->write_watcher, uv__stream_io); - ev_init(&handle->read_watcher, uv__stream_io); - handle->write_watcher.data = handle; - handle->read_watcher.data = handle; - handle->accepted_fd = -1; - handle->fd = -1; - - ngx_queue_init(&handle->write_completed_queue); - ngx_queue_init(&handle->write_queue); - + handle->pipe_fname = NULL; return 0; } diff --git a/src/unix/stream.c b/src/unix/stream.c index 0b5a2a4c..b48f216a 100644 --- a/src/unix/stream.c +++ b/src/unix/stream.c @@ -47,6 +47,34 @@ static size_t uv__buf_count(uv_buf_t bufs[], int bufcnt) { } +void uv__stream_init(uv_loop_t* loop, + uv_stream_t* stream, + uv_handle_type type) { + uv__handle_init(loop, (uv_handle_t*)stream, type); + + stream->alloc_cb = NULL; + stream->close_cb = NULL; + stream->connection_cb = NULL; + stream->connect_req = NULL; + stream->accepted_fd = -1; + stream->fd = -1; + stream->delayed_error = 0; + ngx_queue_init(&stream->write_queue); + ngx_queue_init(&stream->write_completed_queue); + stream->write_queue_size = 0; + + ev_init(&stream->read_watcher, uv__stream_io); + stream->read_watcher.data = stream; + + ev_init(&stream->write_watcher, uv__stream_io); + stream->write_watcher.data = stream; + + assert(ngx_queue_empty(&stream->write_queue)); + assert(ngx_queue_empty(&stream->write_completed_queue)); + assert(stream->write_queue_size == 0); +} + + int uv__stream_open(uv_stream_t* stream, int fd, int flags) { socklen_t yes; diff --git a/src/unix/tcp.c b/src/unix/tcp.c index fb402e7e..9f14c1b6 100644 --- a/src/unix/tcp.c +++ b/src/unix/tcp.c @@ -27,28 +27,8 @@ int uv_tcp_init(uv_loop_t* loop, uv_tcp_t* tcp) { - uv__handle_init(loop, (uv_handle_t*)tcp, UV_TCP); + uv__stream_init(loop, (uv_stream_t*)tcp, UV_TCP); loop->counters.tcp_init++; - - tcp->alloc_cb = NULL; - tcp->connect_req = NULL; - tcp->accepted_fd = -1; - tcp->fd = -1; - tcp->delayed_error = 0; - ngx_queue_init(&tcp->write_queue); - ngx_queue_init(&tcp->write_completed_queue); - tcp->write_queue_size = 0; - - ev_init(&tcp->read_watcher, uv__stream_io); - tcp->read_watcher.data = tcp; - - ev_init(&tcp->write_watcher, uv__stream_io); - tcp->write_watcher.data = tcp; - - assert(ngx_queue_empty(&tcp->write_queue)); - assert(ngx_queue_empty(&tcp->write_completed_queue)); - assert(tcp->write_queue_size == 0); - return 0; }