Browse Source

Add accessor for inspecting timer callbacks.

Nick Mathewson 7 years ago
parent
commit
e6facbfe7a
2 changed files with 16 additions and 0 deletions
  1. 14 0
      src/common/timers.c
  2. 2 0
      src/common/timers.h

+ 14 - 0
src/common/timers.c

@@ -254,6 +254,20 @@ timer_set_cb(tor_timer_t *t, timer_cb_fn_t cb, void *arg)
   t->callback.arg = arg;
 }
 
+/**
+ * Set *<b>cb_out</b> (if provided) to this timer's callback function,
+ * and *<b>arg_out</b> (if provided) to this timer's callback argument.
+ */
+void
+timer_get_cb(const tor_timer_t *t,
+             timer_cb_fn_t *cb_out, void **arg_out)
+{
+  if (cb_out)
+    *cb_out = t->callback.cb;
+  if (arg_out)
+    *arg_out = t->callback.arg;
+}
+
 /**
  * Schedule the timer t to fire at the current time plus a delay of
  * <b>delay</b> microseconds.  All times are relative to monotime_get().

+ 2 - 0
src/common/timers.h

@@ -13,6 +13,8 @@ typedef void (*timer_cb_fn_t)(tor_timer_t *, void *,
                               const struct monotime_t *);
 tor_timer_t *timer_new(timer_cb_fn_t cb, void *arg);
 void timer_set_cb(tor_timer_t *t, timer_cb_fn_t cb, void *arg);
+void timer_get_cb(const tor_timer_t *t,
+                  timer_cb_fn_t *cb_out, void **arg_out);
 void timer_schedule(tor_timer_t *t, const struct timeval *delay);
 void timer_disable(tor_timer_t *t);
 void timer_free(tor_timer_t *t);