aboutsummaryrefslogtreecommitdiff
path: root/src/core/timer.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2017-03-04 02:46:40 -0800
committerGarrett D'Amore <garrett@damore.org>2017-03-04 02:46:40 -0800
commitfb6550a242bb1742ec62202a99d0604ee9069795 (patch)
treebd235a8ddf6766dc54c3e47b31dbc7a59802d5da /src/core/timer.c
parentc17a1dd3f5333da59355ecc3f8788a0396a8f72d (diff)
downloadnng-fb6550a242bb1742ec62202a99d0604ee9069795.tar.gz
nng-fb6550a242bb1742ec62202a99d0604ee9069795.tar.bz2
nng-fb6550a242bb1742ec62202a99d0604ee9069795.zip
Pipeline protocol now entirely callback driven.
Diffstat (limited to 'src/core/timer.c')
-rw-r--r--src/core/timer.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/core/timer.c b/src/core/timer.c
index 59966822..778a82b7 100644
--- a/src/core/timer.c
+++ b/src/core/timer.c
@@ -12,10 +12,6 @@
#include <stdlib.h>
#include <string.h>
-extern void nni_timer_schedule(nni_timer_node *);
-extern void nni_timer_cancel(nni_timer_node *);
-extern int nni_timer_init(void);
-extern void nni_timer_fini(void);
static void nni_timer_loop(void *);
struct nni_timer {
@@ -76,6 +72,21 @@ nni_timer_sys_fini(void)
void
+nni_timer_init(nni_timer_node *node, nni_cb cb, void *arg)
+{
+ node->t_cb = cb;
+ node->t_arg = arg;
+}
+
+
+void
+nni_timer_fini(nni_timer_node *node)
+{
+ NNI_ARG_UNUSED(node);
+}
+
+
+void
nni_timer_cancel(nni_timer_node *node)
{
nni_timer *timer = &nni_global_timer;
@@ -92,12 +103,14 @@ nni_timer_cancel(nni_timer_node *node)
void
-nni_timer_schedule(nni_timer_node *node)
+nni_timer_schedule(nni_timer_node *node, nni_time when)
{
nni_timer *timer = &nni_global_timer;
nni_timer_node *srch;
int wake = 1;
+ node->t_expire = when;
+
nni_mtx_lock(&timer->t_list_mx);
srch = nni_list_first(&timer->t_entries);