From 5cb5a6ffc33667c93e9bc3572534dcaa684046e3 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 23 Jan 2010 01:52:57 +0100 Subject: first attempt in implementinging execution logic --- timer.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 timer.c (limited to 'timer.c') diff --git a/timer.c b/timer.c new file mode 100644 index 0000000000..b1571ce7ea --- /dev/null +++ b/timer.c @@ -0,0 +1,39 @@ +/*-*- Mode: C; c-basic-offset: 8 -*-*/ + +#include "name.h" +#include "timer.h" + +static NameActiveState timer_active_state(Name *n) { + + static const NameActiveState table[_TIMER_STATE_MAX] = { + [TIMER_DEAD] = NAME_INACTIVE, + [TIMER_WAITING] = NAME_ACTIVE, + [TIMER_RUNNING] = NAME_ACTIVE + }; + + return table[TIMER(n)->state]; +} + +static void timer_free_hook(Name *n) { + Timer *t = TIMER(n); + + assert(t); + + if (t->service) + t->service->timer = NULL; +} + +const NameVTable timer_vtable = { + .suffix = ".timer", + + .load = name_load_fragment_and_dropin, + .dump = NULL, + + .start = NULL, + .stop = NULL, + .reload = NULL, + + .active_state = timer_active_state, + + .free_hook = timer_free_hook +}; -- cgit v1.2.3-54-g00ecf