From 7c688dd9a2380a8af3f1903d34510ef3feaaa275 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Fri, 31 Jul 2009 14:41:45 +0000 Subject: [PATCH] New function to expose bufferevent.enabled svn:r1401 --- ChangeLog | 3 ++- bufferevent.c | 10 ++++++++++ include/event2/bufferevent.h | 7 +++++++ test/regress_bufferevent.c | 3 +++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 14eb423b..9e5be063 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,8 +9,9 @@ Changes in 2.0.3-alpha: o Make bufferevenr_socket_connect() work when the original fd was -1. o Fix a bug in bufferevent_socket_connect() when the connection succeeds too quickly. o Export an evutil_sockaddr_cmp() to compare to sockaddr objects for equality. + o Add a bufferevent_get_enabled() to tell what a bufferevent has been configured to do. + - Changes in 2.0.2-alpha: o Add a new flag to bufferevents to make all callbacks automatically deferred. o Make evdns functionality locked, and automatically defer dns callbacks. diff --git a/bufferevent.c b/bufferevent.c index 6d9f67ec..05106045 100644 --- a/bufferevent.c +++ b/bufferevent.c @@ -581,6 +581,16 @@ bufferevent_getfd(struct bufferevent *bev) return (res<0) ? -1 : d.fd; } +short +bufferevent_get_enabled(struct bufferevent *bufev) +{ + short r; + BEV_LOCK(bufev); + r = bufev->enabled; + BEV_UNLOCK(bufev); + return r; +} + struct bufferevent * bufferevent_get_underlying(struct bufferevent *bev) { diff --git a/include/event2/bufferevent.h b/include/event2/bufferevent.h index b0e2395b..cc3be050 100644 --- a/include/event2/bufferevent.h +++ b/include/event2/bufferevent.h @@ -322,6 +322,13 @@ int bufferevent_enable(struct bufferevent *bufev, short event); */ int bufferevent_disable(struct bufferevent *bufev, short event); +/** + Return the events that are enabled on a given bufferevent. + + @param bufev the bufferevent to inspect + @return A combination of EV_READ | EV_WRITE + */ +short bufferevent_get_enabled(struct bufferevent *bufev); /** Set the read and write timeout for a buffered event. diff --git a/test/regress_bufferevent.c b/test/regress_bufferevent.c index cae52042..e4c34a6f 100644 --- a/test/regress_bufferevent.c +++ b/test/regress_bufferevent.c @@ -140,6 +140,9 @@ test_bufferevent_impl(int use_pair) bufferevent_disable(bev1, EV_READ); bufferevent_enable(bev2, EV_READ); + tt_int_op(bufferevent_get_enabled(bev1), ==, EV_WRITE); + tt_int_op(bufferevent_get_enabled(bev2), ==, EV_WRITE|EV_READ); + for (i = 0; i < sizeof(buffer); i++) buffer[i] = i; -- 2.50.1