static int be_socket_adj_timeouts(struct bufferevent *bufev) { int r = 0; if (event_pending(&bufev->ev_read, EV_READ, NULL)) if (be_socket_add(&bufev->ev_read, &bufev->timeout_read) < 0) r = -1; if (event_pending(&bufev->ev_write, EV_WRITE, NULL)) { if (be_socket_add(&bufev->ev_write, &bufev->timeout_write) < 0) r = -1; } return r; }
static int be_socket_enable(struct bufferevent *bufev, short event) { if (event & EV_READ) { if (be_socket_add(&bufev->ev_read,&bufev->timeout_read) == -1) return -1; } if (event & EV_WRITE) { if (be_socket_add(&bufev->ev_write,&bufev->timeout_write) == -1) return -1; } return 0; }
static int be_socket_adj_timeouts(struct bufferevent *bufev) { int r = 0; if (event_pending(&bufev->ev_read, EV_READ, NULL)) { if (evutil_timerisset(&bufev->timeout_read)) { if (be_socket_add(&bufev->ev_read, &bufev->timeout_read) < 0) r = -1; } else { event_remove_timer(&bufev->ev_read); } } if (event_pending(&bufev->ev_write, EV_WRITE, NULL)) { if (evutil_timerisset(&bufev->timeout_write)) { if (be_socket_add(&bufev->ev_write, &bufev->timeout_write) < 0) r = -1; } else { event_remove_timer(&bufev->ev_write); } } return r; }
static void bufferevent_socket_outbuf_cb(struct evbuffer *buf, const struct evbuffer_cb_info *cbinfo, void *arg) { struct bufferevent *bufev = arg; struct bufferevent_private *bufev_p = EVUTIL_UPCAST(bufev, struct bufferevent_private, bev); if (cbinfo->n_added && (bufev->enabled & EV_WRITE) && !event_pending(&bufev->ev_write, EV_WRITE, NULL) && !bufev_p->write_suspended) { /* Somebody added data to the buffer, and we would like to * write, and we were not writing. So, start writing. */ be_socket_add(&bufev->ev_write, &bufev->timeout_write); /* XXXX handle failure from be_socket_add */ } }