diff options
| author | Garrett D'Amore <garrett@damore.org> | 2016-12-22 20:52:45 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2016-12-22 20:52:45 -0800 |
| commit | ee45cbf4498a3c1d1868469bdb0c767d66c278e4 (patch) | |
| tree | b9116256f12a54c90f92bf5cf215f3d4c8152126 /src/core/endpt.c | |
| parent | 718de1828cc5b5256511c5b723360d499ae21c8f (diff) | |
| download | nng-ee45cbf4498a3c1d1868469bdb0c767d66c278e4.tar.gz nng-ee45cbf4498a3c1d1868469bdb0c767d66c278e4.tar.bz2 nng-ee45cbf4498a3c1d1868469bdb0c767d66c278e4.zip | |
Endpoint dialer implemented.
Diffstat (limited to 'src/core/endpt.c')
| -rw-r--r-- | src/core/endpt.c | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/core/endpt.c b/src/core/endpt.c index b7181ce8..bc947dfd 100644 --- a/src/core/endpt.c +++ b/src/core/endpt.c @@ -109,15 +109,42 @@ nni_endpt_close(nni_endpt *ep) return; } ep->ep_close = 1; + ep->ep_ops.ep_close(ep->ep_data); nni_cond_broadcast(&ep->ep_cv); nni_mutex_exit(&ep->ep_mx); - ep->ep_ops.ep_close(ep->ep_data); } +int +nni_endpt_listen(nni_endpt *ep) +{ + if (ep->ep_close) { + return (NNG_ECLOSED); + } + return (ep->ep_ops.ep_listen(ep->ep_data)); +} + +int +nni_endpt_dial(nni_endpt *ep, nni_pipe **pp) +{ + nni_pipe *pipe; + int rv; + + if (ep->ep_close) { + return (NNG_ECLOSED); + } + if ((rv = nni_pipe_create(&pipe, ep->ep_ops.ep_pipe_ops)) != 0) { + return (rv); + } + if ((rv = ep->ep_ops.ep_dial(ep->ep_data, &pipe->p_data)) != 0) { + nni_pipe_destroy(pipe); + return (rv); + } + *pp = pipe; + return (0); +} #if 0 int nni_endpt_dial(nni_endpt *, nni_pipe **); int nni_endpt_listen(nni_endpt *); int nni_endpt_accept(nni_endpt *, nni_pipe **); -int nni_endpt_close(nni_endpt *); #endif |
