Lines Matching +full:high +full:- +full:side

2  * Copyright (c) 2009-2012 Niels Provos, Nick Mathewson
26 #include "event2/event-config.h"
27 #include "evconfig-private.h"
40 #include "defer-internal.h"
41 #include "bufferevent-internal.h"
42 #include "mm-internal.h"
43 #include "util-internal.h"
48 /* For ->destruct() lock checking */
62 EVUTIL_ASSERT(BEV_IS_PAIR(&bev_p->bev.bev)); in upcast()
66 #define downcast(bev_pair) (&(bev_pair)->bev.bev)
74 if (bevp->partner) in incref_and_lock()
75 bufferevent_incref_and_lock_(downcast(bevp->partner)); in incref_and_lock()
82 if (bevp->partner) in decref_and_unlock()
83 bufferevent_decref_and_unlock_(downcast(bevp->partner)); in decref_and_unlock()
99 if (bufferevent_init_common_(&bufev->bev, base, &bufferevent_ops_pair, in bufferevent_pair_elt_new()
104 if (!evbuffer_add_cb(bufev->bev.bev.output, be_pair_outbuf_cb, bufev)) { in bufferevent_pair_elt_new()
109 bufferevent_init_generic_timeout_cbs_(&bufev->bev.bev); in bufferevent_pair_elt_new()
126 return -1; in bufferevent_pair_new()
130 return -1; in bufferevent_pair_new()
135 bufferevent_enable_locking_(downcast(bufev2), bufev1->bev.lock); in bufferevent_pair_new()
138 bufev1->partner = bufev2; in bufferevent_pair_new()
139 bufev2->partner = bufev1; in bufferevent_pair_new()
141 evbuffer_freeze(downcast(bufev1)->input, 0); in bufferevent_pair_new()
142 evbuffer_freeze(downcast(bufev1)->output, 1); in bufferevent_pair_new()
143 evbuffer_freeze(downcast(bufev2)->input, 0); in bufferevent_pair_new()
144 evbuffer_freeze(downcast(bufev2)->output, 1); in bufferevent_pair_new()
159 evbuffer_unfreeze(src->output, 1); in be_pair_transfer()
160 evbuffer_unfreeze(dst->input, 0); in be_pair_transfer()
162 if (dst->wm_read.high) { in be_pair_transfer()
163 dst_size = evbuffer_get_length(dst->input); in be_pair_transfer()
164 if (dst_size < dst->wm_read.high) { in be_pair_transfer()
165 n = dst->wm_read.high - dst_size; in be_pair_transfer()
166 evbuffer_remove_buffer(src->output, dst->input, n); in be_pair_transfer()
170 n = evbuffer_get_length(src->output); in be_pair_transfer()
171 evbuffer_add_buffer(dst->input, src->output); in be_pair_transfer()
174 n = evbuffer_get_length(src->output); in be_pair_transfer()
175 evbuffer_add_buffer(dst->input, src->output); in be_pair_transfer()
181 if (evbuffer_get_length(dst->output)) in be_pair_transfer()
190 evbuffer_freeze(src->output, 1); in be_pair_transfer()
191 evbuffer_freeze(dst->input, 0); in be_pair_transfer()
198 return (downcast(src)->enabled & EV_WRITE) && in be_pair_wants_to_talk()
199 (downcast(dst)->enabled & EV_READ) && in be_pair_wants_to_talk()
200 !dst->bev.read_suspended && in be_pair_wants_to_talk()
201 evbuffer_get_length(downcast(src)->output); in be_pair_wants_to_talk()
209 struct bufferevent_pair *partner = bev_pair->partner; in be_pair_outbuf_cb()
213 if (info->n_added > info->n_deleted && partner) { in be_pair_outbuf_cb()
214 /* We got more data. If the other side's reading, then in be_pair_outbuf_cb()
228 struct bufferevent_pair *partner = bev_p->partner; in be_pair_enable()
235 if ((events & EV_WRITE) && evbuffer_get_length(bufev->output)) in be_pair_enable()
238 /* We're starting to read! Does the other side have anything to write?*/ in be_pair_enable()
243 /* We're starting to write! Does the other side want to read? */ in be_pair_enable()
269 if (bev_p->partner) { in be_pair_unlink()
270 bev_p->unlinked_partner = bev_p->partner; in be_pair_unlink()
271 bev_p->partner->partner = NULL; in be_pair_unlink()
272 bev_p->partner = NULL; in be_pair_unlink()
285 * bev1->own_lock = 1 in be_pair_destruct()
286 * bev2->own_lock = 0 in be_pair_destruct()
287 * bev2->lock = bev1->lock in be_pair_destruct()
289 * bufferevent_free(bev1) # refcnt == 0 -> unlink in be_pair_destruct()
290 * bufferevent_free(bev2) # refcnt == 0 -> unlink in be_pair_destruct()
292 * event_base_free() -> finilizers -> EVTHREAD_FREE_LOCK(bev1->lock) in be_pair_destruct()
293 * -> BEV_LOCK(bev2->lock) <-- already freed in be_pair_destruct()
297 if (bev_p->unlinked_partner && bev_p->bev.own_lock) { in be_pair_destruct()
298 bev_p->unlinked_partner->bev.own_lock = 1; in be_pair_destruct()
299 bev_p->bev.own_lock = 0; in be_pair_destruct()
301 bev_p->unlinked_partner = NULL; in be_pair_destruct()
311 if (!bev_p->partner) in be_pair_flush()
312 return -1; in be_pair_flush()
319 partner = downcast(bev_p->partner); in be_pair_flush()
349 if (bev_p->partner) in bufferevent_pair_get_partner()
350 partner = downcast(bev_p->partner); in bufferevent_pair_get_partner()