aboutsummaryrefslogtreecommitdiff
path: root/src/core/endpt.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2016-12-22 20:52:45 -0800
committerGarrett D'Amore <garrett@damore.org>2016-12-22 20:52:45 -0800
commitee45cbf4498a3c1d1868469bdb0c767d66c278e4 (patch)
treeb9116256f12a54c90f92bf5cf215f3d4c8152126 /src/core/endpt.c
parent718de1828cc5b5256511c5b723360d499ae21c8f (diff)
downloadnng-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.c31
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