From f1a19e6d3491938391e63daec3189b4d82bd736c Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Wed, 4 Apr 2012 05:20:27 +0200 Subject: [PATCH] unix: move prepare code from core.c to prepare.c --- config-unix.mk | 1 + src/unix/core.c | 47 ------------------------------- src/unix/prepare.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++ uv.gyp | 1 + 4 files changed, 71 insertions(+), 47 deletions(-) create mode 100644 src/unix/prepare.c diff --git a/config-unix.mk b/config-unix.mk index c28dda4a..16e5e825 100644 --- a/config-unix.mk +++ b/config-unix.mk @@ -34,6 +34,7 @@ OBJS += src/unix/dl.o OBJS += src/unix/error.o OBJS += src/unix/fs.o OBJS += src/unix/pipe.o +OBJS += src/unix/prepare.o OBJS += src/unix/process.o OBJS += src/unix/stream.o OBJS += src/unix/tcp.o diff --git a/src/unix/core.c b/src/unix/core.c index 9832e81a..3c176abf 100644 --- a/src/unix/core.c +++ b/src/unix/core.c @@ -338,53 +338,6 @@ void uv__req_init(uv_loop_t* loop, uv_req_t* req) { } -static void uv__prepare(EV_P_ ev_prepare* w, int revents) { - uv_prepare_t* prepare = container_of(w, uv_prepare_t, prepare_watcher); - - if (prepare->prepare_cb) { - prepare->prepare_cb(prepare, 0); - } -} - - -int uv_prepare_init(uv_loop_t* loop, uv_prepare_t* prepare) { - uv__handle_init(loop, (uv_handle_t*)prepare, UV_PREPARE); - loop->counters.prepare_init++; - - ev_prepare_init(&prepare->prepare_watcher, uv__prepare); - prepare->prepare_cb = NULL; - - return 0; -} - - -int uv_prepare_start(uv_prepare_t* prepare, uv_prepare_cb cb) { - int was_active = ev_is_active(&prepare->prepare_watcher); - - prepare->prepare_cb = cb; - - ev_prepare_start(prepare->loop->ev, &prepare->prepare_watcher); - - if (!was_active) { - ev_unref(prepare->loop->ev); - } - - return 0; -} - - -int uv_prepare_stop(uv_prepare_t* prepare) { - int was_active = ev_is_active(&prepare->prepare_watcher); - - ev_prepare_stop(prepare->loop->ev, &prepare->prepare_watcher); - - if (was_active) { - ev_ref(prepare->loop->ev); - } - return 0; -} - - static void uv__check(EV_P_ ev_check* w, int revents) { uv_check_t* check = container_of(w, uv_check_t, check_watcher); diff --git a/src/unix/prepare.c b/src/unix/prepare.c new file mode 100644 index 00000000..52417a5e --- /dev/null +++ b/src/unix/prepare.c @@ -0,0 +1,69 @@ +/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include "uv.h" +#include "internal.h" + + +static void uv__prepare(EV_P_ ev_prepare* w, int revents) { + uv_prepare_t* prepare = container_of(w, uv_prepare_t, prepare_watcher); + + if (prepare->prepare_cb) { + prepare->prepare_cb(prepare, 0); + } +} + + +int uv_prepare_init(uv_loop_t* loop, uv_prepare_t* prepare) { + uv__handle_init(loop, (uv_handle_t*)prepare, UV_PREPARE); + loop->counters.prepare_init++; + + ev_prepare_init(&prepare->prepare_watcher, uv__prepare); + prepare->prepare_cb = NULL; + + return 0; +} + + +int uv_prepare_start(uv_prepare_t* prepare, uv_prepare_cb cb) { + int was_active = ev_is_active(&prepare->prepare_watcher); + + prepare->prepare_cb = cb; + + ev_prepare_start(prepare->loop->ev, &prepare->prepare_watcher); + + if (!was_active) { + ev_unref(prepare->loop->ev); + } + + return 0; +} + + +int uv_prepare_stop(uv_prepare_t* prepare) { + int was_active = ev_is_active(&prepare->prepare_watcher); + + ev_prepare_stop(prepare->loop->ev, &prepare->prepare_watcher); + + if (was_active) { + ev_ref(prepare->loop->ev); + } + return 0; +} diff --git a/uv.gyp b/uv.gyp index 6e23b477..12a1d729 100644 --- a/uv.gyp +++ b/uv.gyp @@ -195,6 +195,7 @@ 'src/unix/fs.c', 'src/unix/internal.h', 'src/unix/pipe.c', + 'src/unix/prepare.c', 'src/unix/process.c', 'src/unix/stream.c', 'src/unix/tcp.c',