Lines Matching refs:bev

79 	struct bufferevent_private bev;  member
92 evutil_offsetof(struct bufferevent_async, bev.bev),
102 upcast(struct bufferevent *bev) in upcast() argument
105 if (bev->be_ops != &bufferevent_ops_async) in upcast()
107 bev_a = EVUTIL_UPCAST(bev, struct bufferevent_async, bev.bev); in upcast()
116 EVUTIL_ASSERT(BEV_IS_ASYNC(&bev_a->bev.bev)); in upcast_connect()
125 EVUTIL_ASSERT(BEV_IS_ASYNC(&bev_a->bev.bev)); in upcast_read()
134 EVUTIL_ASSERT(BEV_IS_ASYNC(&bev_a->bev.bev)); in upcast_write()
141 struct bufferevent *bev = &beva->bev.bev; in bev_async_del_write() local
145 event_base_del_virtual(bev->ev_base); in bev_async_del_write()
152 struct bufferevent *bev = &beva->bev.bev; in bev_async_del_read() local
156 event_base_del_virtual(bev->ev_base); in bev_async_del_read()
163 struct bufferevent *bev = &beva->bev.bev; in bev_async_add_write() local
167 event_base_add_virtual(bev->ev_base); in bev_async_add_write()
174 struct bufferevent *bev = &beva->bev.bev; in bev_async_add_read() local
178 event_base_add_virtual(bev->ev_base); in bev_async_add_read()
187 struct bufferevent *bev = &beva->bev.bev; in bev_async_consider_writing() local
191 if (beva->write_in_progress || beva->bev.connecting) in bev_async_consider_writing()
193 if (!beva->ok || !(bev->enabled&EV_WRITE) || in bev_async_consider_writing()
194 !evbuffer_get_length(bev->output)) { in bev_async_consider_writing()
199 at_most = evbuffer_get_length(bev->output); in bev_async_consider_writing()
203 limit = (int)_bufferevent_get_write_max(&beva->bev); in bev_async_consider_writing()
207 if (beva->bev.write_suspended) { in bev_async_consider_writing()
213 bufferevent_incref(bev); in bev_async_consider_writing()
214 if (evbuffer_launch_write(bev->output, at_most, in bev_async_consider_writing()
216 bufferevent_decref(bev); in bev_async_consider_writing()
218 _bufferevent_run_eventcb(bev, BEV_EVENT_ERROR); in bev_async_consider_writing()
221 _bufferevent_decrement_write_buckets(&beva->bev, at_most); in bev_async_consider_writing()
233 struct bufferevent *bev = &beva->bev.bev; in bev_async_consider_reading() local
237 if (beva->read_in_progress || beva->bev.connecting) in bev_async_consider_reading()
239 if (!beva->ok || !(bev->enabled&EV_READ)) { in bev_async_consider_reading()
245 cur_size = evbuffer_get_length(bev->input); in bev_async_consider_reading()
246 read_high = bev->wm_read.high; in bev_async_consider_reading()
259 limit = (int)_bufferevent_get_read_max(&beva->bev); in bev_async_consider_reading()
263 if (beva->bev.read_suspended) { in bev_async_consider_reading()
268 bufferevent_incref(bev); in bev_async_consider_reading()
269 if (evbuffer_launch_read(bev->input, at_most, &beva->read_overlapped)) { in bev_async_consider_reading()
271 _bufferevent_run_eventcb(bev, BEV_EVENT_ERROR); in bev_async_consider_reading()
272 bufferevent_decref(bev); in bev_async_consider_reading()
275 _bufferevent_decrement_read_buckets(&beva->bev, at_most); in bev_async_consider_reading()
287 struct bufferevent *bev = arg; in be_async_outbuf_callback() local
288 struct bufferevent_async *bev_async = upcast(bev); in be_async_outbuf_callback()
293 _bufferevent_incref_and_lock(bev); in be_async_outbuf_callback()
298 _bufferevent_decref_and_unlock(bev); in be_async_outbuf_callback()
306 struct bufferevent *bev = arg; in be_async_inbuf_callback() local
307 struct bufferevent_async *bev_async = upcast(bev); in be_async_inbuf_callback()
312 _bufferevent_incref_and_lock(bev); in be_async_inbuf_callback()
317 _bufferevent_decref_and_unlock(bev); in be_async_inbuf_callback()
328 if (bev_async->bev.connecting) { in be_async_enable()
349 be_async_disable(struct bufferevent *bev, short what) in be_async_disable() argument
351 struct bufferevent_async *bev_async = upcast(bev); in be_async_disable()
357 BEV_DEL_GENERIC_READ_TIMEOUT(bev); in be_async_disable()
361 BEV_DEL_GENERIC_WRITE_TIMEOUT(bev); in be_async_disable()
369 be_async_destruct(struct bufferevent *bev) in be_async_destruct() argument
371 struct bufferevent_async *bev_async = upcast(bev); in be_async_destruct()
372 struct bufferevent_private *bev_p = BEV_UPCAST(bev); in be_async_destruct()
375 EVUTIL_ASSERT(!upcast(bev)->write_in_progress && in be_async_destruct()
376 !upcast(bev)->read_in_progress); in be_async_destruct()
381 fd = _evbuffer_overlapped_get_fd(bev->input); in be_async_destruct()
387 if (event_initialized(&bev->ev_write)) { in be_async_destruct()
388 event_del(&bev->ev_write); in be_async_destruct()
389 _bufferevent_del_generic_timeout_cbs(bev); in be_async_destruct()
396 bev_async_set_wsa_error(struct bufferevent *bev, struct event_overlapped *eo) in bev_async_set_wsa_error() argument
401 fd = _evbuffer_overlapped_get_fd(bev->input); in bev_async_set_wsa_error()
406 be_async_flush(struct bufferevent *bev, short what, in be_async_flush() argument
417 struct bufferevent *bev = &bev_a->bev.bev; in connect_complete() local
420 BEV_LOCK(bev); in connect_complete()
422 EVUTIL_ASSERT(bev_a->bev.connecting); in connect_complete()
423 bev_a->bev.connecting = 0; in connect_complete()
424 sock = _evbuffer_overlapped_get_fd(bev_a->bev.bev.input); in connect_complete()
429 bufferevent_async_set_connected(bev); in connect_complete()
431 bev_async_set_wsa_error(bev, eo); in connect_complete()
433 _bufferevent_run_eventcb(bev, in connect_complete()
436 event_base_del_virtual(bev->ev_base); in connect_complete()
438 _bufferevent_decref_and_unlock(bev); in connect_complete()
446 struct bufferevent *bev = &bev_a->bev.bev; in read_complete() local
449 BEV_LOCK(bev); in read_complete()
453 evbuffer_commit_read(bev->input, nbytes); in read_complete()
456 _bufferevent_decrement_read_buckets(&bev_a->bev, -amount_unread); in read_complete()
459 bev_async_set_wsa_error(bev, eo); in read_complete()
463 BEV_RESET_GENERIC_READ_TIMEOUT(bev); in read_complete()
464 if (evbuffer_get_length(bev->input) >= bev->wm_read.low) in read_complete()
465 _bufferevent_run_readcb(bev); in read_complete()
470 _bufferevent_run_eventcb(bev, what); in read_complete()
474 _bufferevent_run_eventcb(bev, what); in read_complete()
478 _bufferevent_decref_and_unlock(bev); in read_complete()
486 struct bufferevent *bev = &bev_a->bev.bev; in write_complete() local
490 BEV_LOCK(bev); in write_complete()
494 evbuffer_commit_write(bev->output, nbytes); in write_complete()
498 _bufferevent_decrement_write_buckets(&bev_a->bev, in write_complete()
503 bev_async_set_wsa_error(bev, eo); in write_complete()
507 BEV_RESET_GENERIC_WRITE_TIMEOUT(bev); in write_complete()
508 if (evbuffer_get_length(bev->output) <= in write_complete()
509 bev->wm_write.low) in write_complete()
510 _bufferevent_run_writecb(bev); in write_complete()
515 _bufferevent_run_eventcb(bev, what); in write_complete()
519 _bufferevent_run_eventcb(bev, what); in write_complete()
523 _bufferevent_decref_and_unlock(bev); in write_complete()
531 struct bufferevent *bev; in bufferevent_async_new() local
551 bev = &bev_a->bev.bev; in bufferevent_async_new()
552 if (!(bev->input = evbuffer_overlapped_new(fd))) { in bufferevent_async_new()
556 if (!(bev->output = evbuffer_overlapped_new(fd))) { in bufferevent_async_new()
557 evbuffer_free(bev->input); in bufferevent_async_new()
562 if (bufferevent_init_common(&bev_a->bev, base, &bufferevent_ops_async, in bufferevent_async_new()
566 evbuffer_add_cb(bev->input, be_async_inbuf_callback, bev); in bufferevent_async_new()
567 evbuffer_add_cb(bev->output, be_async_outbuf_callback, bev); in bufferevent_async_new()
575 _bufferevent_init_generic_timeout_cbs(bev); in bufferevent_async_new()
577 return bev; in bufferevent_async_new()
579 bufferevent_free(&bev_a->bev.bev); in bufferevent_async_new()
584 bufferevent_async_set_connected(struct bufferevent *bev) in bufferevent_async_set_connected() argument
586 struct bufferevent_async *bev_async = upcast(bev); in bufferevent_async_set_connected()
588 _bufferevent_init_generic_timeout_cbs(bev); in bufferevent_async_set_connected()
590 be_async_enable(bev, bev->enabled); in bufferevent_async_set_connected()
594 bufferevent_async_can_connect(struct bufferevent *bev) in bufferevent_async_can_connect() argument
599 if (BEV_IS_ASYNC(bev) && in bufferevent_async_can_connect()
600 event_base_get_iocp(bev->ev_base) && in bufferevent_async_can_connect()
608 bufferevent_async_connect(struct bufferevent *bev, evutil_socket_t fd, in bufferevent_async_connect() argument
612 struct bufferevent_async *bev_async = upcast(bev); in bufferevent_async_connect()
640 event_base_add_virtual(bev->ev_base); in bufferevent_async_connect()
641 bufferevent_incref(bev); in bufferevent_async_connect()
647 event_base_del_virtual(bev->ev_base); in bufferevent_async_connect()
648 bufferevent_decref(bev); in bufferevent_async_connect()
654 be_async_ctrl(struct bufferevent *bev, enum bufferevent_ctrl_op op, in be_async_ctrl() argument
659 data->fd = _evbuffer_overlapped_get_fd(bev->input); in be_async_ctrl()
664 if (data->fd == _evbuffer_overlapped_get_fd(bev->input)) in be_async_ctrl()
666 if (!(iocp = event_base_get_iocp(bev->ev_base))) in be_async_ctrl()
670 _evbuffer_overlapped_set_fd(bev->input, data->fd); in be_async_ctrl()
671 _evbuffer_overlapped_set_fd(bev->output, data->fd); in be_async_ctrl()
675 struct bufferevent_async *bev_a = upcast(bev); in be_async_ctrl()
676 evutil_socket_t fd = _evbuffer_overlapped_get_fd(bev->input); in be_async_ctrl()
678 (bev_a->bev.options & BEV_OPT_CLOSE_ON_FREE)) { in be_async_ctrl()