aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/man/nng_ctx.5.adoc7
-rw-r--r--docs/man/nng_dialer.5.adoc11
-rw-r--r--docs/man/nng_listener.5.adoc11
-rw-r--r--docs/man/nng_pipe.5.adoc11
-rw-r--r--docs/man/nng_socket.5.adoc9
-rw-r--r--src/compat/nanomsg/nn.c95
-rw-r--r--src/core/protocol.c8
-rw-r--r--src/nng.c397
-rw-r--r--src/nng.h32
-rw-r--r--tests/bufsz.c4
-rw-r--r--tests/message.c14
-rw-r--r--tests/multistress.c26
-rw-r--r--tests/pair1.c28
-rw-r--r--tests/reconnect.c2
-rw-r--r--tests/reqstress.c10
-rw-r--r--tests/sock.c64
-rw-r--r--tests/surveyctx.c2
-rw-r--r--tests/tcp.c2
-rw-r--r--tests/tcp6.c4
-rw-r--r--tests/tls.c6
-rw-r--r--tests/trantest.h43
-rw-r--r--tests/ws.c2
-rw-r--r--tests/wss.c2
-rw-r--r--tests/wssfile.c6
-rw-r--r--tests/zt.c2
25 files changed, 453 insertions, 345 deletions
diff --git a/docs/man/nng_ctx.5.adoc b/docs/man/nng_ctx.5.adoc
index 4fcac571..98402738 100644
--- a/docs/man/nng_ctx.5.adoc
+++ b/docs/man/nng_ctx.5.adoc
@@ -19,7 +19,7 @@ nng_ctx - protocol context
----
#include <nng/nng.h>
-typedef uint32_t nng_ctx
+typedef struct nng_ctx_s nng_ctx
----
== DESCRIPTION
@@ -38,6 +38,11 @@ of any sent request, a timer to retry the request on failure, and so forth.
A separate context on the same socket can have similar data, but corresponding
to a completely different request.
+IMPORTANT: The `nng_ctx` structure is always passed by value (both
+for input parameters and return values), and should be treated opaquely.
+Passing structures this way ensures gives the compiler a chance to perform
+accurate type checks in functions passing values of this type.
+
All contexts share the same socket, and so some options, as well as the
underlying transport details, will be common to all contexts on that socket.
diff --git a/docs/man/nng_dialer.5.adoc b/docs/man/nng_dialer.5.adoc
index daadbd0b..45c60bc9 100644
--- a/docs/man/nng_dialer.5.adoc
+++ b/docs/man/nng_dialer.5.adoc
@@ -16,11 +16,11 @@ nng_dialer - dialer
== SYNOPSIS
[source, c]
------------
+----
#include <nng/nng.h>
-typedef uint32_t nng_dialer;
------------
+typedef struct nng_dialer_s nng_dialer;
+----
== DESCRIPTION
@@ -38,6 +38,11 @@ Dialer objects are created by the
or <<nng_dial.3#,`nng_dial()`>> functions, and are always "`owned`"
by a single <<nng_socket.5#,`nng_socket`>>.
+IMPORTANT: The `nng_dialer` structure is always passed by value (both
+for input parameters and return values), and should be treated opaquely.
+Passing structures this way ensures gives the compiler a chance to perform
+accurate type checks in functions passing values of this type.
+
TIP: A given <<nng_socket.5#,`nng_socket`>> may have multiple dialer
objects, multiple <<nng_listener.5#,listener>> objects, or even some
of both.
diff --git a/docs/man/nng_listener.5.adoc b/docs/man/nng_listener.5.adoc
index 6c5d0bd0..558eb920 100644
--- a/docs/man/nng_listener.5.adoc
+++ b/docs/man/nng_listener.5.adoc
@@ -16,11 +16,11 @@ nng_listener - listener
== SYNOPSIS
[source, c]
------------
+----
#include <nng/nng.h>
-typedef uint32_t nng_listener;
------------
+typedef struct nng_listener_s nng_listener;
+----
== DESCRIPTION
@@ -35,6 +35,11 @@ Listener objects are created by the
or <<nng_listen.3#,`nng_listen()`>> functions, and are always "`owned`"
by a single <<nng_socket.5#,`nng_socket`>>.
+IMPORTANT: The `nng_listener` structure is always passed by value (both
+for input parameters and return values), and should be treated opaquely.
+Passing structures this way ensures gives the compiler a chance to perform
+accurate type checks in functions passing values of this type.
+
TIP: A given <<nng_socket.5#,`nng_socket`>> may have multiple listener
objects, multiple <<nng_dialer.5#,dialer>> objects, or even some
of both.
diff --git a/docs/man/nng_pipe.5.adoc b/docs/man/nng_pipe.5.adoc
index 4befd3e8..39247fbd 100644
--- a/docs/man/nng_pipe.5.adoc
+++ b/docs/man/nng_pipe.5.adoc
@@ -16,11 +16,11 @@ nng_pipe - communications pipe
== SYNOPSIS
[source, c]
------------
+----
#include <nng/nng.h>
-typedef uint32_t nng_pipe;
------------
+typedef struct nng_pipe_s nng_pipe;
+----
== DESCRIPTION
@@ -32,6 +32,11 @@ single TCP or IPC connection.)
Pipes are associated with either the listener or dialer that created them,
and therefore are also automatically associated with a single socket.
+IMPORTANT: The `nng_pipe` structure is always passed by value (both
+for input parameters and return values), and should be treated opaquely.
+Passing structures this way ensures gives the compiler a chance to perform
+accurate type checks in functions passing values of this type.
+
TIP: Most applications should never concern themselves with individual pipes.
However it is possible to access a pipe when more information about the
source of a message is needed, or when more control is required over
diff --git a/docs/man/nng_socket.5.adoc b/docs/man/nng_socket.5.adoc
index 0dcdfa99..4711495f 100644
--- a/docs/man/nng_socket.5.adoc
+++ b/docs/man/nng_socket.5.adoc
@@ -19,7 +19,7 @@ nng_socket - socket handle
----
#include <nng/nng.h>
-typedef uint32_t nng_socket;
+typedef struct nng_socket_s nng_socket;
----
== DESCRIPTION
@@ -34,9 +34,10 @@ may be connected to multiple transports at the same time.
However, a given socket will have exactly one "`protocol`" associated with it,
and is responsible for any state machines or other protocol-specific logic.
-NOTE: Although `nng_socket` is an integer data type, these objects are not
-ordinary file descriptors, and can only be used with the functions that
-explicitly indicate that it safe and appropropate to do so.
+IMPORTANT: The `nng_socket` structure is always passed by value (both
+for input parameters and return values), and should be treated opaquely.
+Passing structures this way ensures gives the compiler a chance to perform
+accurate type checks in functions passing values of this type.
Each `nng_socket` is created by a protocol-specific constructor, such as
<<nng_rep_open.3#,`nng_rep_open()`>>.
diff --git a/src/compat/nanomsg/nn.c b/src/compat/nanomsg/nn.c
index e99c0ff3..0eb97298 100644
--- a/src/compat/nanomsg/nn.c
+++ b/src/compat/nanomsg/nn.c
@@ -221,15 +221,18 @@ nn_socket(int domain, int protocol)
return (-1);
}
- return ((int) sock);
+ return ((int) sock.id);
}
int
nn_close(int s)
{
- int rv;
+ int rv;
+ nng_socket sid;
+
+ sid.id = (uint32_t) s;
- if ((rv = nng_close((nng_socket) s)) != 0) {
+ if ((rv = nng_close(sid)) != 0) {
nn_seterror(rv);
return (-1);
}
@@ -241,12 +244,14 @@ nn_bind(int s, const char *addr)
{
int rv;
nng_listener l;
+ nng_socket sid;
- if ((rv = nng_listen((nng_socket) s, addr, &l, 0)) != 0) {
+ sid.id = (uint32_t) s;
+ if ((rv = nng_listen(sid, addr, &l, 0)) != 0) {
nn_seterror(rv);
return (-1);
}
- return ((int) l);
+ return ((int) l.id);
}
int
@@ -254,13 +259,14 @@ nn_connect(int s, const char *addr)
{
int rv;
nng_dialer d;
+ nng_socket sid;
- if ((rv = nng_dial((nng_socket) s, addr, &d, NNG_FLAG_NONBLOCK)) !=
- 0) {
+ sid.id = (uint32_t) s;
+ if ((rv = nng_dial(sid, addr, &d, NNG_FLAG_NONBLOCK)) != 0) {
nn_seterror(rv);
return (-1);
}
- return ((int) d);
+ return ((int) d.id);
}
int
@@ -268,6 +274,8 @@ nn_shutdown(int s, int ep)
{
int rv;
(void) s; // Unused
+ nng_dialer d;
+ nng_listener l;
// Socket is wired into the endpoint... so passing a bad endpoint
// ID can result in affecting the wrong socket. But this requires
@@ -276,8 +284,9 @@ nn_shutdown(int s, int ep)
// Note that listeners and dialers share the same namespace
// in the core, so we can close either one this way.
- if (((rv = nng_dialer_close((nng_dialer) ep)) != 0) &&
- ((rv = nng_listener_close((nng_listener) ep)) != 0)) {
+ d.id = l.id = (uint32_t) ep;
+ if (((rv = nng_dialer_close(d)) != 0) &&
+ ((rv = nng_listener_close(l)) != 0)) {
nn_seterror(rv);
return (-1);
}
@@ -405,10 +414,11 @@ nn_recv(int s, void *buf, size_t len, int flags)
int
nn_recvmsg(int s, struct nn_msghdr *mh, int flags)
{
- int rv;
- nng_msg *msg;
- size_t len;
- int keep = 0;
+ int rv;
+ nng_msg * msg;
+ size_t len;
+ int keep = 0;
+ nng_socket sid;
if ((flags = nn_flags(flags)) == -1) {
return (-1);
@@ -422,7 +432,8 @@ nn_recvmsg(int s, struct nn_msghdr *mh, int flags)
return (-1);
}
- if ((rv = nng_recvmsg((nng_socket) s, &msg, flags)) != 0) {
+ sid.id = (uint32_t) s;
+ if ((rv = nng_recvmsg(sid, &msg, flags)) != 0) {
nn_seterror(rv);
return (-1);
}
@@ -523,12 +534,15 @@ nn_recvmsg(int s, struct nn_msghdr *mh, int flags)
int
nn_sendmsg(int s, const struct nn_msghdr *mh, int flags)
{
- nng_msg *msg = NULL;
- nng_msg *cmsg = NULL;
- char * cdata;
- int keep = 0;
- size_t sz;
- int rv;
+ nng_msg * msg = NULL;
+ nng_msg * cmsg = NULL;
+ nng_socket sid;
+ char * cdata;
+ int keep = 0;
+ size_t sz;
+ int rv;
+
+ sid.id = (uint32_t) s;
if ((flags = nn_flags(flags)) == -1) {
return (-1);
@@ -629,7 +643,7 @@ nn_sendmsg(int s, const struct nn_msghdr *mh, int flags)
}
sz = nng_msg_len(msg);
- if ((rv = nng_sendmsg((nng_socket) s, msg, flags)) != 0) {
+ if ((rv = nng_sendmsg(sid, msg, flags)) != 0) {
if (!keep) {
nng_msg_free(msg);
}
@@ -901,7 +915,10 @@ nn_getsockopt(int s, int nnlevel, int nnopt, void *valp, size_t *szp)
{
const char *name = NULL;
int (*get)(nng_socket, void *, size_t *) = NULL;
- int rv;
+ int rv;
+ nng_socket sid;
+
+ sid.id = (uint32_t) s;
for (unsigned i = 0; i < sizeof(options) / sizeof(options[0]); i++) {
if ((options[i].nnlevel == nnlevel) &&
@@ -913,7 +930,7 @@ nn_getsockopt(int s, int nnlevel, int nnopt, void *valp, size_t *szp)
}
if (get != NULL) {
- return (get((nng_socket) s, valp, szp));
+ return (get(sid, valp, szp));
}
if (name == NULL) {
@@ -921,7 +938,7 @@ nn_getsockopt(int s, int nnlevel, int nnopt, void *valp, size_t *szp)
return (-1);
}
- if ((rv = nng_getopt((nng_socket) s, name, valp, szp)) != 0) {
+ if ((rv = nng_getopt(sid, name, valp, szp)) != 0) {
nn_seterror(rv);
return (-1);
}
@@ -932,10 +949,13 @@ nn_getsockopt(int s, int nnlevel, int nnopt, void *valp, size_t *szp)
int
nn_setsockopt(int s, int nnlevel, int nnopt, const void *valp, size_t sz)
{
+ nng_socket sid;
const char *name = NULL;
int (*set)(nng_socket, const void *, size_t) = NULL;
int rv;
+ sid.id = (uint32_t) s;
+
for (unsigned i = 0; i < sizeof(options) / sizeof(options[0]); i++) {
if ((options[i].nnlevel == nnlevel) &&
(options[i].nnopt == nnopt)) {
@@ -947,7 +967,7 @@ nn_setsockopt(int s, int nnlevel, int nnopt, const void *valp, size_t sz)
}
if (set != NULL) {
- return (set((nng_socket) s, valp, sz));
+ return (set(sid, valp, sz));
}
if (name == NULL) {
@@ -955,7 +975,7 @@ nn_setsockopt(int s, int nnlevel, int nnopt, const void *valp, size_t sz)
return (-1);
}
- if ((rv = nng_setopt((nng_socket) s, name, valp, sz)) != 0) {
+ if ((rv = nng_setopt(sid, name, valp, sz)) != 0) {
nn_seterror(rv);
return (-1);
}
@@ -996,9 +1016,14 @@ nn_cmsg_next(struct nn_msghdr *mh, struct nn_cmsghdr *first)
int
nn_device(int s1, int s2)
{
- int rv;
+ int rv;
+ nng_socket sid1;
+ nng_socket sid2;
+
+ sid1.id = (uint32_t) s1;
+ sid2.id = (uint32_t) s2;
- rv = nng_device((nng_socket) s1, (nng_socket) s2);
+ rv = nng_device(sid1, sid2);
// rv must always be nonzero
nn_seterror(rv);
return (-1);
@@ -1041,8 +1066,10 @@ nn_poll(struct nn_pollfd *fds, int nfds, int timeout)
for (int i = 0; i < nfds; i++) {
int fd;
if (fds[i].events & NN_POLLIN) {
- if ((rv = nng_getopt_int((nng_socket) fds[i].fd,
- NNG_OPT_RECVFD, &fd)) != 0) {
+ nng_socket s;
+ s.id = fds[i].fd;
+ if ((rv = nng_getopt_int(s, NNG_OPT_RECVFD, &fd)) !=
+ 0) {
nn_seterror(rv);
NNI_FREE_STRUCTS(pfd, nfds * 2);
return (-1);
@@ -1056,8 +1083,10 @@ nn_poll(struct nn_pollfd *fds, int nfds, int timeout)
npfd++;
}
if (fds[i].events & NN_POLLOUT) {
- if ((rv = nng_getopt_int((nng_socket) fds[i].fd,
- NNG_OPT_SENDFD, &fd)) != 0) {
+ nng_socket s;
+ s.id = fds[i].fd;
+ if ((rv = nng_getopt_int(s, NNG_OPT_SENDFD, &fd)) !=
+ 0) {
nn_seterror(rv);
NNI_FREE_STRUCTS(pfd, nfds * 2);
return (-1);
diff --git a/src/core/protocol.c b/src/core/protocol.c
index e36bc31f..52b9b7fb 100644
--- a/src/core/protocol.c
+++ b/src/core/protocol.c
@@ -1,6 +1,6 @@
//
-// Copyright 2017 Garrett D'Amore <garrett@damore.org>
-// Copyright 2017 Capitar IT Group BV <info@capitar.com>
+// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
// copy of which should be located in the distribution where this
@@ -62,7 +62,9 @@ nni_proto_open(nng_socket *sockidp, const nni_proto *proto)
return (rv);
}
if ((rv = nni_sock_open(&sock, proto)) == 0) {
- *sockidp = nni_sock_id(sock); // Keep socket held open.
+ nng_socket s;
+ s.id = nni_sock_id(sock); // Keep socket held open.
+ *sockidp = s;
}
return (rv);
}
diff --git a/src/nng.c b/src/nng.c
index fb374dde..a4b8fd27 100644
--- a/src/nng.c
+++ b/src/nng.c
@@ -31,14 +31,14 @@ nng_fini(void)
}
int
-nng_close(nng_socket sid)
+nng_close(nng_socket s)
{
int rv;
nni_sock *sock;
// Close is special, because we still want to be able to get
// a hold on the socket even if shutdown was called.
- if ((rv = nni_sock_find(&sock, sid)) != 0) {
+ if ((rv = nni_sock_find(&sock, s.id)) != 0) {
return (rv);
}
// No release -- close releases it.
@@ -77,14 +77,14 @@ nng_strfree(char *s)
}
int
-nng_recv(nng_socket sid, void *buf, size_t *szp, int flags)
+nng_recv(nng_socket s, void *buf, size_t *szp, int flags)
{
nng_msg *msg;
int rv;
// Note that while it would be nice to make this a zero copy operation,
// its not normally possible if a size was specified.
- if ((rv = nng_recvmsg(sid, &msg, flags & ~(NNG_FLAG_ALLOC))) != 0) {
+ if ((rv = nng_recvmsg(s, &msg, flags & ~(NNG_FLAG_ALLOC))) != 0) {
return (rv);
}
if (!(flags & NNG_FLAG_ALLOC)) {
@@ -113,7 +113,7 @@ nng_recv(nng_socket sid, void *buf, size_t *szp, int flags)
}
int
-nng_recvmsg(nng_socket sid, nng_msg **msgp, int flags)
+nng_recvmsg(nng_socket s, nng_msg **msgp, int flags)
{
int rv;
nng_aio *ap;
@@ -127,7 +127,7 @@ nng_recvmsg(nng_socket sid, nng_msg **msgp, int flags)
nng_aio_set_timeout(ap, NNG_DURATION_DEFAULT);
}
- nng_recv_aio(sid, ap);
+ nng_recv_aio(s, ap);
nng_aio_wait(ap);
if ((rv = nng_aio_result(ap)) == 0) {
@@ -142,7 +142,7 @@ nng_recvmsg(nng_socket sid, nng_msg **msgp, int flags)
}
int
-nng_send(nng_socket sid, void *buf, size_t len, int flags)
+nng_send(nng_socket s, void *buf, size_t len, int flags)
{
nng_msg *msg;
int rv;
@@ -151,7 +151,7 @@ nng_send(nng_socket sid, void *buf, size_t len, int flags)
return (rv);
}
memcpy(nng_msg_body(msg), buf, len);
- if ((rv = nng_sendmsg(sid, msg, flags)) != 0) {
+ if ((rv = nng_sendmsg(s, msg, flags)) != 0) {
nng_msg_free(msg);
}
if (flags & NNG_FLAG_ALLOC) {
@@ -161,7 +161,7 @@ nng_send(nng_socket sid, void *buf, size_t len, int flags)
}
int
-nng_sendmsg(nng_socket sid, nng_msg *msg, int flags)
+nng_sendmsg(nng_socket s, nng_msg *msg, int flags)
{
int rv;
nng_aio *ap;
@@ -176,7 +176,7 @@ nng_sendmsg(nng_socket sid, nng_msg *msg, int flags)
}
nng_aio_set_msg(ap, msg);
- nng_send_aio(sid, ap);
+ nng_send_aio(s, ap);
nng_aio_wait(ap);
rv = nng_aio_result(ap);
@@ -192,12 +192,12 @@ nng_sendmsg(nng_socket sid, nng_msg *msg, int flags)
}
void
-nng_recv_aio(nng_socket sid, nng_aio *aio)
+nng_recv_aio(nng_socket s, nng_aio *aio)
{
nni_sock *sock;
int rv;
- if ((rv = nni_sock_find(&sock, sid)) != 0) {
+ if ((rv = nni_sock_find(&sock, s.id)) != 0) {
if (nni_aio_begin(aio) == 0) {
nni_aio_finish_error(aio, rv);
}
@@ -208,7 +208,7 @@ nng_recv_aio(nng_socket sid, nng_aio *aio)
}
void
-nng_send_aio(nng_socket sid, nng_aio *aio)
+nng_send_aio(nng_socket s, nng_aio *aio)
{
nni_sock *sock;
int rv;
@@ -219,7 +219,7 @@ nng_send_aio(nng_socket sid, nng_aio *aio)
}
return;
}
- if ((rv = nni_sock_find(&sock, sid)) != 0) {
+ if ((rv = nni_sock_find(&sock, s.id)) != 0) {
if (nni_aio_begin(aio) == 0) {
nni_aio_finish_error(aio, rv);
}
@@ -230,20 +230,22 @@ nng_send_aio(nng_socket sid, nng_aio *aio)
}
int
-nng_ctx_open(nng_ctx *idp, nng_socket sid)
+nng_ctx_open(nng_ctx *idp, nng_socket s)
{
nni_sock *sock;
nni_ctx * ctx;
int rv;
+ nng_ctx id;
- if ((rv = nni_sock_find(&sock, sid)) != 0) {
+ if ((rv = nni_sock_find(&sock, s.id)) != 0) {
return (rv);
}
if ((rv = nni_ctx_open(&ctx, sock)) != 0) {
nni_sock_rele(sock);
return (rv);
}
- *idp = nni_ctx_id(ctx);
+ id.id = nni_ctx_id(ctx);
+ *idp = id;
nni_ctx_rele(ctx);
nni_sock_rele(sock);
return (0);
@@ -255,7 +257,7 @@ nng_ctx_close(nng_ctx cid)
int rv;
nni_ctx *ctx;
- if ((rv = nni_ctx_find(&ctx, cid, true)) != 0) {
+ if ((rv = nni_ctx_find(&ctx, cid.id, true)) != 0) {
return (rv);
}
// no release, close releases implicitly.
@@ -269,7 +271,7 @@ nng_ctx_recv(nng_ctx cid, nng_aio *aio)
int rv;
nni_ctx *ctx;
- if ((rv = nni_ctx_find(&ctx, cid, false)) != 0) {
+ if ((rv = nni_ctx_find(&ctx, cid.id, false)) != 0) {
if (nni_aio_begin(aio) == 0) {
nni_aio_finish_error(aio, rv);
}
@@ -291,7 +293,7 @@ nng_ctx_send(nng_ctx cid, nng_aio *aio)
}
return;
}
- if ((rv = nni_ctx_find(&ctx, cid, false)) != 0) {
+ if ((rv = nni_ctx_find(&ctx, cid.id, false)) != 0) {
if (nni_aio_begin(aio) == 0) {
nni_aio_finish_error(aio, rv);
}
@@ -310,7 +312,7 @@ nng_ctx_getx(nng_ctx id, const char *n, void *v, size_t *szp, int t)
if ((rv = nni_init()) != 0) {
return (rv);
}
- if ((rv = nni_ctx_find(&ctx, id, false)) != 0) {
+ if ((rv = nni_ctx_find(&ctx, id.id, false)) != 0) {
return (rv);
}
rv = nni_ctx_getopt(ctx, n, v, szp, t);
@@ -361,7 +363,7 @@ nng_ctx_setx(nng_ctx id, const char *n, const void *v, size_t sz, int t)
if ((rv = nni_init()) != 0) {
return (rv);
}
- if ((rv = nni_ctx_find(&ctx, id, false)) != 0) {
+ if ((rv = nni_ctx_find(&ctx, id.id, false)) != 0) {
return (rv);
}
rv = nni_ctx_setopt(ctx, n, v, sz, t);
@@ -400,13 +402,13 @@ nng_ctx_setopt_ms(nng_ctx id, const char *name, nng_duration v)
}
int
-nng_dial(nng_socket sid, const char *addr, nng_dialer *dp, int flags)
+nng_dial(nng_socket s, const char *addr, nng_dialer *dp, int flags)
{
nni_ep * ep;
int rv;
nni_sock *sock;
- if ((rv = nni_sock_find(&sock, sid)) != 0) {
+ if ((rv = nni_sock_find(&sock, s.id)) != 0) {
return (rv);
}
if ((rv = nni_ep_create_dialer(&ep, sock, addr)) != 0) {
@@ -419,7 +421,9 @@ nng_dial(nng_socket sid, const char *addr, nng_dialer *dp, int flags)
return (rv);
}
if (dp != NULL) {
- *dp = nni_ep_id(ep);
+ nng_dialer d;
+ d.id = nni_ep_id(ep);
+ *dp = d;
}
nni_ep_rele(ep);
nni_sock_rele(sock);
@@ -427,13 +431,13 @@ nng_dial(nng_socket sid, const char *addr, nng_dialer *dp, int flags)
}
int
-nng_listen(nng_socket sid, const char *addr, nng_listener *lp, int flags)
+nng_listen(nng_socket s, const char *addr, nng_listener *lp, int flags)
{
nni_ep * ep;
int rv;
nni_sock *sock;
- if ((rv = nni_sock_find(&sock, sid)) != 0) {
+ if ((rv = nni_sock_find(&sock, s.id)) != 0) {
return (rv);
}
if ((rv = nni_ep_create_listener(&ep, sock, addr)) != 0) {
@@ -447,7 +451,9 @@ nng_listen(nng_socket sid, const char *addr, nng_listener *lp, int flags)
}
if (lp != NULL) {
- *lp = nni_ep_id(ep);
+ nng_listener l;
+ l.id = nni_ep_id(ep);
+ *lp = l;
}
nni_ep_rele(ep);
nni_sock_rele(sock);
@@ -455,32 +461,34 @@ 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)
+nng_listener_create(nng_listener *lp, nng_socket s, const char *addr)
{
- nni_sock *s;
- nni_ep * ep;
- int rv;
+ nni_sock * sock;
+ nni_ep * ep;
+ int rv;
+ nng_listener l;
- if ((rv = nni_sock_find(&s, sid)) != 0) {
+ if ((rv = nni_sock_find(&sock, s.id)) != 0) {
return (rv);
}
- if ((rv = nni_ep_create_listener(&ep, s, addr)) != 0) {
- nni_sock_rele(s);
+ if ((rv = nni_ep_create_listener(&ep, sock, addr)) != 0) {
+ nni_sock_rele(sock);
return (rv);
}
- *lp = nni_ep_id(ep);
+ l.id = nni_ep_id(ep);
+ *lp = l;
nni_ep_rele(ep);
- nni_sock_rele(s);
+ nni_sock_rele(sock);
return (0);
}
int
-nng_listener_start(nng_listener id, int flags)
+nng_listener_start(nng_listener l, int flags)
{
nni_ep *ep;
int rv;
- if ((rv = nni_ep_find(&ep, id)) != 0) {
+ if ((rv = nni_ep_find(&ep, l.id)) != 0) {
return (rv);
}
rv = nni_ep_listen(ep, flags);
@@ -489,32 +497,34 @@ nng_listener_start(nng_listener id, int flags)
}
int
-nng_dialer_create(nng_dialer *dp, nng_socket sid, const char *addr)
+nng_dialer_create(nng_dialer *dp, nng_socket s, const char *addr)
{
- nni_sock *s;
- nni_ep * ep;
- int rv;
+ nni_sock * sock;
+ nni_ep * ep;
+ int rv;
+ nng_dialer d;
- if ((rv = nni_sock_find(&s, sid)) != 0) {
+ if ((rv = nni_sock_find(&sock, s.id)) != 0) {
return (rv);
}
- if ((rv = nni_ep_create_dialer(&ep, s, addr)) != 0) {
- nni_sock_rele(s);
+ if ((rv = nni_ep_create_dialer(&ep, sock, addr)) != 0) {
+ nni_sock_rele(sock);
return (rv);
}
- *dp = nni_ep_id(ep);
+ d.id = nni_ep_id(ep);
+ *dp = d;
nni_ep_rele(ep);
- nni_sock_rele(s);
+ nni_sock_rele(sock);
return (0);
}
int
-nng_dialer_start(nng_dialer id, int flags)
+nng_dialer_start(nng_dialer d, int flags)
{
nni_ep *ep;
int rv;
- if ((rv = nni_ep_find(&ep, id)) != 0) {
+ if ((rv = nni_ep_find(&ep, d.id)) != 0) {
return (rv);
}
rv = nni_ep_dial(ep, flags);
@@ -566,251 +576,250 @@ nng_ep_getx(uint32_t id, const char *n, void *v, size_t *szp, int mode, int t)
}
static int
-nng_dialer_setx(nng_dialer id, const char *nm, const void *v, size_t sz, int t)
+nng_dialer_setx(nng_dialer d, const char *nm, const void *v, size_t sz, int t)
{
- return (nng_ep_setx(id, nm, v, sz, NNI_EP_MODE_DIAL, t));
+ return (nng_ep_setx(d.id, nm, v, sz, NNI_EP_MODE_DIAL, t));
}
int
-nng_dialer_setopt(nng_dialer id, const char *name, const void *v, size_t sz)
+nng_dialer_setopt(nng_dialer d, const char *name, const void *v, size_t sz)
{
- return (nng_dialer_setx(id, name, v, sz, NNI_TYPE_OPAQUE));
+ return (nng_dialer_setx(d, name, v, sz, NNI_TYPE_OPAQUE));
}
int
-nng_dialer_setopt_bool(nng_dialer id, const char *name, bool v)
+nng_dialer_setopt_bool(nng_dialer d, const char *name, bool v)
{
- return (nng_dialer_setx(id, name, &v, sizeof(v), NNI_TYPE_BOOL));
+ return (nng_dialer_setx(d, name, &v, sizeof(v), NNI_TYPE_BOOL));
}
int
-nng_dialer_setopt_int(nng_dialer id, const char *name, int v)
+nng_dialer_setopt_int(nng_dialer d, const char *name, int v)
{
- return (nng_dialer_setx(id, name, &v, sizeof(v), NNI_TYPE_INT32));
+ return (nng_dialer_setx(d, name, &v, sizeof(v), NNI_TYPE_INT32));
}
int
-nng_dialer_setopt_size(nng_dialer id, const char *name, size_t v)
+nng_dialer_setopt_size(nng_dialer d, const char *name, size_t v)
{
- return (nng_dialer_setx(id, name, &v, sizeof(v), NNI_TYPE_SIZE));
+ return (nng_dialer_setx(d, name, &v, sizeof(v), NNI_TYPE_SIZE));
}
int
-nng_dialer_setopt_ms(nng_dialer id, const char *name, nng_duration v)
+nng_dialer_setopt_ms(nng_dialer d, const char *name, nng_duration v)
{
- return (nng_dialer_setx(id, name, &v, sizeof(v), NNI_TYPE_DURATION));
+ return (nng_dialer_setx(d, name, &v, sizeof(v), NNI_TYPE_DURATION));
}
int
-nng_dialer_setopt_uint64(nng_dialer id, const char *name, uint64_t v)
+nng_dialer_setopt_uint64(nng_dialer d, const char *name, uint64_t v)
{
- return (nng_dialer_setx(id, name, &v, sizeof(v), NNI_TYPE_UINT64));
+ return (nng_dialer_setx(d, name, &v, sizeof(v), NNI_TYPE_UINT64));
}
int
-nng_dialer_setopt_ptr(nng_dialer id, const char *name, void *v)
+nng_dialer_setopt_ptr(nng_dialer d, const char *name, void *v)
{
- return (nng_dialer_setx(id, name, &v, sizeof(v), NNI_TYPE_POINTER));
+ return (nng_dialer_setx(d, name, &v, sizeof(v), NNI_TYPE_POINTER));
}
int
-nng_dialer_setopt_string(nng_dialer id, const char *name, const char *v)
+nng_dialer_setopt_string(nng_dialer d, const char *name, const char *v)
{
- return (nng_dialer_setx(id, name, v, strlen(v) + 1, NNI_TYPE_STRING));
+ return (nng_dialer_setx(d, name, v, strlen(v) + 1, NNI_TYPE_STRING));
}
static int
-nng_dialer_getx(nng_dialer id, const char *n, void *v, size_t *szp, int t)
+nng_dialer_getx(nng_dialer d, const char *n, void *v, size_t *szp, int t)
{
- return (nng_ep_getx(id, n, v, szp, NNI_EP_MODE_DIAL, t));
+ return (nng_ep_getx(d.id, n, v, szp, NNI_EP_MODE_DIAL, t));
}
int
-nng_dialer_getopt(nng_dialer id, const char *name, void *val, size_t *szp)
+nng_dialer_getopt(nng_dialer d, const char *name, void *val, size_t *szp)
{
- return (nng_dialer_getx(id, name, val, szp, NNI_TYPE_OPAQUE));
+ return (nng_dialer_getx(d, name, val, szp, NNI_TYPE_OPAQUE));
}
int
-nng_dialer_getopt_bool(nng_dialer id, const char *name, bool *vp)
+nng_dialer_getopt_bool(nng_dialer d, const char *name, bool *vp)
{
size_t sz = sizeof(*vp);
- return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_BOOL));
+ return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_BOOL));
}
int
-nng_dialer_getopt_int(nng_dialer id, const char *name, int *vp)
+nng_dialer_getopt_int(nng_dialer d, const char *name, int *vp)
{
size_t sz = sizeof(*vp);
- return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_INT32));
+ return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_INT32));
}
int
-nng_dialer_getopt_size(nng_dialer id, const char *name, size_t *vp)
+nng_dialer_getopt_size(nng_dialer d, const char *name, size_t *vp)
{
size_t sz = sizeof(*vp);
- return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_SIZE));
+ return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_SIZE));
}
int
-nng_dialer_getopt_sockaddr(nng_dialer id, const char *name, nng_sockaddr *vp)
+nng_dialer_getopt_sockaddr(nng_dialer d, const char *name, nng_sockaddr *vp)
{
size_t sz = sizeof(*vp);
- return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_SOCKADDR));
+ return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_SOCKADDR));
}
int
-nng_dialer_getopt_uint64(nng_dialer id, const char *name, uint64_t *vp)
+nng_dialer_getopt_uint64(nng_dialer d, const char *name, uint64_t *vp)
{
size_t sz = sizeof(*vp);
- return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_UINT64));
+ return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_UINT64));
}
int
-nng_dialer_getopt_ptr(nng_dialer id, const char *name, void **vp)
+nng_dialer_getopt_ptr(nng_dialer d, const char *name, void **vp)
{
size_t sz = sizeof(*vp);
- return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_POINTER));
+ return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_POINTER));
}
int
-nng_dialer_getopt_string(nng_dialer id, const char *name, char **vp)
+nng_dialer_getopt_string(nng_dialer d, const char *name, char **vp)
{
size_t sz = sizeof(*vp);
- return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_STRING));
+ return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_STRING));
}
int
-nng_dialer_getopt_ms(nng_dialer id, const char *name, nng_duration *vp)
+nng_dialer_getopt_ms(nng_dialer d, const char *name, nng_duration *vp)
{
size_t sz = sizeof(*vp);
- return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_DURATION));
+ return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_DURATION));
}
int
nng_listener_setx(
- nng_listener id, const char *name, const void *v, size_t sz, int t)
+ nng_listener l, const char *name, const void *v, size_t sz, int t)
{
- return (nng_ep_setx(id, name, v, sz, NNI_EP_MODE_LISTEN, t));
+ return (nng_ep_setx(l.id, name, v, sz, NNI_EP_MODE_LISTEN, t));
}
int
-nng_listener_setopt(
- nng_listener id, const char *name, const void *v, size_t sz)
+nng_listener_setopt(nng_listener l, const char *name, const void *v, size_t sz)
{
- return (nng_listener_setx(id, name, v, sz, NNI_TYPE_OPAQUE));
+ return (nng_listener_setx(l, name, v, sz, NNI_TYPE_OPAQUE));
}
int
-nng_listener_setopt_bool(nng_listener id, const char *name, bool v)
+nng_listener_setopt_bool(nng_listener l, const char *name, bool v)
{
- return (nng_listener_setx(id, name, &v, sizeof(v), NNI_TYPE_BOOL));
+ return (nng_listener_setx(l, name, &v, sizeof(v), NNI_TYPE_BOOL));
}
int
-nng_listener_setopt_int(nng_listener id, const char *name, int v)
+nng_listener_setopt_int(nng_listener l, const char *name, int v)
{
- return (nng_listener_setx(id, name, &v, sizeof(v), NNI_TYPE_INT32));
+ return (nng_listener_setx(l, name, &v, sizeof(v), NNI_TYPE_INT32));
}
int
-nng_listener_setopt_size(nng_listener id, const char *name, size_t v)
+nng_listener_setopt_size(nng_listener l, const char *name, size_t v)
{
- return (nng_listener_setx(id, name, &v, sizeof(v), NNI_TYPE_SIZE));
+ return (nng_listener_setx(l, name, &v, sizeof(v), NNI_TYPE_SIZE));
}
int
-nng_listener_setopt_ms(nng_listener id, const char *name, nng_duration v)
+nng_listener_setopt_ms(nng_listener l, const char *name, nng_duration v)
{
- return (nng_listener_setx(id, name, &v, sizeof(v), NNI_TYPE_DURATION));
+ return (nng_listener_setx(l, name, &v, sizeof(v), NNI_TYPE_DURATION));
}
int
-nng_listener_setopt_uint64(nng_listener id, const char *name, uint64_t v)
+nng_listener_setopt_uint64(nng_listener l, const char *name, uint64_t v)
{
- return (nng_listener_setx(id, name, &v, sizeof(v), NNI_TYPE_UINT64));
+ return (nng_listener_setx(l, name, &v, sizeof(v), NNI_TYPE_UINT64));
}
int
-nng_listener_setopt_ptr(nng_listener id, const char *name, void *v)
+nng_listener_setopt_ptr(nng_listener l, const char *name, void *v)
{
- return (nng_listener_setx(id, name, &v, sizeof(v), NNI_TYPE_POINTER));
+ return (nng_listener_setx(l, name, &v, sizeof(v), NNI_TYPE_POINTER));
}
int
-nng_listener_setopt_string(nng_listener id, const char *n, const char *v)
+nng_listener_setopt_string(nng_listener l, const char *n, const char *v)
{
- return (nng_listener_setx(id, n, v, strlen(v) + 1, NNI_TYPE_STRING));
+ return (nng_listener_setx(l, n, v, strlen(v) + 1, NNI_TYPE_STRING));
}
int
nng_listener_getx(
- nng_listener id, const char *name, void *v, size_t *szp, int t)
+ nng_listener l, const char *name, void *v, size_t *szp, int t)
{
- return (nng_ep_getx(id, name, v, szp, NNI_EP_MODE_LISTEN, t));
+ return (nng_ep_getx(l.id, name, v, szp, NNI_EP_MODE_LISTEN, t));
}
int
-nng_listener_getopt(nng_listener id, const char *name, void *v, size_t *szp)
+nng_listener_getopt(nng_listener l, const char *name, void *v, size_t *szp)
{
- return (nng_listener_getx(id, name, v, szp, NNI_TYPE_OPAQUE));
+ return (nng_listener_getx(l, name, v, szp, NNI_TYPE_OPAQUE));
}
int
-nng_listener_getopt_bool(nng_listener id, const char *name, bool *vp)
+nng_listener_getopt_bool(nng_listener l, const char *name, bool *vp)
{
size_t sz = sizeof(*vp);
- return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_BOOL));
+ return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_BOOL));
}
int
-nng_listener_getopt_int(nng_listener id, const char *name, int *vp)
+nng_listener_getopt_int(nng_listener l, const char *name, int *vp)
{
size_t sz = sizeof(*vp);
- return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_INT32));
+ return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_INT32));
}
int
-nng_listener_getopt_size(nng_listener id, const char *name, size_t *vp)
+nng_listener_getopt_size(nng_listener l, const char *name, size_t *vp)
{
size_t sz = sizeof(*vp);
- return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_SIZE));
+ return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_SIZE));
}
int
nng_listener_getopt_sockaddr(
- nng_listener id, const char *name, nng_sockaddr *vp)
+ nng_listener l, const char *name, nng_sockaddr *vp)
{
size_t sz = sizeof(*vp);
- return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_SOCKADDR));
+ return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_SOCKADDR));
}
int
-nng_listener_getopt_uint64(nng_listener id, const char *name, uint64_t *vp)
+nng_listener_getopt_uint64(nng_listener l, const char *name, uint64_t *vp)
{
size_t sz = sizeof(*vp);
- return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_UINT64));
+ return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_UINT64));
}
int
-nng_listener_getopt_ptr(nng_listener id, const char *name, void **vp)
+nng_listener_getopt_ptr(nng_listener l, const char *name, void **vp)
{
size_t sz = sizeof(*vp);
- return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_POINTER));
+ return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_POINTER));
}
int
-nng_listener_getopt_string(nng_listener id, const char *name, char **vp)
+nng_listener_getopt_string(nng_listener l, const char *name, char **vp)
{
size_t sz = sizeof(*vp);
- return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_STRING));
+ return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_STRING));
}
int
-nng_listener_getopt_ms(nng_listener id, const char *name, nng_duration *vp)
+nng_listener_getopt_ms(nng_listener l, const char *name, nng_duration *vp)
{
size_t sz = sizeof(*vp);
- return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_DURATION));
+ return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_DURATION));
}
static int
@@ -834,17 +843,17 @@ nng_ep_close(uint32_t id, int mode)
int
nng_dialer_close(nng_dialer d)
{
- return (nng_ep_close((uint32_t) d, NNI_EP_MODE_DIAL));
+ return (nng_ep_close(d.id, NNI_EP_MODE_DIAL));
}
int
nng_listener_close(nng_listener l)
{
- return (nng_ep_close((uint32_t) l, NNI_EP_MODE_LISTEN));
+ return (nng_ep_close(l.id, NNI_EP_MODE_LISTEN));
}
static int
-nng_setx(nng_socket sid, const char *name, const void *val, size_t sz, int t)
+nng_setx(nng_socket s, const char *name, const void *val, size_t sz, int t)
{
nni_sock *sock;
int rv;
@@ -852,7 +861,7 @@ nng_setx(nng_socket sid, const char *name, const void *val, size_t sz, int t)
if ((rv = nni_init()) != 0) {
return (rv);
}
- if ((rv = nni_sock_find(&sock, sid)) != 0) {
+ if ((rv = nni_sock_find(&sock, s.id)) != 0) {
return (rv);
}
rv = nni_sock_setopt(sock, name, val, sz, t);
@@ -861,13 +870,13 @@ nng_setx(nng_socket sid, const char *name, const void *val, size_t sz, int t)
}
int
-nng_setopt(nng_socket sid, const char *name, const void *val, size_t sz)
+nng_setopt(nng_socket s, const char *name, const void *val, size_t sz)
{
- return (nng_setx(sid, name, val, sz, NNI_TYPE_OPAQUE));
+ return (nng_setx(s, name, val, sz, NNI_TYPE_OPAQUE));
}
static int
-nng_getx(nng_socket sid, const char *name, void *val, size_t *szp, int t)
+nng_getx(nng_socket s, const char *name, void *val, size_t *szp, int t)
{
nni_sock *sock;
int rv;
@@ -875,7 +884,7 @@ nng_getx(nng_socket sid, const char *name, void *val, size_t *szp, int t)
if ((rv = nni_init()) != 0) {
return (rv);
}
- if ((rv = nni_sock_find(&sock, sid)) != 0) {
+ if ((rv = nni_sock_find(&sock, s.id)) != 0) {
return (rv);
}
rv = nni_sock_getopt(sock, name, val, szp, t);
@@ -884,101 +893,101 @@ nng_getx(nng_socket sid, const char *name, void *val, size_t *szp, int t)
}
int
-nng_getopt(nng_socket sid, const char *name, void *val, size_t *szp)
+nng_getopt(nng_socket s, const char *name, void *val, size_t *szp)
{
- return (nng_getx(sid, name, val, szp, NNI_TYPE_OPAQUE));
+ return (nng_getx(s, name, val, szp, NNI_TYPE_OPAQUE));
}
// Convenience option wrappers.
int
-nng_setopt_int(nng_socket sid, const char *name, int val)
+nng_setopt_int(nng_socket s, const char *name, int val)
{
- return (nng_setx(sid, name, &val, sizeof(val), NNI_TYPE_INT32));
+ return (nng_setx(s, name, &val, sizeof(val), NNI_TYPE_INT32));
}
int
-nng_setopt_bool(nng_socket sid, const char *name, bool val)
+nng_setopt_bool(nng_socket s, const char *name, bool val)
{
- return (nng_setx(sid, name, &val, sizeof(val), NNI_TYPE_BOOL));
+ return (nng_setx(s, name, &val, sizeof(val), NNI_TYPE_BOOL));
}
int
-nng_setopt_size(nng_socket sid, const char *name, size_t val)
+nng_setopt_size(nng_socket s, const char *name, size_t val)
{
- return (nng_setx(sid, name, &val, sizeof(val), NNI_TYPE_SIZE));
+ return (nng_setx(s, name, &val, sizeof(val), NNI_TYPE_SIZE));
}
int
-nng_setopt_ms(nng_socket sid, const char *name, nng_duration val)
+nng_setopt_ms(nng_socket s, const char *name, nng_duration val)
{
- return (nng_setx(sid, name, &val, sizeof(val), NNI_TYPE_DURATION));
+ return (nng_setx(s, name, &val, sizeof(val), NNI_TYPE_DURATION));
}
int
-nng_setopt_uint64(nng_socket sid, const char *name, uint64_t val)
+nng_setopt_uint64(nng_socket s, const char *name, uint64_t val)
{
- return (nng_setx(sid, name, &val, sizeof(val), NNI_TYPE_UINT64));
+ return (nng_setx(s, name, &val, sizeof(val), NNI_TYPE_UINT64));
}
int
-nng_setopt_ptr(nng_socket sid, const char *name, void *val)
+nng_setopt_ptr(nng_socket s, const char *name, void *val)
{
- return (nng_setx(sid, name, &val, sizeof(val), NNI_TYPE_POINTER));
+ return (nng_setx(s, name, &val, sizeof(val), NNI_TYPE_POINTER));
}
int
-nng_setopt_string(nng_socket sid, const char *name, const char *val)
+nng_setopt_string(nng_socket s, const char *name, const char *val)
{
- return (nng_setx(sid, name, val, strlen(val) + 1, NNI_TYPE_STRING));
+ return (nng_setx(s, name, val, strlen(val) + 1, NNI_TYPE_STRING));
}
int
-nng_getopt_bool(nng_socket sid, const char *name, bool *valp)
+nng_getopt_bool(nng_socket s, const char *name, bool *valp)
{
size_t sz = sizeof(*valp);
- return (nng_getx(sid, name, valp, &sz, NNI_TYPE_BOOL));
+ return (nng_getx(s, name, valp, &sz, NNI_TYPE_BOOL));
}
int
-nng_getopt_int(nng_socket sid, const char *name, int *valp)
+nng_getopt_int(nng_socket s, const char *name, int *valp)
{
size_t sz = sizeof(*valp);
- return (nng_getx(sid, name, valp, &sz, NNI_TYPE_INT32));
+ return (nng_getx(s, name, valp, &sz, NNI_TYPE_INT32));
}
int
-nng_getopt_size(nng_socket sid, const char *name, size_t *valp)
+nng_getopt_size(nng_socket s, const char *name, size_t *valp)
{
size_t sz = sizeof(*valp);
- return (nng_getx(sid, name, valp, &sz, NNI_TYPE_SIZE));
+ return (nng_getx(s, name, valp, &sz, NNI_TYPE_SIZE));
}
int
-nng_getopt_uint64(nng_socket sid, const char *name, uint64_t *valp)
+nng_getopt_uint64(nng_socket s, const char *name, uint64_t *valp)
{
size_t sz = sizeof(*valp);
- return (nng_getx(sid, name, valp, &sz, NNI_TYPE_UINT64));
+ return (nng_getx(s, name, valp, &sz, NNI_TYPE_UINT64));
}
int
-nng_getopt_ms(nng_socket sid, const char *name, nng_duration *valp)
+nng_getopt_ms(nng_socket s, const char *name, nng_duration *valp)
{
size_t sz = sizeof(*valp);
- return (nng_getx(sid, name, valp, &sz, NNI_TYPE_DURATION));
+ return (nng_getx(s, name, valp, &sz, NNI_TYPE_DURATION));
}
int
-nng_getopt_ptr(nng_socket sid, const char *name, void **valp)
+nng_getopt_ptr(nng_socket s, const char *name, void **valp)
{
size_t sz = sizeof(*valp);
- return (nng_getx(sid, name, valp, &sz, NNI_TYPE_DURATION));
+ return (nng_getx(s, name, valp, &sz, NNI_TYPE_DURATION));
}
int
-nng_getopt_string(nng_socket sid, const char *name, char **valp)
+nng_getopt_string(nng_socket s, const char *name, char **valp)
{
size_t sz = sizeof(*valp);
- return (nng_getx(sid, name, valp, &sz, NNI_TYPE_STRING));
+ return (nng_getx(s, name, valp, &sz, NNI_TYPE_STRING));
}
int
@@ -988,13 +997,13 @@ nng_device(nng_socket s1, nng_socket s2)
nni_sock *sock1 = NULL;
nni_sock *sock2 = NULL;
- if ((s1 > 0) && (s1 != (nng_socket) -1)) {
- if ((rv = nni_sock_find(&sock1, s1)) != 0) {
+ if ((s1.id > 0) && (s1.id != (uint32_t) -1)) {
+ if ((rv = nni_sock_find(&sock1, s1.id)) != 0) {
return (rv);
}
}
- if (((s2 > 0) && (s2 != (nng_socket) -1)) && (s2 != s1)) {
- if ((rv = nni_sock_find(&sock2, s2)) != 0) {
+ if (((s2.id > 0) && (s2.id != (uint32_t) -1)) && (s2.id != s1.id)) {
+ if ((rv = nni_sock_find(&sock2, s2.id)) != 0) {
nni_sock_rele(sock1);
return (rv);
}
@@ -1079,7 +1088,7 @@ nng_strerror(int num)
}
static int
-nng_pipe_getopt_x(nng_pipe id, const char *name, void *val, size_t *szp, int t)
+nng_pipe_getx(nng_pipe id, const char *name, void *val, size_t *szp, int t)
{
int rv;
nni_pipe *p;
@@ -1087,7 +1096,7 @@ nng_pipe_getopt_x(nng_pipe id, const char *name, void *val, size_t *szp, int t)
if ((rv = nni_init()) < 0) {
return (rv);
}
- if ((rv = nni_pipe_find(&p, id)) != 0) {
+ if ((rv = nni_pipe_find(&p, id.id)) != 0) {
return (rv);
}
rv = nni_pipe_getopt(p, name, val, szp, t);
@@ -1096,74 +1105,74 @@ nng_pipe_getopt_x(nng_pipe id, const char *name, void *val, size_t *szp, int t)
}
int
-nng_pipe_getopt(nng_pipe id, const char *name, void *val, size_t *szp)
+nng_pipe_getopt(nng_pipe p, const char *name, void *val, size_t *szp)
{
- return (nng_pipe_getopt_x(id, name, val, szp, NNI_TYPE_OPAQUE));
+ return (nng_pipe_getx(p, name, val, szp, NNI_TYPE_OPAQUE));
}
int
-nng_pipe_getopt_bool(nng_pipe id, const char *name, bool *valp)
+nng_pipe_getopt_bool(nng_pipe p, const char *name, bool *valp)
{
size_t sz = sizeof(*valp);
- return (nng_pipe_getopt_x(id, name, valp, &sz, NNI_TYPE_BOOL));
+ return (nng_pipe_getx(p, name, valp, &sz, NNI_TYPE_BOOL));
}
int
-nng_pipe_getopt_int(nng_pipe id, const char *name, int *valp)
+nng_pipe_getopt_int(nng_pipe p, const char *name, int *valp)
{
size_t sz = sizeof(*valp);
- return (nng_pipe_getopt_x(id, name, valp, &sz, NNI_TYPE_INT32));
+ return (nng_pipe_getx(p, name, valp, &sz, NNI_TYPE_INT32));
}
int
-nng_pipe_getopt_size(nng_pipe id, const char *name, size_t *valp)
+nng_pipe_getopt_size(nng_pipe p, const char *name, size_t *valp)
{
size_t sz = sizeof(*valp);
- return (nng_pipe_getopt_x(id, name, valp, &sz, NNI_TYPE_SIZE));
+ return (nng_pipe_getx(p, name, valp, &sz, NNI_TYPE_SIZE));
}
int
-nng_pipe_getopt_uint64(nng_pipe id, const char *name, uint64_t *valp)
+nng_pipe_getopt_uint64(nng_pipe p, const char *name, uint64_t *valp)
{
size_t sz = sizeof(*valp);
- return (nng_pipe_getopt_x(id, name, valp, &sz, NNI_TYPE_UINT64));
+ return (nng_pipe_getx(p, name, valp, &sz, NNI_TYPE_UINT64));
}
int
-nng_pipe_getopt_ms(nng_pipe id, const char *name, nng_duration *valp)
+nng_pipe_getopt_ms(nng_pipe p, const char *name, nng_duration *valp)
{
size_t sz = sizeof(*valp);
- return (nng_pipe_getopt_x(id, name, valp, &sz, NNI_TYPE_DURATION));
+ return (nng_pipe_getx(p, name, valp, &sz, NNI_TYPE_DURATION));
}
int
-nng_pipe_getopt_ptr(nng_pipe id, const char *name, void **valp)
+nng_pipe_getopt_ptr(nng_pipe p, const char *name, void **valp)
{
size_t sz = sizeof(*valp);
- return (nng_pipe_getopt_x(id, name, valp, &sz, NNI_TYPE_POINTER));
+ return (nng_pipe_getx(p, name, valp, &sz, NNI_TYPE_POINTER));
}
int
-nng_pipe_getopt_sockaddr(nng_pipe id, const char *name, nng_sockaddr *sap)
+nng_pipe_getopt_sockaddr(nng_pipe p, const char *name, nng_sockaddr *sap)
{
size_t sz = sizeof(*sap);
- return (nng_pipe_getopt_x(id, name, sap, &sz, NNI_TYPE_SOCKADDR));
+ return (nng_pipe_getx(p, name, sap, &sz, NNI_TYPE_SOCKADDR));
}
int
-nng_pipe_getopt_string(nng_pipe id, const char *name, char **valp)
+nng_pipe_getopt_string(nng_pipe p, const char *name, char **valp)
{
size_t sz = sizeof(*valp);
- return (nng_pipe_getopt_x(id, name, valp, &sz, NNI_TYPE_STRING));
+ return (nng_pipe_getx(p, name, valp, &sz, NNI_TYPE_STRING));
}
int
-nng_pipe_close(nng_pipe id)
+nng_pipe_close(nng_pipe pid)
{
int rv;
nni_pipe *p;
- if ((rv = nni_pipe_find(&p, id)) != 0) {
+ if ((rv = nni_pipe_find(&p, pid.id)) != 0) {
return (rv);
}
nni_pipe_close(p);
@@ -1347,13 +1356,15 @@ nng_msg_dup(nng_msg **dup, const nng_msg *src)
nng_pipe
nng_msg_get_pipe(const nng_msg *msg)
{
- return (nni_msg_get_pipe(msg));
+ nng_pipe p;
+ p.id = nni_msg_get_pipe(msg);
+ return (p);
}
void
nng_msg_set_pipe(nng_msg *msg, nng_pipe p)
{
- nni_msg_set_pipe(msg, p);
+ nni_msg_set_pipe(msg, p.id);
}
int
diff --git a/src/nng.h b/src/nng.h
index 52fc95a1..92c2f396 100644
--- a/src/nng.h
+++ b/src/nng.h
@@ -59,11 +59,33 @@ extern "C" {
#define NNG_MAXADDRLEN (128)
// Types common to nng.
-typedef uint32_t nng_socket;
-typedef uint32_t nng_ctx;
-typedef uint32_t nng_dialer;
-typedef uint32_t nng_listener;
-typedef uint32_t nng_pipe;
+
+// Identifiers are wrapped in a structure to improve compiler validation
+// of incorrect passing. This gives us strong type checking. Modern
+// compilers compile passing these by value to identical code as passing
+// the integer type (at least with optimization applied). Please do not
+// access the ID member directly.
+
+typedef struct nng_ctx_s {
+ uint32_t id;
+} nng_ctx;
+
+typedef struct nng_dialer_s {
+ uint32_t id;
+} nng_dialer;
+
+typedef struct nng_listener_s {
+ uint32_t id;
+} nng_listener;
+
+typedef struct nng_pipe_s {
+ uint32_t id;
+} nng_pipe;
+
+typedef struct nng_socket_s {
+ uint32_t id;
+} nng_socket;
+
typedef int32_t nng_duration; // in milliseconds
typedef struct nng_msg nng_msg;
typedef struct nng_snapshot nng_snapshot;
diff --git a/tests/bufsz.c b/tests/bufsz.c
index 4686a4e5..b7128ed4 100644
--- a/tests/bufsz.c
+++ b/tests/bufsz.c
@@ -61,7 +61,7 @@ TestMain("Buffer Options", {
// MUST NOT assume this. We only do so for testing.
Convey("Legacy Recv Buf Option", {
int cnt;
- int os = (int) s1;
+ int os = (int) s1.id;
size_t sz = sizeof(cnt);
So(nng_setopt_int(s1, NNG_OPT_RECVBUF, 10) == 0);
So(nn_getsockopt(
@@ -82,7 +82,7 @@ TestMain("Buffer Options", {
});
Convey("Legacy Send Buf Option", {
int cnt;
- int os = (int) s1;
+ int os = (int) s1.id;
size_t sz = sizeof(cnt);
So(nng_setopt_int(s1, NNG_OPT_SENDBUF, 10) == 0);
So(nn_getsockopt(
diff --git a/tests/message.c b/tests/message.c
index 2dfa67fb..bf212b48 100644
--- a/tests/message.c
+++ b/tests/message.c
@@ -1,6 +1,6 @@
//
-// Copyright 2017 Garrett D'Amore <garrett@damore.org>
-// Copyright 2017 Capitar IT Group BV <info@capitar.com>
+// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
// copy of which should be located in the distribution where this
@@ -113,9 +113,13 @@ TestMain("Message Tests", {
});
Convey("Pipe retrievals work", {
- So(nng_msg_get_pipe(msg) == 0);
- nng_msg_set_pipe(msg, (nng_pipe) 45);
- So(nng_msg_get_pipe(msg) == (nng_pipe) 45);
+ nng_pipe p;
+ p = nng_msg_get_pipe(msg);
+ So(p.id == 0);
+ p.id = 45;
+ nng_msg_set_pipe(msg, p);
+ p = nng_msg_get_pipe(msg);
+ So(p.id == 45);
});
Convey("Message realloc works", {
diff --git a/tests/multistress.c b/tests/multistress.c
index 0a98d5fc..1ae6f323 100644
--- a/tests/multistress.c
+++ b/tests/multistress.c
@@ -150,7 +150,7 @@ req_client(void *arg)
nng_msg * msg;
char buf[32];
- (void) snprintf(buf, sizeof(buf), "%d-%d", req, num++);
+ (void) snprintf(buf, sizeof(buf), "%u-%d", req.id, num++);
nng_msleep(rand() % 10);
@@ -212,8 +212,8 @@ reqrep_test(int ntests)
cli->name = "req";
getaddr(addr);
- dprintf("DOING reqrep0 (req %d rep %d) address: %s\n",
- cli->socket, srv->socket, addr);
+ dprintf("DOING reqrep0 (req %u rep %u) address: %s\n",
+ cli->socket.id, srv->socket.id, addr);
if ((rv = nng_listen(srv->socket, addr, NULL, 0)) != 0) {
fatal("nng_listen", rv);
@@ -296,8 +296,8 @@ pair0_test(void)
}
getaddr(addr);
- dprintf("DOING pair0 (%d, %d) address: %s\n", cli->socket, srv->socket,
- addr);
+ dprintf("DOING pair0 (%u, %u) address: %s\n", cli->socket.id,
+ srv->socket.id, addr);
if ((rv = nng_listen(srv->socket, addr, NULL, 0)) != 0) {
fatal("nng_listen", rv);
@@ -375,8 +375,8 @@ bus_test(void)
}
getaddr(addr);
- dprintf("DOING bus0 (%d, %d) address: %s\n", cli->socket, srv->socket,
- addr);
+ dprintf("DOING bus0 (%u, %u) address: %s\n", cli->socket.id,
+ srv->socket.id, addr);
if ((rv = nng_listen(srv->socket, addr, NULL, 0)) != 0) {
fatal("nng_listen", rv);
@@ -468,8 +468,8 @@ pubsub_test(int ntests)
cli->name = "sub";
getaddr(addr);
- dprintf("DOING pubsub0 (pub %d sub %d) address: %s\n",
- cli->socket, srv->socket, addr);
+ dprintf("DOING pubsub0 (pub %u sub %u) address: %s\n",
+ cli->socket.id, srv->socket.id, addr);
if ((rv = nng_listen(srv->socket, addr, NULL, 0)) != 0) {
fatal("nng_listen", rv);
@@ -563,8 +563,8 @@ pipeline0_test(int ntests)
cli->name = "pull";
getaddr(addr);
- dprintf("DOING pipeline0 (pull %d push %d) address: %s\n",
- cli->socket, srv->socket, addr);
+ dprintf("DOING pipeline0 (pull %u push %u) address: %s\n",
+ cli->socket.id, srv->socket.id, addr);
if ((rv = nng_listen(srv->socket, addr, NULL, 0)) != 0) {
fatal("nng_listen", rv);
@@ -637,10 +637,10 @@ Main({
if (cases[i].thr != NULL) {
nng_thread_destroy(cases[i].thr);
dprintf(
- "RESULT socket %d (%s) sent %d "
+ "RESULT socket %u (%s) sent %d "
"recd "
"%d fail %d\n",
- cases[i].socket, cases[i].name,
+ cases[i].socket.id, cases[i].name,
cases[i].nsend, cases[i].nrecv,
cases[i].nfail);
So(cases[i].nfail == 0);
diff --git a/tests/pair1.c b/tests/pair1.c
index ef3fe263..8a27bc6e 100644
--- a/tests/pair1.c
+++ b/tests/pair1.c
@@ -28,13 +28,14 @@
TestMain("PAIRv1 protocol", {
const char * templ = "inproc://pairv1/%u";
char addr[NNG_MAXADDRLEN + 1];
- nng_socket s1 = 0;
- nng_socket c1 = 0;
- nng_socket c2 = 0;
+ nng_socket s1;
+ nng_socket c1;
+ nng_socket c2;
nng_duration tmo;
uint32_t v;
size_t sz;
+ s1.id = c1.id = c2.id = 0;
atexit(nng_fini);
Convey("Given a few sockets", {
@@ -210,7 +211,7 @@ TestMain("PAIRv1 protocol", {
So(nng_recvmsg(s1, &msg, 0) == 0);
CHECKSTR(msg, "ONE");
p1 = nng_msg_get_pipe(msg);
- So(p1 != 0);
+ So(p1.id != 0);
nng_msg_free(msg);
So(nng_msg_alloc(&msg, 0) == 0);
@@ -219,10 +220,10 @@ TestMain("PAIRv1 protocol", {
So(nng_recvmsg(s1, &msg, 0) == 0);
CHECKSTR(msg, "TWO");
p2 = nng_msg_get_pipe(msg);
- So(p2 != 0);
+ So(p2.id != 0);
nng_msg_free(msg);
- So(p1 != p2);
+ So(p1.id != p2.id);
So(nng_msg_alloc(&msg, 0) == 0);
@@ -307,13 +308,15 @@ TestMain("PAIRv1 protocol", {
nng_msleep(20);
Convey("Send/recv work", {
+ nng_pipe p;
So(nng_msg_alloc(&msg, 0) == 0);
APPENDSTR(msg, "GAMMA");
So(nng_msg_header_append_u32(msg, 1) == 0);
So(nng_msg_header_len(msg) == sizeof(uint32_t));
So(nng_sendmsg(c1, msg, 0) == 0);
So(nng_recvmsg(s1, &msg, 0) == 0);
- So(nng_msg_get_pipe(msg) != 0);
+ p = nng_msg_get_pipe(msg);
+ So(p.id != 0);
CHECKSTR(msg, "GAMMA");
So(nng_msg_header_len(msg) == sizeof(uint32_t));
So(nng_msg_header_trim_u32(msg, &hops) == 0);
@@ -328,7 +331,8 @@ TestMain("PAIRv1 protocol", {
CHECKSTR(msg, "EPSILON");
So(nng_msg_header_len(msg) == sizeof(uint32_t));
So(nng_msg_header_trim_u32(msg, &hops) == 0);
- So(nng_msg_get_pipe(msg) != 0);
+ p = nng_msg_get_pipe(msg);
+ So(p.id != 0);
So(hops == 2);
nng_msg_free(msg);
});
@@ -470,7 +474,7 @@ TestMain("PAIRv1 protocol", {
So(nng_recvmsg(s1, &msg, 0) == 0);
CHECKSTR(msg, "ONE");
p1 = nng_msg_get_pipe(msg);
- So(p1 != 0);
+ So(p1.id != 0);
So(nng_msg_header_trim_u32(msg, &hops) == 0);
So(hops == 1);
nng_msg_free(msg);
@@ -481,12 +485,12 @@ TestMain("PAIRv1 protocol", {
So(nng_recvmsg(s1, &msg, 0) == 0);
CHECKSTR(msg, "TWO");
p2 = nng_msg_get_pipe(msg);
- So(p2 != 0);
+ So(p2.id != 0);
So(nng_msg_header_trim_u32(msg, &hops) == 0);
So(hops == 1);
nng_msg_free(msg);
- So(p1 != p2);
+ So(p1.id != p2.id);
So(nng_msg_alloc(&msg, 0) == 0);
nng_msg_set_pipe(msg, p1);
@@ -514,7 +518,7 @@ TestMain("PAIRv1 protocol", {
So(nng_recvmsg(s1, &msg, 0) == 0);
CHECKSTR(msg, "ONE");
p1 = nng_msg_get_pipe(msg);
- So(p1 != 0);
+ So(p1.id != 0);
nng_msg_free(msg);
nng_close(c1);
diff --git a/tests/reconnect.c b/tests/reconnect.c
index 6e7ab79f..4cd6cb3a 100644
--- a/tests/reconnect.c
+++ b/tests/reconnect.c
@@ -96,7 +96,7 @@ TestMain("Reconnect works", {
CHECKSTR(msg, "again");
p2 = nng_msg_get_pipe(msg);
nng_msg_free(msg);
- So(p2 != p1);
+ So(p2.id != p1.id);
});
});
});
diff --git a/tests/reqstress.c b/tests/reqstress.c
index 04cf73ab..3f1e7396 100644
--- a/tests/reqstress.c
+++ b/tests/reqstress.c
@@ -146,7 +146,7 @@ req_client(void *arg)
nng_msg * msg;
char buf[32];
- (void) snprintf(buf, sizeof(buf), "%d-%d", req, num++);
+ (void) snprintf(buf, sizeof(buf), "%u-%d", req.id, num++);
nng_msleep(rand() % 10);
@@ -208,8 +208,8 @@ reqrep_test(int ntests)
cli->name = "req";
getaddr(addr);
- dprintf("DOING reqrep0 (req %d rep %d) address: %s\n",
- cli->socket, srv->socket, addr);
+ dprintf("DOING reqrep0 (req %u rep %u) address: %s\n",
+ cli->socket.id, srv->socket.id, addr);
if ((rv = nng_listen(srv->socket, addr, NULL, 0)) != 0) {
fatal("nng_listen", rv);
@@ -261,10 +261,10 @@ Main({
if (cases[i].thr != NULL) {
nng_thread_destroy(cases[i].thr);
dprintf(
- "RESULT socket %d (%s) sent %d "
+ "RESULT socket %u (%s) sent %d "
"recd "
"%d fail %d\n",
- cases[i].socket, cases[i].name,
+ cases[i].socket.id, cases[i].name,
cases[i].nsend, cases[i].nrecv,
cases[i].nfail);
So(cases[i].nfail == 0);
diff --git a/tests/sock.c b/tests/sock.c
index 17ea055d..d6e36235 100644
--- a/tests/sock.c
+++ b/tests/sock.c
@@ -99,7 +99,7 @@ TestMain("Socket Operations", {
s1, NNG_OPT_SOCKNAME, name, &sz) == 0);
So(sz > 0 && sz < 64);
So(sz == nni_strnlen(name, 64) + 1);
- So(atoi(name) == (int) s1);
+ So(atoi(name) == (int) s1.id);
So(nng_setopt(
s1, NNG_OPT_SOCKNAME, "hello", 6) == 0);
@@ -336,7 +336,7 @@ TestMain("Socket Operations", {
nng_listener l;
rv = nng_listen(s1, a, &l, 0);
So(rv == 0);
- So(l != 0);
+ So(l.id != 0);
Convey("Second listen fails ADDRINUSE", {
rv = nng_listen(s1, a, NULL, 0);
@@ -369,10 +369,12 @@ TestMain("Socket Operations", {
});
Convey("Cannot access as listener", {
- bool b;
+ bool b;
+ nng_listener l;
+ l.id = ep.id;
So(nng_listener_getopt_bool(
- ep, NNG_OPT_RAW, &b) == NNG_ENOENT);
- So(nng_listener_close(ep) == NNG_ENOENT);
+ l, NNG_OPT_RAW, &b) == NNG_ENOENT);
+ So(nng_listener_close(l) == NNG_ENOENT);
});
Convey("Socket opts not for dialer", {
@@ -395,8 +397,11 @@ TestMain("Socket Operations", {
So(nng_dialer_setopt(ep, NNG_OPT_RECVMAXSZ,
"a", 1) == NNG_EINVAL);
});
- Convey("Cannot listen",
- { So(nng_listener_start(ep, 0) == NNG_ENOTSUP); });
+ Convey("Cannot listen", {
+ nng_listener l;
+ l.id = ep.id;
+ So(nng_listener_start(l, 0) == NNG_ENOTSUP);
+ });
});
@@ -413,10 +418,12 @@ TestMain("Socket Operations", {
So(sz == 4321);
});
Convey("Cannot access as dialer", {
- bool b;
+ bool b;
+ nng_dialer d;
+ d.id = ep.id;
So(nng_dialer_getopt_bool(
- ep, NNG_OPT_RAW, &b) == NNG_ENOENT);
- So(nng_dialer_close(ep) == NNG_ENOENT);
+ d, NNG_OPT_RAW, &b) == NNG_ENOENT);
+ So(nng_dialer_close(d) == NNG_ENOENT);
});
Convey("Socket opts not for listener", {
@@ -440,8 +447,11 @@ TestMain("Socket Operations", {
So(nng_listener_setopt(ep, NNG_OPT_RECVMAXSZ,
"a", 1) == NNG_EINVAL);
});
- Convey("Cannot dial",
- { So(nng_dialer_start(ep, 0) == NNG_ENOTSUP); });
+ Convey("Cannot dial", {
+ nng_dialer d;
+ d.id = ep.id;
+ So(nng_dialer_start(d, 0) == NNG_ENOTSUP);
+ });
});
Convey("Cannot access absent ep options", {
@@ -449,32 +459,36 @@ TestMain("Socket Operations", {
int i;
nng_duration t;
bool b;
+ nng_dialer d;
+ nng_listener l;
+ d.id = 1999;
+ l.id = 1999;
- So(nng_dialer_setopt_size(
- 1999, NNG_OPT_RECVMAXSZ, 10) == NNG_ENOENT);
+ So(nng_dialer_setopt_size(d, NNG_OPT_RECVMAXSZ, 10) ==
+ NNG_ENOENT);
So(nng_listener_setopt_size(
- 1999, NNG_OPT_RECVMAXSZ, 10) == NNG_ENOENT);
+ l, NNG_OPT_RECVMAXSZ, 10) == NNG_ENOENT);
s = 1;
- So(nng_dialer_getopt_bool(1999, NNG_OPT_RAW, &b) ==
+ So(nng_dialer_getopt_bool(d, NNG_OPT_RAW, &b) ==
NNG_ENOENT);
- So(nng_listener_getopt_bool(1999, NNG_OPT_RAW, &b) ==
+ So(nng_listener_getopt_bool(l, NNG_OPT_RAW, &b) ==
NNG_ENOENT);
- So(nng_dialer_getopt_size(
- 1999, NNG_OPT_RECVMAXSZ, &s) == NNG_ENOENT);
+ So(nng_dialer_getopt_size(d, NNG_OPT_RECVMAXSZ, &s) ==
+ NNG_ENOENT);
So(nng_listener_getopt_size(
- 1999, NNG_OPT_RECVMAXSZ, &s) == NNG_ENOENT);
+ l, NNG_OPT_RECVMAXSZ, &s) == NNG_ENOENT);
- So(nng_dialer_getopt_int(1999, NNG_OPT_RAW, &i) ==
+ So(nng_dialer_getopt_int(d, NNG_OPT_RAW, &i) ==
NNG_ENOENT);
- So(nng_listener_getopt_int(1999, NNG_OPT_RAW, &i) ==
+ So(nng_listener_getopt_int(l, NNG_OPT_RAW, &i) ==
NNG_ENOENT);
- So(nng_dialer_getopt_ms(1999, NNG_OPT_RECVTIMEO, &t) ==
+ So(nng_dialer_getopt_ms(d, NNG_OPT_RECVTIMEO, &t) ==
+ NNG_ENOENT);
+ So(nng_listener_getopt_ms(l, NNG_OPT_SENDTIMEO, &t) ==
NNG_ENOENT);
- So(nng_listener_getopt_ms(
- 1999, NNG_OPT_SENDTIMEO, &t) == NNG_ENOENT);
});
diff --git a/tests/surveyctx.c b/tests/surveyctx.c
index 9ab2de40..f4d8e703 100644
--- a/tests/surveyctx.c
+++ b/tests/surveyctx.c
@@ -266,7 +266,7 @@ TestMain("Surveyor concurrent contexts", {
nng_ctx_send(ctx, aio);
nng_aio_wait(aio);
So(nng_aio_result(aio) == 0);
- nng_recv_aio(ctx, aio);
+ nng_ctx_recv(ctx, aio);
nng_ctx_close(ctx);
nng_aio_wait(aio);
So(nng_aio_result(aio) == NNG_ECLOSED);
diff --git a/tests/tcp.c b/tests/tcp.c
index 2677222d..3d2ecfc8 100644
--- a/tests/tcp.c
+++ b/tests/tcp.c
@@ -30,7 +30,7 @@ check_props_v4(nng_msg *msg)
bool b;
p = nng_msg_get_pipe(msg);
- So(p > 0);
+ So(p.id > 0);
So(nng_pipe_getopt_sockaddr(p, NNG_OPT_LOCADDR, &la) == 0);
So(la.s_family == NNG_AF_INET);
So(la.s_in.sa_port == htons(trantest_port - 1));
diff --git a/tests/tcp6.c b/tests/tcp6.c
index 07990a36..80135b33 100644
--- a/tests/tcp6.c
+++ b/tests/tcp6.c
@@ -49,7 +49,7 @@ check_props_v6(nng_msg *msg)
nng_sockaddr la;
z = sizeof(nng_sockaddr);
p = nng_msg_get_pipe(msg);
- So(p > 0);
+ So(p.id > 0);
So(nng_pipe_getopt(p, NNG_OPT_LOCADDR, &la, &z) == 0);
So(z == sizeof(la));
So(la.s_family == NNG_AF_INET6);
@@ -62,7 +62,7 @@ check_props_v6(nng_msg *msg)
nng_sockaddr ra;
z = sizeof(nng_sockaddr);
p = nng_msg_get_pipe(msg);
- So(p > 0);
+ So(p.id > 0);
So(nng_pipe_getopt(p, NNG_OPT_REMADDR, &ra, &z) == 0);
So(z == sizeof(ra));
So(ra.s_family == NNG_AF_INET6);
diff --git a/tests/tls.c b/tests/tls.c
index 4ce12ea8..71e28deb 100644
--- a/tests/tls.c
+++ b/tests/tls.c
@@ -114,7 +114,7 @@ check_props_v4(nng_msg *msg)
nng_sockaddr ra;
p = nng_msg_get_pipe(msg);
- So(p > 0);
+ So(p.id > 0);
// Typed access
So(nng_pipe_getopt_sockaddr(p, NNG_OPT_LOCADDR, &la) == 0);
@@ -426,7 +426,7 @@ TestMain("TLS Transport", {
So(nng_msg_len(msg) == 6);
So(strcmp(nng_msg_body(msg), "hello") == 0);
p = nng_msg_get_pipe(msg);
- So(p > 0);
+ So(p.id > 0);
So(nng_pipe_getopt_bool(p, NNG_OPT_TLS_VERIFIED, &b) == 0);
So(b == false);
nng_msg_free(msg);
@@ -468,7 +468,7 @@ TestMain("TLS Transport", {
So(nng_msg_len(msg) == 6);
So(strcmp(nng_msg_body(msg), "hello") == 0);
p = nng_msg_get_pipe(msg);
- So(p > 0);
+ So(p.id > 0);
So(nng_pipe_getopt_bool(p, NNG_OPT_TLS_VERIFIED, &b) == 0);
So(b == true);
int i;
diff --git a/tests/trantest.h b/tests/trantest.h
index cbed58f3..ed1eccb7 100644
--- a/tests/trantest.h
+++ b/tests/trantest.h
@@ -172,7 +172,7 @@ trantest_dial(trantest *tt, nng_dialer *dp)
{
nng_dialer d;
int rv;
- *dp = 0;
+ d.id = 0;
rv = nng_dialer_create(&d, tt->reqsock, tt->addr);
if (rv != 0) {
@@ -197,7 +197,7 @@ trantest_listen(trantest *tt, nng_listener *lp)
{
int rv;
nng_listener l;
- *lp = 0;
+ l.id = 0;
rv = nng_listener_create(&l, tt->repsock, tt->addr);
if (rv != 0) {
@@ -231,12 +231,13 @@ void
trantest_conn_refused(trantest *tt)
{
Convey("Connection refused works", {
- nng_dialer d = 0;
+ nng_dialer d;
+ d.id = 0;
So(trantest_dial(tt, &d) == NNG_ECONNREFUSED);
- So(d == 0);
+ So(d.id == 0);
So(trantest_dial(tt, &d) == NNG_ECONNREFUSED);
- So(d == 0);
+ So(d.id == 0);
});
}
@@ -248,10 +249,10 @@ trantest_duplicate_listen(trantest *tt)
int rv;
rv = trantest_listen(tt, &l);
So(rv == 0);
- So(l != 0);
- l = 0;
+ So(l.id != 0);
+ l.id = 0;
So(trantest_listen(tt, &l) == NNG_EADDRINUSE);
- So(l == 0);
+ So(l.id == 0);
});
}
@@ -262,12 +263,12 @@ trantest_listen_accept(trantest *tt)
nng_listener l;
nng_dialer d;
So(trantest_listen(tt, &l) == 0);
- So(l != 0);
+ So(l.id != 0);
nng_msleep(200);
- d = 0;
+ d.id = 0;
So(trantest_dial(tt, &d) == 0);
- So(d != 0);
+ So(d.id != 0);
});
}
@@ -284,9 +285,9 @@ trantest_send_recv(trantest *tt)
char * url;
So(trantest_listen(tt, &l) == 0);
- So(l != 0);
+ So(l.id != 0);
So(trantest_dial(tt, &d) == 0);
- So(d != 0);
+ So(d.id != 0);
nng_msleep(200); // listener may be behind slightly
@@ -312,7 +313,7 @@ trantest_send_recv(trantest *tt)
So(nng_msg_len(recv) == strlen("acknowledge"));
So(strcmp(nng_msg_body(recv), "acknowledge") == 0);
p = nng_msg_get_pipe(recv);
- So(p != 0);
+ So(p.id != 0);
So(nng_pipe_getopt_string(p, NNG_OPT_URL, &url) == 0);
So(strcmp(url, tt->addr) == 0);
nng_strfree(url);
@@ -334,9 +335,9 @@ trantest_send_recv_multi(trantest *tt)
char msgbuf[16];
So(trantest_listen(tt, &l) == 0);
- So(l != 0);
+ So(l.id != 0);
So(trantest_dial(tt, &d) == 0);
- So(d != 0);
+ So(d.id != 0);
nng_msleep(200); // listener may be behind slightly
@@ -366,7 +367,7 @@ trantest_send_recv_multi(trantest *tt)
So(nng_msg_len(recv) == strlen(msgbuf) + 1);
So(strcmp(nng_msg_body(recv), msgbuf) == 0);
p = nng_msg_get_pipe(recv);
- So(p != 0);
+ So(p.id != 0);
So(nng_pipe_getopt_string(p, NNG_OPT_URL, &url) == 0);
So(strcmp(url, tt->addr) == 0);
nng_strfree(url);
@@ -386,9 +387,9 @@ trantest_check_properties(trantest *tt, trantest_proptest_t f)
int rv;
So(trantest_listen(tt, &l) == 0);
- So(l != 0);
+ So(l.id != 0);
So(trantest_dial(tt, &d) == 0);
- So(d != 0);
+ So(d.id != 0);
nng_msleep(200); // listener may be behind slightly
@@ -429,9 +430,9 @@ trantest_send_recv_large(trantest *tt)
}
So(trantest_listen(tt, &l) == 0);
- So(l != 0);
+ So(l.id != 0);
So(trantest_dial(tt, &d) == 0);
- So(d != 0);
+ So(d.id != 0);
nng_msleep(200); // listener may be behind slightly
diff --git a/tests/ws.c b/tests/ws.c
index 6db790f2..b58ac40f 100644
--- a/tests/ws.c
+++ b/tests/ws.c
@@ -32,7 +32,7 @@ check_props_v4(nng_msg *msg)
size_t len;
p = nng_msg_get_pipe(msg);
- So(p > 0);
+ So(p.id > 0);
So(nng_pipe_getopt_sockaddr(p, NNG_OPT_LOCADDR, &la) == 0);
So(la.s_family == NNG_AF_INET);
diff --git a/tests/wss.c b/tests/wss.c
index 89a26623..333af56c 100644
--- a/tests/wss.c
+++ b/tests/wss.c
@@ -141,7 +141,7 @@ check_props(nng_msg *msg)
size_t len;
p = nng_msg_get_pipe(msg);
- So(p > 0);
+ So(p.id > 0);
z = sizeof(nng_sockaddr);
So(nng_pipe_getopt(p, NNG_OPT_LOCADDR, &la, &z) == 0);
diff --git a/tests/wssfile.c b/tests/wssfile.c
index 41fb8f9f..6b1d1a7b 100644
--- a/tests/wssfile.c
+++ b/tests/wssfile.c
@@ -142,7 +142,7 @@ check_props(nng_msg *msg)
size_t len;
p = nng_msg_get_pipe(msg);
- So(p > 0);
+ So(p.id > 0);
// Typed
z = sizeof(nng_sockaddr);
@@ -349,7 +349,7 @@ TestMain("WebSocket Secure (TLS) Transport (file based)", {
So(nng_msg_len(msg) == 6);
So(strcmp(nng_msg_body(msg), "hello") == 0);
p = nng_msg_get_pipe(msg);
- So(p > 0);
+ So(p.id > 0);
So(nng_pipe_getopt_bool(p, NNG_OPT_TLS_VERIFIED, &b) == 0);
So(b == false);
nng_msg_free(msg);
@@ -391,7 +391,7 @@ TestMain("WebSocket Secure (TLS) Transport (file based)", {
So(nng_msg_len(msg) == 6);
So(strcmp(nng_msg_body(msg), "hello") == 0);
p = nng_msg_get_pipe(msg);
- So(p > 0);
+ So(p.id > 0);
So(nng_pipe_getopt_bool(p, NNG_OPT_TLS_VERIFIED, &b) == 0);
So(b == true);
nng_msg_free(msg);
diff --git a/tests/zt.c b/tests/zt.c
index bb16b714..d178f334 100644
--- a/tests/zt.c
+++ b/tests/zt.c
@@ -44,7 +44,7 @@ check_props(nng_msg *msg)
{
nng_pipe p;
p = nng_msg_get_pipe(msg);
- So(p > 0);
+ So(p.id > 0);
// Check local address.
Convey("Local address property works", {