Lines Matching defs:bev
83 struct bufferevent_private bev;
96 evutil_offsetof(struct bufferevent_async, bev.bev),
107 be_async_run_eventcb(struct bufferevent *bev, short what, int options)
108 { bufferevent_run_eventcb_(bev, what, options|BEV_TRIG_DEFER_CALLBACKS); }
111 be_async_trigger_nolock(struct bufferevent *bev, short what, int options)
112 { bufferevent_trigger_nolock_(bev, what, options|BEV_TRIG_DEFER_CALLBACKS); }
128 upcast(struct bufferevent *bev)
131 if (!BEV_IS_ASYNC(bev))
133 bev_a = EVUTIL_UPCAST(bev, struct bufferevent_async, bev.bev);
142 EVUTIL_ASSERT(BEV_IS_ASYNC(&bev_a->bev.bev));
151 EVUTIL_ASSERT(BEV_IS_ASYNC(&bev_a->bev.bev));
160 EVUTIL_ASSERT(BEV_IS_ASYNC(&bev_a->bev.bev));
167 struct bufferevent *bev = &beva->bev.bev;
171 event_base_del_virtual_(bev->ev_base);
178 struct bufferevent *bev = &beva->bev.bev;
182 event_base_del_virtual_(bev->ev_base);
189 struct bufferevent *bev = &beva->bev.bev;
193 event_base_add_virtual_(bev->ev_base);
200 struct bufferevent *bev = &beva->bev.bev;
204 event_base_add_virtual_(bev->ev_base);
213 struct bufferevent *bev = &beva->bev.bev;
217 if (beva->write_in_progress || beva->bev.connecting)
219 if (!beva->ok || !(bev->enabled&EV_WRITE) ||
220 !evbuffer_get_length(bev->output)) {
225 at_most = evbuffer_get_length(bev->output);
229 limit = (int)bufferevent_get_write_max_(&beva->bev);
233 if (beva->bev.write_suspended) {
239 bufferevent_incref_(bev);
240 if (evbuffer_launch_write_(bev->output, at_most,
242 bufferevent_decref_(bev);
244 be_async_run_eventcb(bev, BEV_EVENT_ERROR, 0);
247 bufferevent_decrement_write_buckets_(&beva->bev, at_most);
259 struct bufferevent *bev = &beva->bev.bev;
263 if (beva->read_in_progress || beva->bev.connecting)
265 if (!beva->ok || !(bev->enabled&EV_READ)) {
271 cur_size = evbuffer_get_length(bev->input);
272 read_high = bev->wm_read.high;
285 limit = (int)bufferevent_get_read_max_(&beva->bev);
289 if (beva->bev.read_suspended) {
294 bufferevent_incref_(bev);
295 if (evbuffer_launch_read_(bev->input, at_most, &beva->read_overlapped)) {
297 be_async_run_eventcb(bev, BEV_EVENT_ERROR, 0);
298 bufferevent_decref_(bev);
301 bufferevent_decrement_read_buckets_(&beva->bev, at_most);
313 struct bufferevent *bev = arg;
314 struct bufferevent_async *bev_async = upcast(bev);
319 bufferevent_incref_and_lock_(bev);
324 bufferevent_decref_and_unlock_(bev);
332 struct bufferevent *bev = arg;
333 struct bufferevent_async *bev_async = upcast(bev);
338 bufferevent_incref_and_lock_(bev);
343 bufferevent_decref_and_unlock_(bev);
354 if (bev_async->bev.connecting) {
375 be_async_disable(struct bufferevent *bev, short what)
377 struct bufferevent_async *bev_async = upcast(bev);
383 BEV_DEL_GENERIC_READ_TIMEOUT(bev);
387 BEV_DEL_GENERIC_WRITE_TIMEOUT(bev);
395 be_async_destruct(struct bufferevent *bev)
397 struct bufferevent_async *bev_async = upcast(bev);
398 struct bufferevent_private *bev_p = BEV_UPCAST(bev);
401 EVUTIL_ASSERT(!upcast(bev)->write_in_progress &&
402 !upcast(bev)->read_in_progress);
407 fd = evbuffer_overlapped_get_fd_(bev->input);
411 evbuffer_overlapped_set_fd_(bev->input, EVUTIL_INVALID_SOCKET);
418 bev_async_set_wsa_error(struct bufferevent *bev, struct event_overlapped *eo)
423 fd = evbuffer_overlapped_get_fd_(bev->input);
428 be_async_flush(struct bufferevent *bev, short what,
439 struct bufferevent *bev = &bev_a->bev.bev;
442 BEV_LOCK(bev);
444 EVUTIL_ASSERT(bev_a->bev.connecting);
445 bev_a->bev.connecting = 0;
446 sock = evbuffer_overlapped_get_fd_(bev_a->bev.bev.input);
451 bufferevent_async_set_connected_(bev);
453 bev_async_set_wsa_error(bev, eo);
455 be_async_run_eventcb(bev, ok ? BEV_EVENT_CONNECTED : BEV_EVENT_ERROR, 0);
457 event_base_del_virtual_(bev->ev_base);
459 bufferevent_decref_and_unlock_(bev);
467 struct bufferevent *bev = &bev_a->bev.bev;
470 BEV_LOCK(bev);
474 evbuffer_commit_read_(bev->input, nbytes);
477 bufferevent_decrement_read_buckets_(&bev_a->bev, -amount_unread);
480 bev_async_set_wsa_error(bev, eo);
484 BEV_RESET_GENERIC_READ_TIMEOUT(bev);
485 be_async_trigger_nolock(bev, EV_READ, 0);
490 be_async_run_eventcb(bev, what, 0);
494 be_async_run_eventcb(bev, what, 0);
498 bufferevent_decref_and_unlock_(bev);
506 struct bufferevent *bev = &bev_a->bev.bev;
510 BEV_LOCK(bev);
514 evbuffer_commit_write_(bev->output, nbytes);
518 bufferevent_decrement_write_buckets_(&bev_a->bev,
523 bev_async_set_wsa_error(bev, eo);
527 BEV_RESET_GENERIC_WRITE_TIMEOUT(bev);
528 be_async_trigger_nolock(bev, EV_WRITE, 0);
533 be_async_run_eventcb(bev, what, 0);
537 be_async_run_eventcb(bev, what, 0);
541 bufferevent_decref_and_unlock_(bev);
549 struct bufferevent *bev;
565 bev = &bev_a->bev.bev;
566 if (!(bev->input = evbuffer_overlapped_new_(fd))) {
570 if (!(bev->output = evbuffer_overlapped_new_(fd))) {
571 evbuffer_free(bev->input);
576 if (bufferevent_init_common_(&bev_a->bev, base, &bufferevent_ops_async,
580 evbuffer_add_cb(bev->input, be_async_inbuf_callback, bev);
581 evbuffer_add_cb(bev->output, be_async_outbuf_callback, bev);
587 bufferevent_init_generic_timeout_cbs_(bev);
591 return bev;
593 bufferevent_free(&bev_a->bev.bev);
598 bufferevent_async_set_connected_(struct bufferevent *bev)
600 struct bufferevent_async *bev_async = upcast(bev);
603 be_async_enable(bev, bev->enabled);
607 bufferevent_async_can_connect_(struct bufferevent *bev)
612 if (BEV_IS_ASYNC(bev) &&
613 event_base_get_iocp_(bev->ev_base) &&
621 bufferevent_async_connect_(struct bufferevent *bev, evutil_socket_t fd,
625 struct bufferevent_async *bev_async = upcast(bev);
653 event_base_add_virtual_(bev->ev_base);
654 bufferevent_incref_(bev);
660 event_base_del_virtual_(bev->ev_base);
661 bufferevent_decref_(bev);
667 be_async_ctrl(struct bufferevent *bev, enum bufferevent_ctrl_op op,
672 data->fd = evbuffer_overlapped_get_fd_(bev->input);
675 struct bufferevent_async *bev_a = upcast(bev);
678 if (data->fd == evbuffer_overlapped_get_fd_(bev->input))
680 if (!(iocp = event_base_get_iocp_(bev->ev_base)))
686 evbuffer_overlapped_set_fd_(bev->input, data->fd);
687 evbuffer_overlapped_set_fd_(bev->output, data->fd);
692 struct bufferevent_async *bev_a = upcast(bev);
693 evutil_socket_t fd = evbuffer_overlapped_get_fd_(bev->input);
695 (bev_a->bev.options & BEV_OPT_CLOSE_ON_FREE)) {
697 evbuffer_overlapped_set_fd_(bev->input, EVUTIL_INVALID_SOCKET);