• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/libevent/

Lines Matching refs:bufev

67 bufferevent_suspend_read_(struct bufferevent *bufev, bufferevent_suspend_flags what)
70 EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
71 BEV_LOCK(bufev);
73 bufev->be_ops->disable(bufev, EV_READ);
75 BEV_UNLOCK(bufev);
79 bufferevent_unsuspend_read_(struct bufferevent *bufev, bufferevent_suspend_flags what)
82 EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
83 BEV_LOCK(bufev);
85 if (!bufev_private->read_suspended && (bufev->enabled & EV_READ))
86 bufev->be_ops->enable(bufev, EV_READ);
87 BEV_UNLOCK(bufev);
91 bufferevent_suspend_write_(struct bufferevent *bufev, bufferevent_suspend_flags what)
94 EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
95 BEV_LOCK(bufev);
97 bufev->be_ops->disable(bufev, EV_WRITE);
99 BEV_UNLOCK(bufev);
103 bufferevent_unsuspend_write_(struct bufferevent *bufev, bufferevent_suspend_flags what)
106 EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
107 BEV_LOCK(bufev);
109 if (!bufev_private->write_suspended && (bufev->enabled & EV_WRITE))
110 bufev->be_ops->enable(bufev, EV_WRITE);
111 BEV_UNLOCK(bufev);
122 struct bufferevent *bufev = arg;
127 if (size >= bufev->wm_read.high)
128 bufferevent_wm_suspend_read(bufev);
130 bufferevent_wm_unsuspend_read(bufev);
137 struct bufferevent *bufev = &bufev_private->bev;
139 BEV_LOCK(bufev);
141 bufev->errorcb) {
145 bufev->errorcb(bufev, BEV_EVENT_CONNECTED, bufev->cbarg);
147 if (bufev_private->readcb_pending && bufev->readcb) {
149 bufev->readcb(bufev, bufev->cbarg);
151 if (bufev_private->writecb_pending && bufev->writecb) {
153 bufev->writecb(bufev, bufev->cbarg);
155 if (bufev_private->eventcb_pending && bufev->errorcb) {
161 bufev->errorcb(bufev, what, bufev->cbarg);
163 bufferevent_decref_and_unlock_(bufev);
170 struct bufferevent *bufev = &bufev_private->bev;
172 BEV_LOCK(bufev);
174 do { BEV_UNLOCK(bufev); stmt; BEV_LOCK(bufev); } while(0)
177 bufev->errorcb) {
180 bufferevent_event_cb errorcb = bufev->errorcb;
181 void *cbarg = bufev->cbarg;
183 UNLOCKED(errorcb(bufev, BEV_EVENT_CONNECTED, cbarg));
185 if (bufev_private->readcb_pending && bufev->readcb) {
186 bufferevent_data_cb readcb = bufev->readcb;
187 void *cbarg = bufev->cbarg;
189 UNLOCKED(readcb(bufev, cbarg));
191 if (bufev_private->writecb_pending && bufev->writecb) {
192 bufferevent_data_cb writecb = bufev->writecb;
193 void *cbarg = bufev->cbarg;
195 UNLOCKED(writecb(bufev, cbarg));
197 if (bufev_private->eventcb_pending && bufev->errorcb) {
198 bufferevent_event_cb errorcb = bufev->errorcb;
199 void *cbarg = bufev->cbarg;
205 UNLOCKED(errorcb(bufev,what,cbarg));
207 bufferevent_decref_and_unlock_(bufev);
221 bufferevent_run_readcb_(struct bufferevent *bufev, int options)
225 EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
226 if (bufev->readcb == NULL)
232 bufev->readcb(bufev, bufev->cbarg);
237 bufferevent_run_writecb_(struct bufferevent *bufev, int options)
241 EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
242 if (bufev->writecb == NULL)
248 bufev->writecb(bufev, bufev->cbarg);
258 bufferevent_trigger(struct bufferevent *bufev, short iotype, int options)
260 bufferevent_incref_and_lock_(bufev);
261 bufferevent_trigger_nolock_(bufev, iotype, options&BEV_TRIG_ALL_OPTS);
262 bufferevent_decref_and_unlock_(bufev);
266 bufferevent_run_eventcb_(struct bufferevent *bufev, short what, int options)
270 EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
271 if (bufev->errorcb == NULL)
278 bufev->errorcb(bufev, what, bufev->cbarg);
283 bufferevent_trigger_event(struct bufferevent *bufev, short what, int options)
285 bufferevent_incref_and_lock_(bufev);
286 bufferevent_run_eventcb_(bufev, what, options&BEV_TRIG_ALL_OPTS);
287 bufferevent_decref_and_unlock_(bufev);
296 struct bufferevent *bufev = &bufev_private->bev;
298 if (!bufev->input) {
299 if ((bufev->input = evbuffer_new()) == NULL)
303 if (!bufev->output) {
304 if ((bufev->output = evbuffer_new()) == NULL) {
305 evbuffer_free(bufev->input);
311 bufev->ev_base = base;
314 evutil_timerclear(&bufev->timeout_read);
315 evutil_timerclear(&bufev->timeout_write);
317 bufev->be_ops = ops;
326 bufev->enabled = EV_WRITE;
330 if (bufferevent_enable_locking_(bufev, NULL) < 0) {
332 evbuffer_free(bufev->input);
333 evbuffer_free(bufev->output);
334 bufev->input = NULL;
335 bufev->output = NULL;
360 evbuffer_set_parent_(bufev->input, bufev);
361 evbuffer_set_parent_(bufev->output, bufev);
367 bufferevent_setcb(struct bufferevent *bufev,
371 BEV_LOCK(bufev);
373 bufev->readcb = readcb;
374 bufev->writecb = writecb;
375 bufev->errorcb = eventcb;
377 bufev->cbarg = cbarg;
378 BEV_UNLOCK(bufev);
382 bufferevent_getcb(struct bufferevent *bufev,
388 BEV_LOCK(bufev);
390 *readcb_ptr = bufev->readcb;
392 *writecb_ptr = bufev->writecb;
394 *eventcb_ptr = bufev->errorcb;
396 *cbarg_ptr = bufev->cbarg;
398 BEV_UNLOCK(bufev);
402 bufferevent_get_input(struct bufferevent *bufev)
404 return bufev->input;
408 bufferevent_get_output(struct bufferevent *bufev)
410 return bufev->output;
414 bufferevent_get_base(struct bufferevent *bufev)
416 return bufev->ev_base;
420 bufferevent_get_priority(const struct bufferevent *bufev)
422 if (event_initialized(&bufev->ev_read)) {
423 return event_get_priority(&bufev->ev_read);
425 return event_base_get_npriorities(bufev->ev_base) / 2;
430 bufferevent_write(struct bufferevent *bufev, const void *data, size_t size)
432 if (evbuffer_add(bufev->output, data, size) == -1)
439 bufferevent_write_buffer(struct bufferevent *bufev, struct evbuffer *buf)
441 if (evbuffer_add_buffer(bufev->output, buf) == -1)
448 bufferevent_read(struct bufferevent *bufev, void *data, size_t size)
450 return (evbuffer_remove(bufev->input, data, size));
454 bufferevent_read_buffer(struct bufferevent *bufev, struct evbuffer *buf)
456 return (evbuffer_add_buffer(buf, bufev->input));
460 bufferevent_enable(struct bufferevent *bufev, short event)
463 EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
467 bufferevent_incref_and_lock_(bufev);
473 bufev->enabled |= event;
475 if (impl_events && bufev->be_ops->enable(bufev, impl_events) < 0)
478 bufferevent_decref_and_unlock_(bufev);
483 bufferevent_set_timeouts(struct bufferevent *bufev,
488 BEV_LOCK(bufev);
490 bufev->timeout_read = *tv_read;
492 evutil_timerclear(&bufev->timeout_read);
495 bufev->timeout_write = *tv_write;
497 evutil_timerclear(&bufev->timeout_write);
500 if (bufev->be_ops->adj_timeouts)
501 r = bufev->be_ops->adj_timeouts(bufev);
502 BEV_UNLOCK(bufev);
510 bufferevent_settimeout(struct bufferevent *bufev,
528 bufferevent_set_timeouts(bufev, ptv_read, ptv_write);
533 bufferevent_disable_hard_(struct bufferevent *bufev, short event)
537 EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
539 BEV_LOCK(bufev);
540 bufev->enabled &= ~event;
543 if (bufev->be_ops->disable(bufev, event) < 0)
546 BEV_UNLOCK(bufev);
551 bufferevent_disable(struct bufferevent *bufev, short event)
555 BEV_LOCK(bufev);
556 bufev->enabled &= ~event;
558 if (bufev->be_ops->disable(bufev, event) < 0)
561 BEV_UNLOCK(bufev);
570 bufferevent_setwatermark(struct bufferevent *bufev, short events,
574 EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
576 BEV_LOCK(bufev);
578 bufev->wm_write.low = lowmark;
579 bufev->wm_write.high = highmark;
583 bufev->wm_read.low = lowmark;
584 bufev->wm_read.high = highmark;
593 evbuffer_add_cb(bufev->input,
595 bufev);
597 evbuffer_cb_set_flags(bufev->input,
601 if (evbuffer_get_length(bufev->input) >= highmark)
602 bufferevent_wm_suspend_read(bufev);
603 else if (evbuffer_get_length(bufev->input) < highmark)
604 bufferevent_wm_unsuspend_read(bufev);
608 evbuffer_cb_clear_flags(bufev->input,
611 bufferevent_wm_unsuspend_read(bufev);
614 BEV_UNLOCK(bufev);
618 bufferevent_getwatermark(struct bufferevent *bufev, short events,
622 BEV_LOCK(bufev);
624 *lowmark = bufev->wm_write.low;
626 *highmark = bufev->wm_write.high;
627 BEV_UNLOCK(bufev);
632 BEV_LOCK(bufev);
634 *lowmark = bufev->wm_read.low;
636 *highmark = bufev->wm_read.high;
637 BEV_UNLOCK(bufev);
644 bufferevent_flush(struct bufferevent *bufev,
649 BEV_LOCK(bufev);
650 if (bufev->be_ops->flush)
651 r = bufev->be_ops->flush(bufev, iotype, mode);
652 BEV_UNLOCK(bufev);
657 bufferevent_incref_and_lock_(struct bufferevent *bufev)
660 BEV_UPCAST(bufev);
661 BEV_LOCK(bufev);
684 bufferevent_decref_and_unlock_(struct bufferevent *bufev)
687 EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
695 BEV_UNLOCK(bufev);
699 if (bufev->be_ops->unlink)
700 bufev->be_ops->unlink(bufev);
704 cbs[0] = &bufev->ev_read.ev_evcallback;
705 cbs[1] = &bufev->ev_write.ev_evcallback;
713 n_cbs += evbuffer_get_callbacks_(bufev->input, cbs+n_cbs, MAX_CBS-n_cbs);
714 n_cbs += evbuffer_get_callbacks_(bufev->output, cbs+n_cbs, MAX_CBS-n_cbs);
716 event_callback_finalize_many_(bufev->ev_base, n_cbs, cbs,
720 BEV_UNLOCK(bufev);
728 struct bufferevent *bufev = arg_;
731 EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
733 BEV_LOCK(bufev);
734 underlying = bufferevent_get_underlying(bufev);
737 if (bufev->be_ops->destruct)
738 bufev->be_ops->destruct(bufev);
744 evbuffer_free(bufev->input);
745 evbuffer_free(bufev->output);
749 bufferevent_remove_from_rate_limit_group_internal_(bufev,0);
755 BEV_UNLOCK(bufev);
762 mm_free(((char*)bufev) - bufev->be_ops->mem_offset);
779 bufferevent_decref(struct bufferevent *bufev)
781 BEV_LOCK(bufev);
782 return bufferevent_decref_and_unlock_(bufev);
786 bufferevent_free(struct bufferevent *bufev)
788 BEV_LOCK(bufev);
789 bufferevent_setcb(bufev, NULL, NULL, NULL, NULL);
790 bufferevent_cancel_all_(bufev);
791 bufferevent_decref_and_unlock_(bufev);
795 bufferevent_incref(struct bufferevent *bufev)
798 EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
804 BEV_LOCK(bufev);
806 BEV_UNLOCK(bufev);
810 bufferevent_enable_locking_(struct bufferevent *bufev, void *lock)
817 if (BEV_UPCAST(bufev)->lock)
819 underlying = bufferevent_get_underlying(bufev);
823 BEV_UPCAST(bufev)->lock = lock;
824 BEV_UPCAST(bufev)->own_lock = 0;
829 BEV_UPCAST(bufev)->lock = lock;
830 BEV_UPCAST(bufev)->own_lock = 1;
832 BEV_UPCAST(bufev)->lock = lock;
833 BEV_UPCAST(bufev)->own_lock = 0;
835 evbuffer_enable_locking(bufev->input, lock);
836 evbuffer_enable_locking(bufev->output, lock);
897 bufferevent_get_enabled(struct bufferevent *bufev)
900 BEV_LOCK(bufev);
901 r = bufev->enabled;
902 BEV_UNLOCK(bufev);