Lines Matching defs:handle
37 uv_signal_t* handle;
45 static int uv__signal_start(uv_signal_t* handle,
51 static void uv__signal_stop(uv_signal_t* handle);
187 uv_signal_t* handle;
193 handle = RB_NFIND(uv__signal_tree_s, &uv__signal_tree, &lookup);
195 if (handle != NULL && handle->signum == signum)
196 return handle;
204 uv_signal_t* handle;
215 for (handle = uv__signal_first_handle(signum);
216 handle != NULL && handle->signum == signum;
217 handle = RB_NEXT(uv__signal_tree_s, &uv__signal_tree, handle)) {
221 msg.handle = handle;
228 r = write(handle->loop->signal_pipefd[1], &msg, sizeof msg);
235 handle->caught_signals++;
312 uv_handle_t* handle = uv__queue_data(q, uv_handle_t, handle_queue);
315 if (handle->type != UV_SIGNAL)
318 sh = (uv_signal_t*) handle;
333 * It's safe to use uv__queue_foreach here because the handles and the handle
337 uv_handle_t* handle = uv__queue_data(q, uv_handle_t, handle_queue);
339 if (handle->type == UV_SIGNAL)
340 uv__signal_stop((uv_signal_t*) handle);
355 int uv_signal_init(uv_loop_t* loop, uv_signal_t* handle) {
362 uv__handle_init(loop, (uv_handle_t*) handle, UV_SIGNAL);
363 handle->signum = 0;
364 handle->caught_signals = 0;
365 handle->dispatched_signals = 0;
371 void uv__signal_close(uv_signal_t* handle) {
372 uv__signal_stop(handle);
376 int uv_signal_start(uv_signal_t* handle, uv_signal_cb signal_cb, int signum) {
377 return uv__signal_start(handle, signal_cb, signum, 0);
381 int uv_signal_start_oneshot(uv_signal_t* handle,
384 return uv__signal_start(handle, signal_cb, signum, 1);
388 static int uv__signal_start(uv_signal_t* handle,
396 assert(!uv__is_closing(handle));
408 * time frame that handle->signum == 0.
410 if (signum == handle->signum) {
411 handle->signal_cb = signal_cb;
416 if (handle->signum != 0) {
417 uv__signal_stop(handle);
437 handle->signum = signum;
439 handle->flags |= UV_SIGNAL_ONE_SHOT;
441 RB_INSERT(uv__signal_tree_s, &uv__signal_tree, handle);
445 handle->signal_cb = signal_cb;
446 uv__handle_start(handle);
456 uv_signal_t* handle;
499 handle = msg->handle;
501 if (msg->signum == handle->signum) {
502 assert(!(handle->flags & UV_HANDLE_CLOSING));
503 handle->signal_cb(handle, handle->signum);
506 handle->dispatched_signals++;
508 if (handle->flags & UV_SIGNAL_ONE_SHOT)
509 uv__signal_stop(handle);
555 int uv_signal_stop(uv_signal_t* handle) {
556 assert(!uv__is_closing(handle));
557 uv__signal_stop(handle);
562 static void uv__signal_stop(uv_signal_t* handle) {
571 if (handle->signum == 0)
576 removed_handle = RB_REMOVE(uv__signal_tree_s, &uv__signal_tree, handle);
577 assert(removed_handle == handle);
583 first_handle = uv__signal_first_handle(handle->signum);
585 uv__signal_unregister_handler(handle->signum);
587 rem_oneshot = handle->flags & UV_SIGNAL_ONE_SHOT;
590 ret = uv__signal_register_handler(handle->signum, 1);
598 handle->signum = 0;
599 uv__handle_stop(handle);