[tor-commits] [tor/master] Move tor_gettimeofday_cached() into compat_libevent

nickm at torproject.org nickm at torproject.org
Fri Jun 15 20:15:11 UTC 2012


commit e62104a7d21432380c66db1901215412e9c53ad7
Author: Nick Mathewson <nickm at 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);





More information about the tor-commits mailing list