aboutsummaryrefslogtreecommitdiff
path: root/src/common/compat_libevent.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2012-06-15 10:31:34 -0400
committerNick Mathewson <nickm@torproject.org>2012-06-15 15:07:53 -0400
commite62104a7d21432380c66db1901215412e9c53ad7 (patch)
tree669560c0b8ecec17603fc787e8eff80d8b4b9bb8 /src/common/compat_libevent.c
parent1755f792ed265dcea70a199c19ffde47aae7544b (diff)
downloadtor-e62104a7d21432380c66db1901215412e9c53ad7.tar
tor-e62104a7d21432380c66db1901215412e9c53ad7.tar.gz
Move tor_gettimeofday_cached() into compat_libevent
Diffstat (limited to 'src/common/compat_libevent.c')
-rw-r--r--src/common/compat_libevent.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c
index 9f7ac6323..544d16a21 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