summaryrefslogtreecommitdiff
path: root/src/server/ev.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/ev.c')
-rw-r--r--src/server/ev.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/server/ev.c b/src/server/ev.c
new file mode 100644
index 0000000..c201191
--- /dev/null
+++ b/src/server/ev.c
@@ -0,0 +1,47 @@
+/* ISC license. */
+
+#include <skalibs/genqdyn.h>
+
+#include <s6-rc/event.h>
+#include "ev.h"
+
+
+/* Event queue */
+
+static genqdyn evq = GENQDYN_INIT(s6rc_event_t, 0, 1) ; /* only clean when it's empty */
+
+int ev_enqueue (s6rc_event_t const *ev)
+{
+ return genqdyn_push(&evq, ev) ;
+}
+
+int ev_pop (s6rc_event_t *ev)
+{
+ if (!genqdyn_n(&evq)) return 0 ;
+ *ev = *GENQDYN_PEEK(s6rc_event_t, &evq) ;
+ return genqdyn_pop(&evq) ;
+}
+
+
+ /* Event processing (builtins) */
+
+void ev_handle (s6rc_event_t const *ev)
+{
+ switch (ev->type)
+ {
+ case S6RC_EVENTTYPE_WANTED_STATE_DOWN :
+ break ;
+ case S6RC_EVENTTYPE_WANTED_STATE_UP :
+ break ;
+ case S6RC_EVENTTYPE_CURRENT_STATE_DOWN :
+ break ;
+ case S6RC_EVENTTYPE_CURRENT_STATE_UP :
+ break ;
+ case S6RC_EVENTTYPE_TRANSITION_STOP :
+ break ;
+ case S6RC_EVENTTYPE_TRANSITION_START :
+ break ;
+ case S6RC_EVENTTYPE_CUSTOM :
+ break ;
+ }
+}