aboutsummaryrefslogtreecommitdiff
path: root/src/nng.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2017-08-14 15:27:38 -0700
committerGarrett D'Amore <garrett@damore.org>2017-08-14 15:27:38 -0700
commit63479c2938cbc80c1aac9367cb95564f6e7540e1 (patch)
tree495584b637f73b593d25f01577eeaa944477f159 /src/nng.c
parent343417234aa3fd86e8ae0b56ae500a1ed3411cfc (diff)
downloadnng-63479c2938cbc80c1aac9367cb95564f6e7540e1.tar.gz
nng-63479c2938cbc80c1aac9367cb95564f6e7540e1.tar.bz2
nng-63479c2938cbc80c1aac9367cb95564f6e7540e1.zip
fixes #63 NNG_FLAG_SYNCH should be the default
Also enables creating endpoints that are idle (first part of endpoint options API) and shutting down endpoints.
Diffstat (limited to 'src/nng.c')
-rw-r--r--src/nng.c60
1 files changed, 55 insertions, 5 deletions
diff --git a/src/nng.c b/src/nng.c
index 421ce74a..21543dbc 100644
--- a/src/nng.c
+++ b/src/nng.c
@@ -278,18 +278,68 @@ nng_listen(nng_socket sid, const char *addr, nng_listener *lp, int flags)
}
int
+nng_listener_create(nng_listener *lp, nng_socket sid, const char *addr)
+{
+ nni_sock *s;
+ nni_ep * ep;
+ int rv;
+
+ if ((rv = nni_sock_find(&s, sid)) != 0) {
+ return (rv);
+ }
+ if ((rv = nni_ep_create_listener(&ep, s, addr)) != 0) {
+ nni_sock_rele(s);
+ return (rv);
+ }
+ *lp = nni_ep_id(ep);
+ nni_ep_rele(ep);
+ nni_sock_rele(s);
+ return (0);
+}
+
+int
+nng_dialer_create(nng_dialer *dp, nng_socket sid, const char *addr)
+{
+ nni_sock *s;
+ nni_ep * ep;
+ int rv;
+
+ if ((rv = nni_sock_find(&s, sid)) != 0) {
+ return (rv);
+ }
+ if ((rv = nni_ep_create_dialer(&ep, s, addr)) != 0) {
+ nni_sock_rele(s);
+ return (rv);
+ }
+ *dp = nni_ep_id(ep);
+ nni_ep_rele(ep);
+ nni_sock_rele(s);
+ return (0);
+}
+
+static int
+nng_ep_close(uint32_t id)
+{
+ nni_ep *ep;
+ int rv;
+
+ if ((rv = nni_ep_find(&ep, id)) != 0) {
+ return (rv);
+ }
+ nni_ep_close(ep);
+ return (0);
+}
+
+int
nng_dialer_close(nng_dialer d)
{
- // return (nni_ep_close());
- NNI_ARG_UNUSED(d);
- return (NNG_ENOTSUP);
+ return (nng_ep_close((uint32_t) d));
}
int
nng_listener_close(nng_listener l)
{
- NNI_ARG_UNUSED(l);
- return (NNG_ENOTSUP);
+ return (nng_ep_close((uint32_t) l));
}
int