diff options
| author | Garrett D'Amore <garrett@damore.org> | 2020-12-19 10:21:54 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2020-12-19 12:50:05 -0800 |
| commit | d12e169c1e733b255d146847ed57037b74681285 (patch) | |
| tree | e4a59142a6cf097dfdda8620635f173f53db9e7a /src/core/socket.c | |
| parent | 2033988343bce413763d3e9664e3e8372da48591 (diff) | |
| download | nng-d12e169c1e733b255d146847ed57037b74681285.tar.gz nng-d12e169c1e733b255d146847ed57037b74681285.tar.bz2 nng-d12e169c1e733b255d146847ed57037b74681285.zip | |
fixes #1372 nni_reap could be smaller
Diffstat (limited to 'src/core/socket.c')
| -rw-r--r-- | src/core/socket.c | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/src/core/socket.c b/src/core/socket.c index f741b6f0..82267287 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -1581,10 +1581,18 @@ nni_dialer_shutdown(nni_dialer *d) nni_mtx_unlock(&s->s_mx); } -void -nni_dialer_reap(nni_dialer *d) +static void dialer_reap(void *); + +static nni_reap_list dialer_reap_list = { + .rl_offset = offsetof(nni_dialer, d_reap), + .rl_func = dialer_reap, +}; + +static void +dialer_reap(void *arg) { - nni_sock *s = d->d_sock; + nni_dialer *d = arg; + nni_sock * s = d->d_sock; nni_aio_stop(&d->d_tmo_aio); nni_aio_stop(&d->d_con_aio); @@ -1602,7 +1610,7 @@ nni_dialer_reap(nni_dialer *d) } nni_mtx_unlock(&s->s_mx); // Go back to the end of reap list. - nni_reap(&d->d_reap, (nni_cb) nni_dialer_reap, d); + nni_dialer_reap(d); return; } @@ -1617,6 +1625,12 @@ nni_dialer_reap(nni_dialer *d) } void +nni_dialer_reap(nni_dialer *d) +{ + nni_reap(&dialer_reap_list, d); +} + +void nni_listener_add_pipe(nni_listener *l, void *tpipe) { nni_sock *s = l->l_sock; @@ -1703,10 +1717,18 @@ nni_listener_shutdown(nni_listener *l) nni_mtx_unlock(&s->s_mx); } -void -nni_listener_reap(nni_listener *l) +static void listener_reap(void *); + +static nni_reap_list listener_reap_list = { + .rl_offset = offsetof(nni_listener, l_reap), + .rl_func = listener_reap, +}; + +static void +listener_reap(void *arg) { - nni_sock *s = l->l_sock; + nni_listener *l = arg; + nni_sock * s = l->l_sock; nni_aio_stop(&l->l_tmo_aio); nni_aio_stop(&l->l_acc_aio); @@ -1724,7 +1746,7 @@ nni_listener_reap(nni_listener *l) } nni_mtx_unlock(&s->s_mx); // Go back to the end of reap list. - nni_reap(&l->l_reap, (nni_cb) nni_listener_reap, l); + nni_reap(&listener_reap_list, l); return; } @@ -1739,6 +1761,12 @@ nni_listener_reap(nni_listener *l) } void +nni_listener_reap(nni_listener *l) +{ + nni_reap(&listener_reap_list, l); +} + +void nni_pipe_run_cb(nni_pipe *p, nng_pipe_ev ev) { nni_sock * s = p->p_sock; |
