aboutsummaryrefslogtreecommitdiff
path: root/src/nng.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-03-18 12:46:31 -0700
committerGarrett D'Amore <garrett@damore.org>2018-03-18 12:46:31 -0700
commit8b979454d891b84da727a329906c4293fadc5f3c (patch)
treecb491c476080de11c7fc5b5868579f4ef86f4df4 /src/nng.c
parent3a2af394a7d94ac5f924aaea6cbad825a9b05d75 (diff)
downloadnng-8b979454d891b84da727a329906c4293fadc5f3c.tar.gz
nng-8b979454d891b84da727a329906c4293fadc5f3c.tar.bz2
nng-8b979454d891b84da727a329906c4293fadc5f3c.zip
fixes #295 boolean options should use C99 bool type
fixes #275 nng_pipe_getopt_ptr() missing? fixes #285 nng_setopt_ptr MIS fixes #297 nng_listener/dialer_close does not validate mode This change adds some missing APIs, and changes others. In particular, certain options are now of type bool, with size of just one. This is a *breaking* change for code that uses those options -- NNG_OPT_RAW, NNG_OPT_PAIR1_POLY, NNG_OPT_TLS_VERIFIED.
Diffstat (limited to 'src/nng.c')
-rw-r--r--src/nng.c64
1 files changed, 61 insertions, 3 deletions
diff --git a/src/nng.c b/src/nng.c
index 4c2a58db..ad255d16 100644
--- a/src/nng.c
+++ b/src/nng.c
@@ -380,6 +380,12 @@ nng_dialer_setopt(nng_dialer id, const char *name, const void *v, size_t sz)
}
int
+nng_dialer_setopt_bool(nng_dialer id, const char *name, bool val)
+{
+ return (nng_dialer_setopt(id, name, &val, sizeof(val)));
+}
+
+int
nng_dialer_setopt_int(nng_dialer id, const char *name, int val)
{
return (nng_dialer_setopt(id, name, &val, sizeof(val)));
@@ -422,6 +428,13 @@ nng_dialer_getopt(nng_dialer id, const char *name, void *val, size_t *szp)
}
int
+nng_dialer_getopt_bool(nng_dialer id, const char *name, bool *valp)
+{
+ size_t sz = sizeof(*valp);
+ return (nng_dialer_getopt(id, name, valp, &sz));
+}
+
+int
nng_dialer_getopt_int(nng_dialer id, const char *name, int *valp)
{
size_t sz = sizeof(*valp);
@@ -464,6 +477,12 @@ nng_listener_setopt(
}
int
+nng_listener_setopt_bool(nng_listener id, const char *name, bool val)
+{
+ return (nng_listener_setopt(id, name, &val, sizeof(val)));
+}
+
+int
nng_listener_setopt_int(nng_listener id, const char *name, int val)
{
return (nng_listener_setopt(id, name, &val, sizeof(val)));
@@ -506,6 +525,13 @@ nng_listener_getopt(nng_listener id, const char *name, void *val, size_t *szp)
}
int
+nng_listener_getopt_bool(nng_listener id, const char *name, bool *valp)
+{
+ size_t sz = sizeof(*valp);
+ return (nng_listener_getopt(id, name, valp, &sz));
+}
+
+int
nng_listener_getopt_int(nng_listener id, const char *name, int *valp)
{
size_t sz = sizeof(*valp);
@@ -541,7 +567,7 @@ nng_listener_getopt_ms(nng_listener id, const char *name, nng_duration *valp)
}
static int
-nng_ep_close(uint32_t id)
+nng_ep_close(uint32_t id, int mode)
{
nni_ep *ep;
int rv;
@@ -549,6 +575,11 @@ nng_ep_close(uint32_t id)
if ((rv = nni_ep_find(&ep, id)) != 0) {
return (rv);
}
+ if (nni_ep_mode(ep) != mode) {
+ nni_ep_rele(ep);
+ return (NNG_ENOENT);
+ }
+
nni_ep_close(ep);
return (0);
}
@@ -556,13 +587,13 @@ nng_ep_close(uint32_t id)
int
nng_dialer_close(nng_dialer d)
{
- return (nng_ep_close((uint32_t) d));
+ return (nng_ep_close((uint32_t) d, NNI_EP_MODE_DIAL));
}
int
nng_listener_close(nng_listener l)
{
- return (nng_ep_close((uint32_t) l));
+ return (nng_ep_close((uint32_t) l, NNI_EP_MODE_LISTEN));
}
int
@@ -607,6 +638,12 @@ nng_setopt_int(nng_socket sid, const char *name, int val)
}
int
+nng_setopt_bool(nng_socket sid, const char *name, bool val)
+{
+ return (nng_setopt(sid, name, &val, sizeof(val)));
+}
+
+int
nng_setopt_size(nng_socket sid, const char *name, size_t val)
{
return (nng_setopt(sid, name, &val, sizeof(val)));
@@ -637,6 +674,13 @@ nng_setopt_string(nng_socket sid, const char *name, const char *val)
}
int
+nng_getopt_bool(nng_socket sid, const char *name, bool *valp)
+{
+ size_t sz = sizeof(*valp);
+ return (nng_getopt(sid, name, valp, &sz));
+}
+
+int
nng_getopt_int(nng_socket sid, const char *name, int *valp)
{
size_t sz = sizeof(*valp);
@@ -785,6 +829,13 @@ nng_pipe_getopt(nng_pipe id, const char *name, void *val, size_t *sizep)
}
int
+nng_pipe_getopt_bool(nng_pipe id, const char *name, bool *valp)
+{
+ size_t sz = sizeof(*valp);
+ return (nng_pipe_getopt(id, name, valp, &sz));
+}
+
+int
nng_pipe_getopt_int(nng_pipe id, const char *name, int *valp)
{
size_t sz = sizeof(*valp);
@@ -813,6 +864,13 @@ nng_pipe_getopt_ms(nng_pipe id, const char *name, nng_duration *valp)
}
int
+nng_pipe_getopt_ptr(nng_pipe id, const char *name, void **valp)
+{
+ size_t sz = sizeof(*valp);
+ return (nng_pipe_getopt(id, name, valp, &sz));
+}
+
+int
nng_pipe_close(nng_pipe id)
{
int rv;