commit e62104a7d21432380c66db1901215412e9c53ad7 Author: Nick Mathewson nickm@torproject.org Date: Fri Jun 15 10:31:34 2012 -0400
Move tor_gettimeofday_cached() into compat_libevent --- changes/move_cached_gtod | 3 +++ src/common/compat_libevent.c | 34 ++++++++++++++++++++++++++++++++++ src/common/compat_libevent.h | 3 +++ src/or/relay.c | 23 ----------------------- 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 0000000..53d8092 --- /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 9f7ac63..544d16a 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 224c76f..56285ef 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 8bbc989..3f894bf 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 6a54373..41675e2 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);
tor-commits@lists.torproject.org