Lines Matching refs:lev

160 	struct evconnlistener_event *lev;  in evconnlistener_new()  local
180 lev = mm_calloc(1, sizeof(struct evconnlistener_event)); in evconnlistener_new()
181 if (!lev) in evconnlistener_new()
184 lev->base.ops = &evconnlistener_event_ops; in evconnlistener_new()
185 lev->base.cb = cb; in evconnlistener_new()
186 lev->base.user_data = ptr; in evconnlistener_new()
187 lev->base.flags = flags; in evconnlistener_new()
188 lev->base.refcnt = 1; in evconnlistener_new()
190 lev->base.accept4_flags = 0; in evconnlistener_new()
192 lev->base.accept4_flags |= EVUTIL_SOCK_NONBLOCK; in evconnlistener_new()
194 lev->base.accept4_flags |= EVUTIL_SOCK_CLOEXEC; in evconnlistener_new()
197 EVTHREAD_ALLOC_LOCK(lev->base.lock, EVTHREAD_LOCKTYPE_RECURSIVE); in evconnlistener_new()
200 event_assign(&lev->listener, base, fd, EV_READ|EV_PERSIST, in evconnlistener_new()
201 listener_read_cb, lev); in evconnlistener_new()
204 evconnlistener_enable(&lev->base); in evconnlistener_new()
206 return &lev->base; in evconnlistener_new()
264 evconnlistener_free(struct evconnlistener *lev) in evconnlistener_free() argument
266 LOCK(lev); in evconnlistener_free()
267 lev->cb = NULL; in evconnlistener_free()
268 lev->errorcb = NULL; in evconnlistener_free()
269 if (lev->ops->shutdown) in evconnlistener_free()
270 lev->ops->shutdown(lev); in evconnlistener_free()
271 listener_decref_and_unlock(lev); in evconnlistener_free()
275 event_listener_destroy(struct evconnlistener *lev) in event_listener_destroy() argument
278 EVUTIL_UPCAST(lev, struct evconnlistener_event, base); in event_listener_destroy()
281 if (lev->flags & LEV_OPT_CLOSE_ON_FREE) in event_listener_destroy()
287 evconnlistener_enable(struct evconnlistener *lev) in evconnlistener_enable() argument
290 LOCK(lev); in evconnlistener_enable()
291 lev->enabled = 1; in evconnlistener_enable()
292 if (lev->cb) in evconnlistener_enable()
293 r = lev->ops->enable(lev); in evconnlistener_enable()
296 UNLOCK(lev); in evconnlistener_enable()
301 evconnlistener_disable(struct evconnlistener *lev) in evconnlistener_disable() argument
304 LOCK(lev); in evconnlistener_disable()
305 lev->enabled = 0; in evconnlistener_disable()
306 r = lev->ops->disable(lev); in evconnlistener_disable()
307 UNLOCK(lev); in evconnlistener_disable()
312 event_listener_enable(struct evconnlistener *lev) in event_listener_enable() argument
315 EVUTIL_UPCAST(lev, struct evconnlistener_event, base); in event_listener_enable()
320 event_listener_disable(struct evconnlistener *lev) in event_listener_disable() argument
323 EVUTIL_UPCAST(lev, struct evconnlistener_event, base); in event_listener_disable()
328 evconnlistener_get_fd(struct evconnlistener *lev) in evconnlistener_get_fd() argument
331 LOCK(lev); in evconnlistener_get_fd()
332 fd = lev->ops->getfd(lev); in evconnlistener_get_fd()
333 UNLOCK(lev); in evconnlistener_get_fd()
338 event_listener_getfd(struct evconnlistener *lev) in event_listener_getfd() argument
341 EVUTIL_UPCAST(lev, struct evconnlistener_event, base); in event_listener_getfd()
346 evconnlistener_get_base(struct evconnlistener *lev) in evconnlistener_get_base() argument
349 LOCK(lev); in evconnlistener_get_base()
350 base = lev->ops->getbase(lev); in evconnlistener_get_base()
351 UNLOCK(lev); in evconnlistener_get_base()
356 event_listener_getbase(struct evconnlistener *lev) in event_listener_getbase() argument
359 EVUTIL_UPCAST(lev, struct evconnlistener_event, base); in event_listener_getbase()
364 evconnlistener_set_cb(struct evconnlistener *lev, in evconnlistener_set_cb() argument
368 LOCK(lev); in evconnlistener_set_cb()
369 if (lev->enabled && !lev->cb) in evconnlistener_set_cb()
371 lev->cb = cb; in evconnlistener_set_cb()
372 lev->user_data = arg; in evconnlistener_set_cb()
374 evconnlistener_enable(lev); in evconnlistener_set_cb()
375 UNLOCK(lev); in evconnlistener_set_cb()
379 evconnlistener_set_error_cb(struct evconnlistener *lev, in evconnlistener_set_error_cb() argument
382 LOCK(lev); in evconnlistener_set_error_cb()
383 lev->errorcb = errorcb; in evconnlistener_set_error_cb()
384 UNLOCK(lev); in evconnlistener_set_error_cb()
390 struct evconnlistener *lev = p; in listener_read_cb() local
395 LOCK(lev); in listener_read_cb()
399 evutil_socket_t new_fd = evutil_accept4_(fd, (struct sockaddr*)&ss, &socklen, lev->accept4_flags); in listener_read_cb()
409 if (lev->cb == NULL) { in listener_read_cb()
411 UNLOCK(lev); in listener_read_cb()
414 ++lev->refcnt; in listener_read_cb()
415 cb = lev->cb; in listener_read_cb()
416 user_data = lev->user_data; in listener_read_cb()
417 UNLOCK(lev); in listener_read_cb()
418 cb(lev, new_fd, (struct sockaddr*)&ss, (int)socklen, in listener_read_cb()
420 LOCK(lev); in listener_read_cb()
421 if (lev->refcnt == 1) { in listener_read_cb()
422 int freed = listener_decref_and_unlock(lev); in listener_read_cb()
428 --lev->refcnt; in listener_read_cb()
432 UNLOCK(lev); in listener_read_cb()
435 if (lev->errorcb != NULL) { in listener_read_cb()
436 ++lev->refcnt; in listener_read_cb()
437 errorcb = lev->errorcb; in listener_read_cb()
438 user_data = lev->user_data; in listener_read_cb()
439 UNLOCK(lev); in listener_read_cb()
440 errorcb(lev, user_data); in listener_read_cb()
441 LOCK(lev); in listener_read_cb()
442 listener_decref_and_unlock(lev); in listener_read_cb()
445 UNLOCK(lev); in listener_read_cb()
456 struct evconnlistener_iocp *lev; member
468 iocp_listener_event_add(struct evconnlistener_iocp *lev) in iocp_listener_event_add() argument
470 if (lev->event_added) in iocp_listener_event_add()
473 lev->event_added = 1; in iocp_listener_event_add()
474 event_base_add_virtual_(lev->event_base); in iocp_listener_event_add()
478 iocp_listener_event_del(struct evconnlistener_iocp *lev) in iocp_listener_event_del() argument
480 if (!lev->event_added) in iocp_listener_event_del()
483 lev->event_added = 0; in iocp_listener_event_del()
484 event_base_del_virtual_(lev->event_base); in iocp_listener_event_del()
488 new_accepting_socket(struct evconnlistener_iocp *lev, int family) in new_accepting_socket() argument
508 res->lev = lev; in new_accepting_socket()
513 event_base_get_npriorities(lev->event_base) / 2, in new_accepting_socket()
542 if (!as->lev->base.enabled) in start_accepting()
553 (char *)&as->lev->fd, sizeof(&as->lev->fd)); in start_accepting()
555 if (!(as->lev->base.flags & LEV_OPT_LEAVE_SOCKETS_BLOCKING)) in start_accepting()
558 if (event_iocp_port_associate_(as->lev->port, s, 1) < 0) { in start_accepting()
565 if (ext->AcceptEx(as->lev->fd, s, as->addrbuf, 0, in start_accepting()
582 as->lev->event_base, in start_accepting()
604 struct evconnlistener *lev = &as->lev->base; in accepted_socket_invoke_user_cb() local
613 LOCK(lev); in accepted_socket_invoke_user_cb()
617 listener_decref_and_unlock(lev); in accepted_socket_invoke_user_cb()
621 ++lev->refcnt; in accepted_socket_invoke_user_cb()
626 errorcb = lev->errorcb; in accepted_socket_invoke_user_cb()
633 cb = lev->cb; in accepted_socket_invoke_user_cb()
640 (char *)&as->lev->fd, sizeof(&as->lev->fd)); in accepted_socket_invoke_user_cb()
642 data = lev->user_data; in accepted_socket_invoke_user_cb()
645 UNLOCK(lev); in accepted_socket_invoke_user_cb()
649 errorcb(lev, data); in accepted_socket_invoke_user_cb()
651 cb(lev, sock, sa_remote, socklen_remote, data); in accepted_socket_invoke_user_cb()
654 LOCK(lev); in accepted_socket_invoke_user_cb()
655 if (listener_decref_and_unlock(lev)) in accepted_socket_invoke_user_cb()
669 LOCK(&as->lev->base); in accepted_socket_cb()
674 as->lev->event_base, in accepted_socket_cb()
678 struct evconnlistener *lev = &as->lev->base; in accepted_socket_cb() local
680 listener_decref_and_unlock(lev); in accepted_socket_cb()
699 as->lev->event_base, in accepted_socket_cb()
703 UNLOCK(&as->lev->base); in accepted_socket_cb()
707 iocp_listener_enable(struct evconnlistener *lev) in iocp_listener_enable() argument
711 EVUTIL_UPCAST(lev, struct evconnlistener_iocp, base); in iocp_listener_enable()
713 LOCK(lev); in iocp_listener_enable()
724 UNLOCK(lev); in iocp_listener_enable()
729 iocp_listener_disable_impl(struct evconnlistener *lev, int shutdown) in iocp_listener_disable_impl() argument
733 EVUTIL_UPCAST(lev, struct evconnlistener_iocp, base); in iocp_listener_disable_impl()
735 LOCK(lev); in iocp_listener_disable_impl()
750 if (shutdown && lev->flags & LEV_OPT_CLOSE_ON_FREE) in iocp_listener_disable_impl()
753 UNLOCK(lev); in iocp_listener_disable_impl()
758 iocp_listener_disable(struct evconnlistener *lev) in iocp_listener_disable() argument
760 return iocp_listener_disable_impl(lev,0); in iocp_listener_disable()
764 iocp_listener_destroy(struct evconnlistener *lev) in iocp_listener_destroy() argument
767 EVUTIL_UPCAST(lev, struct evconnlistener_iocp, base); in iocp_listener_destroy()
771 iocp_listener_disable_impl(lev,1); in iocp_listener_destroy()
777 iocp_listener_getfd(struct evconnlistener *lev) in iocp_listener_getfd() argument
780 EVUTIL_UPCAST(lev, struct evconnlistener_iocp, base); in iocp_listener_getfd()
784 iocp_listener_getbase(struct evconnlistener *lev) in iocp_listener_getbase() argument
787 EVUTIL_UPCAST(lev, struct evconnlistener_iocp, base); in iocp_listener_getbase()
810 struct evconnlistener_iocp *lev; in evconnlistener_new_async() local
830 lev = mm_calloc(1, sizeof(struct evconnlistener_iocp)); in evconnlistener_new_async()
831 if (!lev) { in evconnlistener_new_async()
835 lev->base.ops = &evconnlistener_iocp_ops; in evconnlistener_new_async()
836 lev->base.cb = cb; in evconnlistener_new_async()
837 lev->base.user_data = ptr; in evconnlistener_new_async()
838 lev->base.flags = flags; in evconnlistener_new_async()
839 lev->base.refcnt = 1; in evconnlistener_new_async()
840 lev->base.enabled = 1; in evconnlistener_new_async()
842 lev->port = event_base_get_iocp_(base); in evconnlistener_new_async()
843 lev->fd = fd; in evconnlistener_new_async()
844 lev->event_base = base; in evconnlistener_new_async()
847 if (event_iocp_port_associate_(lev->port, fd, 1) < 0) in evconnlistener_new_async()
850 EVTHREAD_ALLOC_LOCK(lev->base.lock, EVTHREAD_LOCKTYPE_RECURSIVE); in evconnlistener_new_async()
852 lev->n_accepting = N_SOCKETS_PER_LISTENER; in evconnlistener_new_async()
853 lev->accepting = mm_calloc(lev->n_accepting, in evconnlistener_new_async()
855 if (!lev->accepting) { in evconnlistener_new_async()
859 for (i = 0; i < lev->n_accepting; ++i) { in evconnlistener_new_async()
860 lev->accepting[i] = new_accepting_socket(lev, ss.ss_family); in evconnlistener_new_async()
861 if (!lev->accepting[i]) { in evconnlistener_new_async()
865 if (cb && start_accepting(lev->accepting[i]) < 0) { in evconnlistener_new_async()
867 EnterCriticalSection(&lev->accepting[i]->lock); in evconnlistener_new_async()
868 free_and_unlock_accepting_socket(lev->accepting[i]); in evconnlistener_new_async()
871 ++lev->base.refcnt; in evconnlistener_new_async()
874 iocp_listener_event_add(lev); in evconnlistener_new_async()
876 return &lev->base; in evconnlistener_new_async()
879 mm_free(lev->accepting); in evconnlistener_new_async()
882 EVTHREAD_FREE_LOCK(lev->base.lock, EVTHREAD_LOCKTYPE_RECURSIVE); in evconnlistener_new_async()
884 mm_free(lev); in evconnlistener_new_async()