Lines Matching refs:bev

81 	struct bufferevent_private bev;  member
94 evutil_offsetof(struct bufferevent_async, bev.bev),
105 be_async_run_eventcb(struct bufferevent *bev, short what, int options) in be_async_run_eventcb() argument
106 { bufferevent_run_eventcb_(bev, what, options|BEV_TRIG_DEFER_CALLBACKS); } in be_async_run_eventcb()
109 be_async_trigger_nolock(struct bufferevent *bev, short what, int options) in be_async_trigger_nolock() argument
110 { bufferevent_trigger_nolock_(bev, what, options|BEV_TRIG_DEFER_CALLBACKS); } in be_async_trigger_nolock()
126 upcast(struct bufferevent *bev) in upcast() argument
129 if (!BEV_IS_ASYNC(bev)) in upcast()
131 bev_a = EVUTIL_UPCAST(bev, struct bufferevent_async, bev.bev); in upcast()
140 EVUTIL_ASSERT(BEV_IS_ASYNC(&bev_a->bev.bev)); in upcast_connect()
149 EVUTIL_ASSERT(BEV_IS_ASYNC(&bev_a->bev.bev)); in upcast_read()
158 EVUTIL_ASSERT(BEV_IS_ASYNC(&bev_a->bev.bev)); in upcast_write()
165 struct bufferevent *bev = &beva->bev.bev; in bev_async_del_write() local
169 event_base_del_virtual_(bev->ev_base); in bev_async_del_write()
176 struct bufferevent *bev = &beva->bev.bev; in bev_async_del_read() local
180 event_base_del_virtual_(bev->ev_base); in bev_async_del_read()
187 struct bufferevent *bev = &beva->bev.bev; in bev_async_add_write() local
191 event_base_add_virtual_(bev->ev_base); in bev_async_add_write()
198 struct bufferevent *bev = &beva->bev.bev; in bev_async_add_read() local
202 event_base_add_virtual_(bev->ev_base); in bev_async_add_read()
211 struct bufferevent *bev = &beva->bev.bev; in bev_async_consider_writing() local
215 if (beva->write_in_progress || beva->bev.connecting) in bev_async_consider_writing()
217 if (!beva->ok || !(bev->enabled&EV_WRITE) || in bev_async_consider_writing()
218 !evbuffer_get_length(bev->output)) { in bev_async_consider_writing()
223 at_most = evbuffer_get_length(bev->output); in bev_async_consider_writing()
227 limit = (int)bufferevent_get_write_max_(&beva->bev); in bev_async_consider_writing()
231 if (beva->bev.write_suspended) { in bev_async_consider_writing()
237 bufferevent_incref_(bev); in bev_async_consider_writing()
238 if (evbuffer_launch_write_(bev->output, at_most, in bev_async_consider_writing()
240 bufferevent_decref_(bev); in bev_async_consider_writing()
242 be_async_run_eventcb(bev, BEV_EVENT_ERROR, 0); in bev_async_consider_writing()
245 bufferevent_decrement_write_buckets_(&beva->bev, at_most); in bev_async_consider_writing()
257 struct bufferevent *bev = &beva->bev.bev; in bev_async_consider_reading() local
261 if (beva->read_in_progress || beva->bev.connecting) in bev_async_consider_reading()
263 if (!beva->ok || !(bev->enabled&EV_READ)) { in bev_async_consider_reading()
269 cur_size = evbuffer_get_length(bev->input); in bev_async_consider_reading()
270 read_high = bev->wm_read.high; in bev_async_consider_reading()
283 limit = (int)bufferevent_get_read_max_(&beva->bev); in bev_async_consider_reading()
287 if (beva->bev.read_suspended) { in bev_async_consider_reading()
292 bufferevent_incref_(bev); in bev_async_consider_reading()
293 if (evbuffer_launch_read_(bev->input, at_most, &beva->read_overlapped)) { in bev_async_consider_reading()
295 be_async_run_eventcb(bev, BEV_EVENT_ERROR, 0); in bev_async_consider_reading()
296 bufferevent_decref_(bev); in bev_async_consider_reading()
299 bufferevent_decrement_read_buckets_(&beva->bev, at_most); in bev_async_consider_reading()
311 struct bufferevent *bev = arg; in be_async_outbuf_callback() local
312 struct bufferevent_async *bev_async = upcast(bev); in be_async_outbuf_callback()
317 bufferevent_incref_and_lock_(bev); in be_async_outbuf_callback()
322 bufferevent_decref_and_unlock_(bev); in be_async_outbuf_callback()
330 struct bufferevent *bev = arg; in be_async_inbuf_callback() local
331 struct bufferevent_async *bev_async = upcast(bev); in be_async_inbuf_callback()
336 bufferevent_incref_and_lock_(bev); in be_async_inbuf_callback()
341 bufferevent_decref_and_unlock_(bev); in be_async_inbuf_callback()
352 if (bev_async->bev.connecting) { in be_async_enable()
373 be_async_disable(struct bufferevent *bev, short what) in be_async_disable() argument
375 struct bufferevent_async *bev_async = upcast(bev); in be_async_disable()
381 BEV_DEL_GENERIC_READ_TIMEOUT(bev); in be_async_disable()
385 BEV_DEL_GENERIC_WRITE_TIMEOUT(bev); in be_async_disable()
393 be_async_destruct(struct bufferevent *bev) in be_async_destruct() argument
395 struct bufferevent_async *bev_async = upcast(bev); in be_async_destruct()
396 struct bufferevent_private *bev_p = BEV_UPCAST(bev); in be_async_destruct()
399 EVUTIL_ASSERT(!upcast(bev)->write_in_progress && in be_async_destruct()
400 !upcast(bev)->read_in_progress); in be_async_destruct()
405 fd = evbuffer_overlapped_get_fd_(bev->input); in be_async_destruct()
409 evbuffer_overlapped_set_fd_(bev->input, EVUTIL_INVALID_SOCKET); in be_async_destruct()
416 bev_async_set_wsa_error(struct bufferevent *bev, struct event_overlapped *eo) in bev_async_set_wsa_error() argument
421 fd = evbuffer_overlapped_get_fd_(bev->input); in bev_async_set_wsa_error()
426 be_async_flush(struct bufferevent *bev, short what, in be_async_flush() argument
437 struct bufferevent *bev = &bev_a->bev.bev; in connect_complete() local
440 BEV_LOCK(bev); in connect_complete()
442 EVUTIL_ASSERT(bev_a->bev.connecting); in connect_complete()
443 bev_a->bev.connecting = 0; in connect_complete()
444 sock = evbuffer_overlapped_get_fd_(bev_a->bev.bev.input); in connect_complete()
449 bufferevent_async_set_connected_(bev); in connect_complete()
451 bev_async_set_wsa_error(bev, eo); in connect_complete()
453 be_async_run_eventcb(bev, ok ? BEV_EVENT_CONNECTED : BEV_EVENT_ERROR, 0); in connect_complete()
455 event_base_del_virtual_(bev->ev_base); in connect_complete()
457 bufferevent_decref_and_unlock_(bev); in connect_complete()
465 struct bufferevent *bev = &bev_a->bev.bev; in read_complete() local
468 BEV_LOCK(bev); in read_complete()
472 evbuffer_commit_read_(bev->input, nbytes); in read_complete()
475 bufferevent_decrement_read_buckets_(&bev_a->bev, -amount_unread); in read_complete()
478 bev_async_set_wsa_error(bev, eo); in read_complete()
482 BEV_RESET_GENERIC_READ_TIMEOUT(bev); in read_complete()
483 be_async_trigger_nolock(bev, EV_READ, 0); in read_complete()
488 be_async_run_eventcb(bev, what, 0); in read_complete()
492 be_async_run_eventcb(bev, what, 0); in read_complete()
496 bufferevent_decref_and_unlock_(bev); in read_complete()
504 struct bufferevent *bev = &bev_a->bev.bev; in write_complete() local
508 BEV_LOCK(bev); in write_complete()
512 evbuffer_commit_write_(bev->output, nbytes); in write_complete()
516 bufferevent_decrement_write_buckets_(&bev_a->bev, in write_complete()
521 bev_async_set_wsa_error(bev, eo); in write_complete()
525 BEV_RESET_GENERIC_WRITE_TIMEOUT(bev); in write_complete()
526 be_async_trigger_nolock(bev, EV_WRITE, 0); in write_complete()
531 be_async_run_eventcb(bev, what, 0); in write_complete()
535 be_async_run_eventcb(bev, what, 0); in write_complete()
539 bufferevent_decref_and_unlock_(bev); in write_complete()
547 struct bufferevent *bev; in bufferevent_async_new_() local
563 bev = &bev_a->bev.bev; in bufferevent_async_new_()
564 if (!(bev->input = evbuffer_overlapped_new_(fd))) { in bufferevent_async_new_()
568 if (!(bev->output = evbuffer_overlapped_new_(fd))) { in bufferevent_async_new_()
569 evbuffer_free(bev->input); in bufferevent_async_new_()
574 if (bufferevent_init_common_(&bev_a->bev, base, &bufferevent_ops_async, in bufferevent_async_new_()
578 evbuffer_add_cb(bev->input, be_async_inbuf_callback, bev); in bufferevent_async_new_()
579 evbuffer_add_cb(bev->output, be_async_outbuf_callback, bev); in bufferevent_async_new_()
585 bufferevent_init_generic_timeout_cbs_(bev); in bufferevent_async_new_()
589 return bev; in bufferevent_async_new_()
591 bufferevent_free(&bev_a->bev.bev); in bufferevent_async_new_()
596 bufferevent_async_set_connected_(struct bufferevent *bev) in bufferevent_async_set_connected_() argument
598 struct bufferevent_async *bev_async = upcast(bev); in bufferevent_async_set_connected_()
601 be_async_enable(bev, bev->enabled); in bufferevent_async_set_connected_()
605 bufferevent_async_can_connect_(struct bufferevent *bev) in bufferevent_async_can_connect_() argument
610 if (BEV_IS_ASYNC(bev) && in bufferevent_async_can_connect_()
611 event_base_get_iocp_(bev->ev_base) && in bufferevent_async_can_connect_()
619 bufferevent_async_connect_(struct bufferevent *bev, evutil_socket_t fd, in bufferevent_async_connect_() argument
623 struct bufferevent_async *bev_async = upcast(bev); in bufferevent_async_connect_()
651 event_base_add_virtual_(bev->ev_base); in bufferevent_async_connect_()
652 bufferevent_incref_(bev); in bufferevent_async_connect_()
658 event_base_del_virtual_(bev->ev_base); in bufferevent_async_connect_()
659 bufferevent_decref_(bev); in bufferevent_async_connect_()
665 be_async_ctrl(struct bufferevent *bev, enum bufferevent_ctrl_op op, in be_async_ctrl() argument
670 data->fd = evbuffer_overlapped_get_fd_(bev->input); in be_async_ctrl()
673 struct bufferevent_async *bev_a = upcast(bev); in be_async_ctrl()
676 if (data->fd == evbuffer_overlapped_get_fd_(bev->input)) in be_async_ctrl()
678 if (!(iocp = event_base_get_iocp_(bev->ev_base))) in be_async_ctrl()
684 evbuffer_overlapped_set_fd_(bev->input, data->fd); in be_async_ctrl()
685 evbuffer_overlapped_set_fd_(bev->output, data->fd); in be_async_ctrl()
690 struct bufferevent_async *bev_a = upcast(bev); in be_async_ctrl()
691 evutil_socket_t fd = evbuffer_overlapped_get_fd_(bev->input); in be_async_ctrl()
693 (bev_a->bev.options & BEV_OPT_CLOSE_ON_FREE)) { in be_async_ctrl()
695 evbuffer_overlapped_set_fd_(bev->input, EVUTIL_INVALID_SOCKET); in be_async_ctrl()