diff options
author | Nick Mathewson <nickm@torproject.org> | 2012-06-15 10:31:34 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2012-06-15 15:07:53 -0400 |
commit | e62104a7d21432380c66db1901215412e9c53ad7 (patch) | |
tree | 669560c0b8ecec17603fc787e8eff80d8b4b9bb8 | |
parent | 1755f792ed265dcea70a199c19ffde47aae7544b (diff) | |
download | tor-e62104a7d21432380c66db1901215412e9c53ad7.tar.gz tor-e62104a7d21432380c66db1901215412e9c53ad7.zip |
Move tor_gettimeofday_cached() into compat_libevent
-rw-r--r-- | changes/move_cached_gtod | 3 | ||||
-rw-r--r-- | src/common/compat_libevent.c | 34 | ||||
-rw-r--r-- | src/common/compat_libevent.h | 3 | ||||
-rw-r--r-- | src/or/relay.c | 23 | ||||
-rw-r--r-- | src/or/relay.h | 2 |
5 files changed, 40 insertions, 25 deletions
diff --git a/changes/move_cached_gtod b/changes/move_cached_gtod new file mode 100644 index 0000000000..53d80920f9 --- /dev/null +++ b/changes/move_cached_gtod @@ -0,0 +1,3 @@ + o Code simplification and refactoring: + - Move tor_gettimeofday_cached() into compat_libevent.c, and use + Libevent's notion of cached time when possible. diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c index 9f7ac63239..544d16a215 100644 --- a/src/common/compat_libevent.c +++ b/src/common/compat_libevent.c @@ -689,3 +689,37 @@ tor_add_bufferevent_to_rate_limit_group(struct bufferevent *bev, } #endif +#if defined(LIBEVENT_VERSION_NUMBER) && LIBEVENT_VERSION_NUMBER >= V(2,1,1) +void +tor_gettimeofday_cached(struct timeval *tv) +{ + event_base_gettimeofday_cached(the_event_base, tv); +} +void +tor_gettimeofday_cache_clear(void) +{ + event_base_update_cache_time(the_event_base); +} +#else +/** Cache the current hi-res time; the cache gets reset when libevent + * calls us. */ +static struct timeval cached_time_hires = {0, 0}; + +/** Return a fairly recent view of the current time. */ +void +tor_gettimeofday_cached(struct timeval *tv) +{ + if (cached_time_hires.tv_sec == 0) { + tor_gettimeofday(&cached_time_hires); + } + *tv = cached_time_hires; +} + +/** Reset the cached view of the current time, so that the next time we try + * to learn it, we will get an up-to-date value. */ +void +tor_gettimeofday_cache_clear(void) +{ + cached_time_hires.tv_sec = 0; +} +#endif diff --git a/src/common/compat_libevent.h b/src/common/compat_libevent.h index 224c76fda7..56285ef80d 100644 --- a/src/common/compat_libevent.h +++ b/src/common/compat_libevent.h @@ -88,5 +88,8 @@ int tor_add_bufferevent_to_rate_limit_group(struct bufferevent *bev, struct bufferevent_rate_limit_group *g); #endif +void tor_gettimeofday_cached(struct timeval *tv); +void tor_gettimeofday_cache_clear(void); + #endif diff --git a/src/or/relay.c b/src/or/relay.c index 8bbc9891e8..3f894bfe1f 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -52,11 +52,6 @@ static int circuit_consider_stop_edge_reading(circuit_t *circ, crypt_path_t *layer_hint); static int circuit_queue_streams_are_blocked(circuit_t *circ); -/* XXXX023 move this all to compat_libevent */ -/** Cache the current hi-res time; the cache gets reset when libevent - * calls us. */ -static struct timeval cached_time_hires = {0, 0}; - /** Stop reading on edge connections when we have this many cells * waiting on the appropriate queue. */ #define CELL_QUEUE_HIGHWATER_SIZE 256 @@ -64,24 +59,6 @@ static struct timeval cached_time_hires = {0, 0}; * cells. */ #define CELL_QUEUE_LOWWATER_SIZE 64 -/** Return a fairly recent view of the current time. */ -static void -tor_gettimeofday_cached(struct timeval *tv) -{ - if (cached_time_hires.tv_sec == 0) { - tor_gettimeofday(&cached_time_hires); - } - *tv = cached_time_hires; -} - -/** Reset the cached view of the current time, so that the next time we try - * to learn it, we will get an up-to-date value. */ -void -tor_gettimeofday_cache_clear(void) -{ - cached_time_hires.tv_sec = 0; -} - /** Stats: how many relay cells have originated at this hop, or have * been relayed onward (not recognized at this hop)? */ diff --git a/src/or/relay.h b/src/or/relay.h index 6a54373654..41675e2106 100644 --- a/src/or/relay.h +++ b/src/or/relay.h @@ -64,8 +64,6 @@ void cell_ewma_set_scale_factor(const or_options_t *options, const networkstatus_t *consensus); void circuit_clear_cell_queue(circuit_t *circ, or_connection_t *orconn); -void tor_gettimeofday_cache_clear(void); - #ifdef RELAY_PRIVATE int relay_crypt(circuit_t *circ, cell_t *cell, cell_direction_t cell_direction, crypt_path_t **layer_hint, char *recognized); |