summaryrefslogtreecommitdiff
path: root/src/or/scheduler.c
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2017-09-14 14:22:22 -0400
committerDavid Goulet <dgoulet@torproject.org>2017-09-15 11:40:59 -0400
commit14cd8bdd4ba6f4c5946ecd9877c77c9ba305bbe8 (patch)
tree1c76e5bfe124d06d7e68582b7f644ad843066c83 /src/or/scheduler.c
parent84d18f70f3400df3e9c3b3c47288e82cd9160f6e (diff)
downloadtor-14cd8bdd4ba6f4c5946ecd9877c77c9ba305bbe8.tar.gz
tor-14cd8bdd4ba6f4c5946ecd9877c77c9ba305bbe8.zip
sched: Don't expose the global scheduler libevent object
Instead, add wrappers to do the needed action the different scheduler needs with the libevent object. Signed-off-by: David Goulet <dgoulet@torproject.org>
Diffstat (limited to 'src/or/scheduler.c')
-rw-r--r--src/or/scheduler.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/or/scheduler.c b/src/or/scheduler.c
index 39427b7827..8d2dfac088 100644
--- a/src/or/scheduler.c
+++ b/src/or/scheduler.c
@@ -214,13 +214,6 @@ get_channels_pending(void)
return channels_pending;
}
-/* Return our libevent scheduler event. */
-struct event *
-get_run_sched_ev(void)
-{
- return run_sched_ev;
-}
-
/* Comparison function to use when sorting pending channels */
MOCK_IMPL(int,
scheduler_compare_channels, (const void *c1_v, const void *c2_v))
@@ -496,6 +489,24 @@ scheduler_channel_has_waiting_cells,(channel_t *chan))
}
}
+/* Add the scheduler event to the set of pending events with next_run being
+ * the time up to libevent should wait before triggering the event. */
+void
+scheduler_ev_add(const struct timeval *next_run)
+{
+ tor_assert(run_sched_ev);
+ tor_assert(next_run);
+ event_add(run_sched_ev, next_run);
+}
+
+/* Make the scheduler event active with the given flags. */
+void
+scheduler_ev_active(int flags)
+{
+ tor_assert(run_sched_ev);
+ event_active(run_sched_ev, flags, 1);
+}
+
/*
* Initialize everything scheduling-related from config.c. Note this is only
* called when Tor is starting up, while scheduler_t->init() is called both