Lines Matching +full:high +full:- +full:output
2 * Copyright (c) 2002-2004 Niels Provos <provos@citi.umich.edu>
80 if (bufev->wm_read.high == 0 || now < bufev->wm_read.high) { in bufferevent_read_pressure_cb()
83 if (bufev->enabled & EV_READ) in bufferevent_read_pressure_cb()
84 bufferevent_add(&bufev->ev_read, bufev->timeout_read); in bufferevent_read_pressure_cb()
95 int howmuch = -1; in bufferevent_readcb()
103 * If we have a high watermark configured then we don't want to in bufferevent_readcb()
106 if (bufev->wm_read.high != 0) in bufferevent_readcb()
107 howmuch = bufev->wm_read.high; in bufferevent_readcb()
109 res = evbuffer_read(bufev->input, fd, howmuch); in bufferevent_readcb()
110 if (res == -1) { in bufferevent_readcb()
123 bufferevent_add(&bufev->ev_read, bufev->timeout_read); in bufferevent_readcb()
126 len = EVBUFFER_LENGTH(bufev->input); in bufferevent_readcb()
127 if (bufev->wm_read.low != 0 && len < bufev->wm_read.low) in bufferevent_readcb()
129 if (bufev->wm_read.high != 0 && len > bufev->wm_read.high) { in bufferevent_readcb()
130 struct evbuffer *buf = bufev->input; in bufferevent_readcb()
131 event_del(&bufev->ev_read); in bufferevent_readcb()
138 /* Invoke the user callback - must always be called last */ in bufferevent_readcb()
139 if (bufev->readcb != NULL) in bufferevent_readcb()
140 (*bufev->readcb)(bufev, bufev->cbarg); in bufferevent_readcb()
144 bufferevent_add(&bufev->ev_read, bufev->timeout_read); in bufferevent_readcb()
148 (*bufev->errorcb)(bufev, what, bufev->cbarg); in bufferevent_readcb()
163 if (EVBUFFER_LENGTH(bufev->output)) { in bufferevent_writecb()
164 res = evbuffer_write(bufev->output, fd); in bufferevent_writecb()
165 if (res == -1) { in bufferevent_writecb()
188 if (EVBUFFER_LENGTH(bufev->output) != 0) in bufferevent_writecb()
189 bufferevent_add(&bufev->ev_write, bufev->timeout_write); in bufferevent_writecb()
195 if (bufev->writecb != NULL && in bufferevent_writecb()
196 EVBUFFER_LENGTH(bufev->output) <= bufev->wm_write.low) in bufferevent_writecb()
197 (*bufev->writecb)(bufev, bufev->cbarg); in bufferevent_writecb()
202 if (EVBUFFER_LENGTH(bufev->output) != 0) in bufferevent_writecb()
203 bufferevent_add(&bufev->ev_write, bufev->timeout_write); in bufferevent_writecb()
207 (*bufev->errorcb)(bufev, what, bufev->cbarg); in bufferevent_writecb()
214 * The write callback is invoked whenever the output buffer is drained.
230 if ((bufev->input = evbuffer_new()) == NULL) { in bufferevent_new()
235 if ((bufev->output = evbuffer_new()) == NULL) { in bufferevent_new()
236 evbuffer_free(bufev->input); in bufferevent_new()
241 event_set(&bufev->ev_read, fd, EV_READ, bufferevent_readcb, bufev); in bufferevent_new()
242 event_set(&bufev->ev_write, fd, EV_WRITE, bufferevent_writecb, bufev); in bufferevent_new()
244 bufev->readcb = readcb; in bufferevent_new()
245 bufev->writecb = writecb; in bufferevent_new()
246 bufev->errorcb = errorcb; in bufferevent_new()
248 bufev->cbarg = cbarg; in bufferevent_new()
255 bufev->enabled = EV_WRITE; in bufferevent_new()
263 if (event_priority_set(&bufev->ev_read, priority) == -1) in bufferevent_priority_set()
264 return (-1); in bufferevent_priority_set()
265 if (event_priority_set(&bufev->ev_write, priority) == -1) in bufferevent_priority_set()
266 return (-1); in bufferevent_priority_set()
276 event_del(&bufev->ev_read); in bufferevent_free()
277 event_del(&bufev->ev_write); in bufferevent_free()
279 evbuffer_free(bufev->input); in bufferevent_free()
280 evbuffer_free(bufev->output); in bufferevent_free()
287 * -1 on failure.
295 res = evbuffer_add(bufev->output, data, size); in bufferevent_write()
297 if (res == -1) in bufferevent_write()
301 if (size > 0 && (bufev->enabled & EV_WRITE)) in bufferevent_write()
302 bufferevent_add(&bufev->ev_write, bufev->timeout_write); in bufferevent_write()
312 res = bufferevent_write(bufev, buf->buffer, buf->off); in bufferevent_write_buffer()
313 if (res != -1) in bufferevent_write_buffer()
314 evbuffer_drain(buf, buf->off); in bufferevent_write_buffer()
322 struct evbuffer *buf = bufev->input; in bufferevent_read()
324 if (buf->off < size) in bufferevent_read()
325 size = buf->off; in bufferevent_read()
328 memcpy(data, buf->buffer, size); in bufferevent_read()
340 if (bufferevent_add(&bufev->ev_read, bufev->timeout_read) == -1) in bufferevent_enable()
341 return (-1); in bufferevent_enable()
344 if (bufferevent_add(&bufev->ev_write, bufev->timeout_write) == -1) in bufferevent_enable()
345 return (-1); in bufferevent_enable()
348 bufev->enabled |= event; in bufferevent_enable()
356 if (event_del(&bufev->ev_read) == -1) in bufferevent_disable()
357 return (-1); in bufferevent_disable()
360 if (event_del(&bufev->ev_write) == -1) in bufferevent_disable()
361 return (-1); in bufferevent_disable()
364 bufev->enabled &= ~event; in bufferevent_disable()
375 bufev->timeout_read = timeout_read; in bufferevent_settimeout()
376 bufev->timeout_write = timeout_write; in bufferevent_settimeout()
388 bufev->wm_read.low = lowmark; in bufferevent_setwatermark()
389 bufev->wm_read.high = highmark; in bufferevent_setwatermark()
393 bufev->wm_write.low = lowmark; in bufferevent_setwatermark()
394 bufev->wm_write.high = highmark; in bufferevent_setwatermark()
398 bufferevent_read_pressure_cb(bufev->input, in bufferevent_setwatermark()
399 0, EVBUFFER_LENGTH(bufev->input), bufev); in bufferevent_setwatermark()
407 res = event_base_set(base, &bufev->ev_read); in bufferevent_base_set()
408 if (res == -1) in bufferevent_base_set()
411 res = event_base_set(base, &bufev->ev_write); in bufferevent_base_set()