From 4e46e666e47e277316cc680c833356045932bb5f Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Mon, 16 Jan 2017 22:22:07 -0800 Subject: External event API for send/recv implemented. This was the main blocker, I think, for the nanomsg legacy compat shim. Now that we have this, it should be relatively straight-forward to implement the legacy nanomsg API, including the SENDFD, RECVFD thing. --- src/core/event.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'src/core/event.c') diff --git a/src/core/event.c b/src/core/event.c index 1b264632..73bc1c00 100644 --- a/src/core/event.c +++ b/src/core/event.c @@ -95,7 +95,7 @@ nni_notifier(void *arg) // No interest. continue; } - notify->n_func(event, ¬ify->n_arg); + notify->n_func(event, notify->n_arg); } nni_mtx_unlock(&sock->s_notify_mx); @@ -112,3 +112,33 @@ nni_notifier(void *arg) } nni_mtx_unlock(&sock->s_mx); } + + +nni_notify * +nni_add_notify(nni_sock *sock, int mask, nng_notify_func fn, void *arg) +{ + nni_notify *notify; + + if ((notify = NNI_ALLOC_STRUCT(notify)) == NULL) { + return (NULL); + } + notify->n_func = fn; + notify->n_arg = arg; + notify->n_mask = mask; + NNI_LIST_NODE_INIT(¬ify->n_node); + + nni_mtx_lock(&sock->s_notify_mx); + nni_list_append(&sock->s_notify, notify); + nni_mtx_unlock(&sock->s_notify_mx); + return (notify); +} + + +void +nni_rem_notify(nni_sock *sock, nni_notify *notify) +{ + nni_mtx_lock(&sock->s_notify_mx); + nni_list_remove(&sock->s_notify, notify); + nni_mtx_unlock(&sock->s_notify_mx); + NNI_FREE_STRUCT(notify); +} -- cgit v1.2.3-70-g09d2