Home | History | Annotate | Download | only in dist

Lines Matching defs:bev

84 	struct bufferevent_private bev;
97 evutil_offsetof(struct bufferevent_async, bev.bev),
108 be_async_run_eventcb(struct bufferevent *bev, short what, int options)
109 { bufferevent_run_eventcb_(bev, what, options|BEV_TRIG_DEFER_CALLBACKS); }
112 be_async_trigger_nolock(struct bufferevent *bev, short what, int options)
113 { bufferevent_trigger_nolock_(bev, what, options|BEV_TRIG_DEFER_CALLBACKS); }
129 upcast(struct bufferevent *bev)
132 if (!BEV_IS_ASYNC(bev))
134 bev_a = EVUTIL_UPCAST(bev, struct bufferevent_async, bev.bev);
143 EVUTIL_ASSERT(BEV_IS_ASYNC(&bev_a->bev.bev));
152 EVUTIL_ASSERT(BEV_IS_ASYNC(&bev_a->bev.bev));
161 EVUTIL_ASSERT(BEV_IS_ASYNC(&bev_a->bev.bev));
168 struct bufferevent *bev = &beva->bev.bev;
172 event_base_del_virtual_(bev->ev_base);
179 struct bufferevent *bev = &beva->bev.bev;
183 event_base_del_virtual_(bev->ev_base);
190 struct bufferevent *bev = &beva->bev.bev;
194 event_base_add_virtual_(bev->ev_base);
201 struct bufferevent *bev = &beva->bev.bev;
205 event_base_add_virtual_(bev->ev_base);
214 struct bufferevent *bev = &beva->bev.bev;
218 if (beva->write_in_progress || beva->bev.connecting)
220 if (!beva->ok || !(bev->enabled&EV_WRITE) ||
221 !evbuffer_get_length(bev->output)) {
226 at_most = evbuffer_get_length(bev->output);
230 limit = (int)bufferevent_get_write_max_(&beva->bev);
234 if (beva->bev.write_suspended) {
240 bufferevent_incref_(bev);
241 if (evbuffer_launch_write_(bev->output, at_most,
243 bufferevent_decref_(bev);
245 be_async_run_eventcb(bev, BEV_EVENT_ERROR, 0);
248 bufferevent_decrement_write_buckets_(&beva->bev, at_most);
260 struct bufferevent *bev = &beva->bev.bev;
264 if (beva->read_in_progress || beva->bev.connecting)
266 if (!beva->ok || !(bev->enabled&EV_READ)) {
272 cur_size = evbuffer_get_length(bev->input);
273 read_high = bev->wm_read.high;
286 limit = (int)bufferevent_get_read_max_(&beva->bev);
290 if (beva->bev.read_suspended) {
295 bufferevent_incref_(bev);
296 if (evbuffer_launch_read_(bev->input, at_most, &beva->read_overlapped)) {
298 be_async_run_eventcb(bev, BEV_EVENT_ERROR, 0);
299 bufferevent_decref_(bev);
302 bufferevent_decrement_read_buckets_(&beva->bev, at_most);
314 struct bufferevent *bev = arg;
315 struct bufferevent_async *bev_async = upcast(bev);
320 bufferevent_incref_and_lock_(bev);
325 bufferevent_decref_and_unlock_(bev);
333 struct bufferevent *bev = arg;
334 struct bufferevent_async *bev_async = upcast(bev);
339 bufferevent_incref_and_lock_(bev);
344 bufferevent_decref_and_unlock_(bev);
355 if (bev_async->bev.connecting) {
376 be_async_disable(struct bufferevent *bev, short what)
378 struct bufferevent_async *bev_async = upcast(bev);
384 BEV_DEL_GENERIC_READ_TIMEOUT(bev);
388 BEV_DEL_GENERIC_WRITE_TIMEOUT(bev);
396 be_async_destruct(struct bufferevent *bev)
398 struct bufferevent_async *bev_async = upcast(bev);
399 struct bufferevent_private *bev_p = BEV_UPCAST(bev);
402 EVUTIL_ASSERT(!upcast(bev)->write_in_progress &&
403 !upcast(bev)->read_in_progress);
408 fd = evbuffer_overlapped_get_fd_(bev->input);
412 evbuffer_overlapped_set_fd_(bev->input, EVUTIL_INVALID_SOCKET);
419 bev_async_set_wsa_error(struct bufferevent *bev, struct event_overlapped *eo)
424 fd = evbuffer_overlapped_get_fd_(bev->input);
429 be_async_flush(struct bufferevent *bev, short what,
440 struct bufferevent *bev = &bev_a->bev.bev;
443 BEV_LOCK(bev);
445 EVUTIL_ASSERT(bev_a->bev.connecting);
446 bev_a->bev.connecting = 0;
447 sock = evbuffer_overlapped_get_fd_(bev_a->bev.bev.input);
452 bufferevent_async_set_connected_(bev);
454 bev_async_set_wsa_error(bev, eo);
456 be_async_run_eventcb(bev, ok ? BEV_EVENT_CONNECTED : BEV_EVENT_ERROR, 0);
458 event_base_del_virtual_(bev->ev_base);
460 bufferevent_decref_and_unlock_(bev);
468 struct bufferevent *bev = &bev_a->bev.bev;
471 BEV_LOCK(bev);
475 evbuffer_commit_read_(bev->input, nbytes);
478 bufferevent_decrement_read_buckets_(&bev_a->bev, -amount_unread);
481 bev_async_set_wsa_error(bev, eo);
485 BEV_RESET_GENERIC_READ_TIMEOUT(bev);
486 be_async_trigger_nolock(bev, EV_READ, 0);
491 be_async_run_eventcb(bev, what, 0);
495 be_async_run_eventcb(bev, what, 0);
499 bufferevent_decref_and_unlock_(bev);
507 struct bufferevent *bev = &bev_a->bev.bev;
511 BEV_LOCK(bev);
515 evbuffer_commit_write_(bev->output, nbytes);
519 bufferevent_decrement_write_buckets_(&bev_a->bev,
524 bev_async_set_wsa_error(bev, eo);
528 BEV_RESET_GENERIC_WRITE_TIMEOUT(bev);
529 be_async_trigger_nolock(bev, EV_WRITE, 0);
534 be_async_run_eventcb(bev, what, 0);
538 be_async_run_eventcb(bev, what, 0);
542 bufferevent_decref_and_unlock_(bev);
550 struct bufferevent *bev;
566 bev = &bev_a->bev.bev;
567 if (!(bev->input = evbuffer_overlapped_new_(fd))) {
571 if (!(bev->output = evbuffer_overlapped_new_(fd))) {
572 evbuffer_free(bev->input);
577 if (bufferevent_init_common_(&bev_a->bev, base, &bufferevent_ops_async,
581 evbuffer_add_cb(bev->input, be_async_inbuf_callback, bev);
582 evbuffer_add_cb(bev->output, be_async_outbuf_callback, bev);
588 bufferevent_init_generic_timeout_cbs_(bev);
592 return bev;
594 bufferevent_free(&bev_a->bev.bev);
599 bufferevent_async_set_connected_(struct bufferevent *bev)
601 struct bufferevent_async *bev_async = upcast(bev);
604 be_async_enable(bev, bev->enabled);
608 bufferevent_async_can_connect_(struct bufferevent *bev)
613 if (BEV_IS_ASYNC(bev) &&
614 event_base_get_iocp_(bev->ev_base) &&
622 bufferevent_async_connect_(struct bufferevent *bev, evutil_socket_t fd,
626 bev);
654 event_base_add_virtual_(bev->ev_base);
655 bufferevent_incref_(bev);
661 event_base_del_virtual_(bev->ev_base);
662 bufferevent_decref_(bev);
668 be_async_ctrl(struct bufferevent *bev, enum bufferevent_ctrl_op op,
673 data->fd = evbuffer_overlapped_get_fd_(bev->input);
676 struct bufferevent_async *bev_a = upcast(bev);
679 if (data->fd == evbuffer_overlapped_get_fd_(bev->input))
681 if (!(iocp = event_base_get_iocp_(bev->ev_base)))
687 evbuffer_overlapped_set_fd_(bev->input, data->fd);
688 evbuffer_overlapped_set_fd_(bev->output, data->fd);
693 struct bufferevent_async *bev_a = upcast(bev);
694 evutil_socket_t fd = evbuffer_overlapped_get_fd_(bev->input);
696 (bev_a->bev.options & BEV_OPT_CLOSE_ON_FREE)) {
698 evbuffer_overlapped_set_fd_(bev->input, EVUTIL_INVALID_SOCKET);