diff options
author | Nick Mathewson <nickm@torproject.org> | 2009-04-13 03:08:11 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2009-04-13 03:08:11 +0000 |
commit | 1becc4c4e656213d0f71938029a08a2da04dc97f (patch) | |
tree | 43cb05c8dae5259aea417e5f911de6dd870bf529 /bufferevent_sock.c | |
parent | 6567ecd4c587563be843ee8803417b53d3318cbd (diff) | |
download | libevent-1becc4c4e656213d0f71938029a08a2da04dc97f.tar.gz |
Refactor new elements of bufferevent into bufferevent_private structure
This way we don't expose more of a bufferevent than we need to. One
motivation is to make it easier to automatically get deferred callbacks
with a bufferevent without exposing the deferred_cb structure.
svn:r1169
Diffstat (limited to 'bufferevent_sock.c')
-rw-r--r-- | bufferevent_sock.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/bufferevent_sock.c b/bufferevent_sock.c index 561bec79..0e5e3a7b 100644 --- a/bufferevent_sock.c +++ b/bufferevent_sock.c @@ -225,16 +225,18 @@ struct bufferevent * bufferevent_socket_new(struct event_base *base, evutil_socket_t fd, enum bufferevent_options options) { + struct bufferevent_private *bufev_p; struct bufferevent *bufev; - if ((bufev = mm_calloc(1, sizeof(struct bufferevent))) == NULL) + if ((bufev_p = mm_calloc(1, sizeof(struct bufferevent_private)))== NULL) return NULL; - if (bufferevent_init_common(bufev, base, &bufferevent_ops_socket, + if (bufferevent_init_common(bufev_p, base, &bufferevent_ops_socket, options) < 0) { - mm_free(bufev); + mm_free(bufev_p); return NULL; } + bufev = &bufev_p->bev; event_assign(&bufev->ev_read, bufev->ev_base, fd, EV_READ|EV_PERSIST, bufferevent_readcb, bufev); @@ -306,6 +308,8 @@ be_socket_disable(struct bufferevent *bufev, short event) static void be_socket_destruct(struct bufferevent *bufev) { + struct bufferevent_private *bufev_p = + EVUTIL_UPCAST(bufev, struct bufferevent_private, bev); evutil_socket_t fd; assert(bufev->be_ops == &bufferevent_ops_socket); @@ -314,7 +318,7 @@ be_socket_destruct(struct bufferevent *bufev) event_del(&bufev->ev_read); event_del(&bufev->ev_write); - if (bufev->options & BEV_OPT_CLOSE_ON_FREE) + if (bufev_p->options & BEV_OPT_CLOSE_ON_FREE) EVUTIL_CLOSESOCKET(fd); } |