Lines Matching defs:handle

26 #include "handle-inl.h"
37 int uv__signal_start(uv_signal_t* handle,
82 uv_signal_t* handle;
92 for (handle = RB_NFIND(uv_signal_tree_s, &uv__signal_tree, &lookup);
93 handle != NULL && handle->signum == signum;
94 handle = RB_NEXT(uv_signal_tree_s, &uv__signal_tree, handle)) {
96 (volatile LONG*) &handle->pending_signum, signum);
98 if (handle->flags & UV_SIGNAL_ONE_SHOT_DISPATCHED)
102 POST_COMPLETION_FOR_REQ(handle->loop, &handle->signal_req);
106 if (handle->flags & UV_SIGNAL_ONE_SHOT)
107 handle->flags |= UV_SIGNAL_ONE_SHOT_DISPATCHED;
141 /* We don't handle these. */
147 int uv_signal_init(uv_loop_t* loop, uv_signal_t* handle) {
148 uv__handle_init(loop, (uv_handle_t*) handle, UV_SIGNAL);
149 handle->pending_signum = 0;
150 handle->signum = 0;
151 handle->signal_cb = NULL;
153 UV_REQ_INIT(&handle->signal_req, UV_SIGNAL_REQ);
154 handle->signal_req.data = handle;
160 int uv_signal_stop(uv_signal_t* handle) {
164 if (handle->signum == 0)
169 removed_handle = RB_REMOVE(uv_signal_tree_s, &uv__signal_tree, handle);
170 assert(removed_handle == handle);
174 handle->signum = 0;
175 uv__handle_stop(handle);
181 int uv_signal_start(uv_signal_t* handle, uv_signal_cb signal_cb, int signum) {
182 return uv__signal_start(handle, signal_cb, signum, 0);
186 int uv_signal_start_oneshot(uv_signal_t* handle,
189 return uv__signal_start(handle, signal_cb, signum, 1);
193 int uv__signal_start(uv_signal_t* handle,
204 * frame that handle->signum == 0. */
205 if (signum == handle->signum) {
206 handle->signal_cb = signal_cb;
211 if (handle->signum != 0) {
212 int r = uv_signal_stop(handle);
219 handle->signum = signum;
221 handle->flags |= UV_SIGNAL_ONE_SHOT;
223 RB_INSERT(uv_signal_tree_s, &uv__signal_tree, handle);
227 handle->signal_cb = signal_cb;
228 uv__handle_start(handle);
234 void uv__process_signal_req(uv_loop_t* loop, uv_signal_t* handle,
238 assert(handle->type == UV_SIGNAL);
242 (volatile LONG*) &handle->pending_signum, 0);
248 if (dispatched_signum == handle->signum)
249 handle->signal_cb(handle, dispatched_signum);
251 if (handle->flags & UV_SIGNAL_ONE_SHOT)
252 uv_signal_stop(handle);
254 if (handle->flags & UV_HANDLE_CLOSING) {
256 assert(handle->signum == 0);
257 uv__want_endgame(loop, (uv_handle_t*) handle);
262 void uv__signal_close(uv_loop_t* loop, uv_signal_t* handle) {
263 uv_signal_stop(handle);
264 uv__handle_closing(handle);
266 if (handle->pending_signum == 0) {
267 uv__want_endgame(loop, (uv_handle_t*) handle);
272 void uv__signal_endgame(uv_loop_t* loop, uv_signal_t* handle) {
273 assert(handle->flags & UV_HANDLE_CLOSING);
274 assert(!(handle->flags & UV_HANDLE_CLOSED));
276 assert(handle->signum == 0);
277 assert(handle->pending_signum == 0);
279 handle->flags |= UV_HANDLE_CLOSED;
281 uv__handle_close(handle);