aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/dialer.c6
-rw-r--r--src/core/dialer.h5
-rw-r--r--src/core/listener.c6
-rw-r--r--src/core/listener.h5
-rw-r--r--src/core/options.c38
-rw-r--r--src/core/transport.c2
-rw-r--r--src/nng.c23
-rw-r--r--src/transport/inproc/inproc.c327
-rw-r--r--src/transport/ipc/ipc.c4
9 files changed, 229 insertions, 187 deletions
diff --git a/src/core/dialer.c b/src/core/dialer.c
index 0c800333..f0589275 100644
--- a/src/core/dialer.c
+++ b/src/core/dialer.c
@@ -387,8 +387,8 @@ nni_dialer_sock(nni_dialer *d)
}
int
-nni_dialer_setopt(nni_dialer *d, const char *name, const void *val, size_t sz,
- nni_opt_type t)
+nni_dialer_setopt(
+ nni_dialer *d, const char *name, const void *val, size_t sz, nni_type t)
{
nni_option *o;
@@ -436,7 +436,7 @@ nni_dialer_setopt(nni_dialer *d, const char *name, const void *val, size_t sz,
int
nni_dialer_getopt(
- nni_dialer *d, const char *name, void *valp, size_t *szp, nni_opt_type t)
+ nni_dialer *d, const char *name, void *valp, size_t *szp, nni_type t)
{
nni_option *o;
diff --git a/src/core/dialer.h b/src/core/dialer.h
index da2cc992..af715955 100644
--- a/src/core/dialer.h
+++ b/src/core/dialer.h
@@ -1,6 +1,7 @@
//
// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
+// Copyright 2018 Devolutions <info@devolutions.net>
//
// This software is supplied under the terms of the MIT License, a
// copy of which should be located in the distribution where this
@@ -23,9 +24,9 @@ extern int nni_dialer_start(nni_dialer *, int);
extern nni_sock *nni_dialer_sock(nni_dialer *);
extern int nni_dialer_setopt(
- nni_dialer *, const char *, const void *, size_t, nni_opt_type);
+ nni_dialer *, const char *, const void *, size_t, nni_type);
extern int nni_dialer_getopt(
- nni_dialer *, const char *, void *, size_t *, nni_opt_type);
+ nni_dialer *, const char *, void *, size_t *, nni_type);
extern void nni_dialer_add_stat(nni_dialer *, nni_stat_item *);
#endif // CORE_DIALER_H
diff --git a/src/core/listener.c b/src/core/listener.c
index bb46b6cb..df6dab11 100644
--- a/src/core/listener.c
+++ b/src/core/listener.c
@@ -362,8 +362,8 @@ nni_listener_sock(nni_listener *l)
}
int
-nni_listener_setopt(nni_listener *l, const char *name, const void *val,
- size_t sz, nni_opt_type t)
+nni_listener_setopt(
+ nni_listener *l, const char *name, const void *val, size_t sz, nni_type t)
{
nni_option *o;
@@ -394,7 +394,7 @@ nni_listener_setopt(nni_listener *l, const char *name, const void *val,
int
nni_listener_getopt(
- nni_listener *l, const char *name, void *valp, size_t *szp, nni_opt_type t)
+ nni_listener *l, const char *name, void *valp, size_t *szp, nni_type t)
{
nni_option *o;
diff --git a/src/core/listener.h b/src/core/listener.h
index 828102a2..12974880 100644
--- a/src/core/listener.h
+++ b/src/core/listener.h
@@ -1,6 +1,7 @@
//
// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
+// Copyright 2018 Devolutions <info@devolutions.net>
//
// This software is supplied under the terms of the MIT License, a
// copy of which should be located in the distribution where this
@@ -23,9 +24,9 @@ extern int nni_listener_start(nni_listener *, int);
extern nni_sock *nni_listener_sock(nni_listener *);
extern int nni_listener_setopt(
- nni_listener *, const char *, const void *, size_t, nni_opt_type);
+ nni_listener *, const char *, const void *, size_t, nni_type);
extern int nni_listener_getopt(
- nni_listener *, const char *, void *, size_t *, nni_opt_type);
+ nni_listener *, const char *, void *, size_t *, nni_type);
extern void nni_listener_add_stat(nni_listener *, nni_stat_item *);
#endif // CORE_LISTENER_H
diff --git a/src/core/options.c b/src/core/options.c
index 23118116..0b15d6e2 100644
--- a/src/core/options.c
+++ b/src/core/options.c
@@ -15,7 +15,7 @@
#include <string.h>
int
-nni_copyin_ms(nni_duration *dp, const void *v, size_t sz, nni_opt_type t)
+nni_copyin_ms(nni_duration *dp, const void *v, size_t sz, nni_type t)
{
nni_duration dur;
@@ -43,7 +43,7 @@ nni_copyin_ms(nni_duration *dp, const void *v, size_t sz, nni_opt_type t)
}
int
-nni_copyin_bool(bool *bp, const void *v, size_t sz, nni_opt_type t)
+nni_copyin_bool(bool *bp, const void *v, size_t sz, nni_type t)
{
switch (t) {
case NNI_TYPE_BOOL:
@@ -68,7 +68,7 @@ nni_copyin_bool(bool *bp, const void *v, size_t sz, nni_opt_type t)
int
nni_copyin_int(
- int *ip, const void *v, size_t sz, int minv, int maxv, nni_opt_type t)
+ int *ip, const void *v, size_t sz, int minv, int maxv, nni_type t)
{
int i;
@@ -98,8 +98,8 @@ nni_copyin_int(
}
int
-nni_copyin_size(size_t *sp, const void *v, size_t sz, size_t minv, size_t maxv,
- nni_opt_type t)
+nni_copyin_size(
+ size_t *sp, const void *v, size_t sz, size_t minv, size_t maxv, nni_type t)
{
size_t val;
@@ -128,7 +128,7 @@ nni_copyin_size(size_t *sp, const void *v, size_t sz, size_t minv, size_t maxv,
}
int
-nni_copyin_ptr(void **pp, const void *v, size_t sz, nni_opt_type t)
+nni_copyin_ptr(void **pp, const void *v, size_t sz, nni_type t)
{
void *p;
@@ -152,7 +152,7 @@ nni_copyin_ptr(void **pp, const void *v, size_t sz, nni_opt_type t)
}
int
-nni_copyin_str(char *s, const void *v, size_t sz, size_t maxsz, nni_opt_type t)
+nni_copyin_str(char *s, const void *v, size_t sz, size_t maxsz, nni_type t)
{
size_t z;
@@ -176,7 +176,7 @@ nni_copyin_str(char *s, const void *v, size_t sz, size_t maxsz, nni_opt_type t)
}
int
-nni_copyin_u64(uint64_t *up, const void *v, size_t sz, nni_opt_type t)
+nni_copyin_u64(uint64_t *up, const void *v, size_t sz, nni_type t)
{
uint64_t u;
@@ -200,7 +200,7 @@ nni_copyin_u64(uint64_t *up, const void *v, size_t sz, nni_opt_type t)
}
int
-nni_copyin_sockaddr(nng_sockaddr *ap, const void *v, size_t sz, nni_opt_type t)
+nni_copyin_sockaddr(nng_sockaddr *ap, const void *v, size_t sz, nni_type t)
{
nng_sockaddr a;
@@ -241,7 +241,7 @@ nni_copyout(const void *src, size_t srcsz, void *dst, size_t *dstszp)
}
int
-nni_copyout_bool(bool b, void *dst, size_t *szp, nni_opt_type t)
+nni_copyout_bool(bool b, void *dst, size_t *szp, nni_type t)
{
switch (t) {
case NNI_TYPE_BOOL:
@@ -256,7 +256,7 @@ nni_copyout_bool(bool b, void *dst, size_t *szp, nni_opt_type t)
}
int
-nni_copyout_int(int i, void *dst, size_t *szp, nni_opt_type t)
+nni_copyout_int(int i, void *dst, size_t *szp, nni_type t)
{
switch (t) {
case NNI_TYPE_INT32:
@@ -271,7 +271,7 @@ nni_copyout_int(int i, void *dst, size_t *szp, nni_opt_type t)
}
int
-nni_copyout_ms(nng_duration d, void *dst, size_t *szp, nni_opt_type t)
+nni_copyout_ms(nng_duration d, void *dst, size_t *szp, nni_type t)
{
switch (t) {
case NNI_TYPE_DURATION:
@@ -286,7 +286,7 @@ nni_copyout_ms(nng_duration d, void *dst, size_t *szp, nni_opt_type t)
}
int
-nni_copyout_ptr(void *p, void *dst, size_t *szp, nni_opt_type t)
+nni_copyout_ptr(void *p, void *dst, size_t *szp, nni_type t)
{
switch (t) {
case NNI_TYPE_POINTER:
@@ -301,7 +301,7 @@ nni_copyout_ptr(void *p, void *dst, size_t *szp, nni_opt_type t)
}
int
-nni_copyout_size(size_t s, void *dst, size_t *szp, nni_opt_type t)
+nni_copyout_size(size_t s, void *dst, size_t *szp, nni_type t)
{
switch (t) {
case NNI_TYPE_SIZE:
@@ -317,7 +317,7 @@ nni_copyout_size(size_t s, void *dst, size_t *szp, nni_opt_type t)
int
nni_copyout_sockaddr(
- const nng_sockaddr *sap, void *dst, size_t *szp, nni_opt_type t)
+ const nng_sockaddr *sap, void *dst, size_t *szp, nni_type t)
{
switch (t) {
case NNI_TYPE_SOCKADDR:
@@ -332,7 +332,7 @@ nni_copyout_sockaddr(
}
int
-nni_copyout_u64(uint64_t u, void *dst, size_t *szp, nni_opt_type t)
+nni_copyout_u64(uint64_t u, void *dst, size_t *szp, nni_type t)
{
switch (t) {
case NNI_TYPE_UINT64:
@@ -347,7 +347,7 @@ nni_copyout_u64(uint64_t u, void *dst, size_t *szp, nni_opt_type t)
}
int
-nni_copyout_str(const char *str, void *dst, size_t *szp, nni_opt_type t)
+nni_copyout_str(const char *str, void *dst, size_t *szp, nni_type t)
{
char *s;
@@ -370,7 +370,7 @@ nni_copyout_str(const char *str, void *dst, size_t *szp, nni_opt_type t)
int
nni_getopt(const nni_option *opts, const char *nm, void *arg, void *buf,
- size_t *szp, nni_opt_type otype)
+ size_t *szp, nni_type otype)
{
while (opts->o_name != NULL) {
if (strcmp(opts->o_name, nm) == 0) {
@@ -386,7 +386,7 @@ nni_getopt(const nni_option *opts, const char *nm, void *arg, void *buf,
int
nni_setopt(const nni_option *opts, const char *nm, void *arg, const void *buf,
- size_t sz, nni_opt_type otype)
+ size_t sz, nni_type otype)
{
while (opts->o_name != NULL) {
if (strcmp(opts->o_name, nm) == 0) {
diff --git a/src/core/transport.c b/src/core/transport.c
index da192416..54c4bcfe 100644
--- a/src/core/transport.c
+++ b/src/core/transport.c
@@ -128,6 +128,7 @@ nni_tran_chkopt(const char *name, const void *v, size_t sz, int typ)
if ((dops->d_setopt != NULL) &&
((rv = dops->d_setopt(NULL, name, v, sz, typ)) !=
NNG_ENOTSUP)) {
+ nni_mtx_unlock(&nni_tran_lk);
return (rv);
}
for (o = dops->d_options; o && o->o_name != NULL; o++) {
@@ -146,6 +147,7 @@ nni_tran_chkopt(const char *name, const void *v, size_t sz, int typ)
if ((lops->l_setopt != NULL) &&
((rv = lops->l_setopt(NULL, name, v, sz, typ)) !=
NNG_ENOTSUP)) {
+ nni_mtx_unlock(&nni_tran_lk);
return (rv);
}
for (o = lops->l_options; o && o->o_name != NULL; o++) {
diff --git a/src/nng.c b/src/nng.c
index 5e8ec384..3c818ee0 100644
--- a/src/nng.c
+++ b/src/nng.c
@@ -318,7 +318,7 @@ nng_ctx_send(nng_ctx cid, nng_aio *aio)
}
static int
-nng_ctx_getx(nng_ctx id, const char *n, void *v, size_t *szp, nni_opt_type t)
+nng_ctx_getx(nng_ctx id, const char *n, void *v, size_t *szp, nni_type t)
{
nni_ctx *ctx;
int rv;
@@ -369,8 +369,7 @@ nng_ctx_getopt_ms(nng_ctx id, const char *name, nng_duration *vp)
}
static int
-nng_ctx_setx(
- nng_ctx id, const char *n, const void *v, size_t sz, nni_opt_type t)
+nng_ctx_setx(nng_ctx id, const char *n, const void *v, size_t sz, nni_type t)
{
nni_ctx *ctx;
int rv;
@@ -561,7 +560,7 @@ nng_dialer_id(nng_dialer d)
static int
nng_dialer_setx(
- nng_dialer did, const char *n, const void *v, size_t sz, nni_opt_type t)
+ nng_dialer did, const char *n, const void *v, size_t sz, nni_type t)
{
nni_dialer *d;
int rv;
@@ -579,7 +578,7 @@ nng_dialer_setx(
static int
nng_dialer_getx(
- nng_dialer did, const char *n, void *v, size_t *szp, nni_opt_type t)
+ nng_dialer did, const char *n, void *v, size_t *szp, nni_type t)
{
nni_dialer *d;
int rv;
@@ -706,8 +705,8 @@ nng_dialer_getopt_ms(nng_dialer d, const char *name, nng_duration *vp)
}
int
-nng_listener_setx(nng_listener lid, const char *name, const void *v, size_t sz,
- nni_opt_type t)
+nng_listener_setx(
+ nng_listener lid, const char *name, const void *v, size_t sz, nni_type t)
{
nni_listener *l;
int rv;
@@ -773,7 +772,7 @@ nng_listener_setopt_string(nng_listener l, const char *n, const char *v)
int
nng_listener_getx(
- nng_listener lid, const char *name, void *v, size_t *szp, nni_opt_type t)
+ nng_listener lid, const char *name, void *v, size_t *szp, nni_type t)
{
nni_listener *l;
int rv;
@@ -880,7 +879,7 @@ nng_listener_close(nng_listener lid)
static int
nng_setx(
- nng_socket s, const char *name, const void *val, size_t sz, nni_opt_type t)
+ nng_socket s, const char *name, const void *val, size_t sz, nni_type t)
{
nni_sock *sock;
int rv;
@@ -903,8 +902,7 @@ nng_setopt(nng_socket s, const char *name, const void *val, size_t sz)
}
static int
-nng_getx(
- nng_socket s, const char *name, void *val, size_t *szp, nni_opt_type t)
+nng_getx(nng_socket s, const char *name, void *val, size_t *szp, nni_type t)
{
nni_sock *sock;
int rv;
@@ -1134,8 +1132,7 @@ nng_strerror(int num)
}
static int
-nng_pipe_getx(
- nng_pipe p, const char *name, void *val, size_t *szp, nni_opt_type t)
+nng_pipe_getx(nng_pipe p, const char *name, void *val, size_t *szp, nni_type t)
{
int rv;
nni_pipe *pipe;
diff --git a/src/transport/inproc/inproc.c b/src/transport/inproc/inproc.c
index 798a946f..40ab9107 100644
--- a/src/transport/inproc/inproc.c
+++ b/src/transport/inproc/inproc.c
@@ -1,6 +1,7 @@
//
// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
+// Copyright 2018 Devolutions <info@devolutions.net>
//
// This software is supplied under the terms of the MIT License, a
// copy of which should be located in the distribution where this
@@ -18,47 +19,47 @@
// peer to another. The inproc transport is only valid within the same
// process.
-typedef struct nni_inproc_pair nni_inproc_pair;
-typedef struct nni_inproc_pipe nni_inproc_pipe;
-typedef struct nni_inproc_ep nni_inproc_ep;
+typedef struct inproc_pair inproc_pair;
+typedef struct inproc_pipe inproc_pipe;
+typedef struct inproc_ep inproc_ep;
typedef struct {
nni_mtx mx;
nni_list servers;
-} nni_inproc_global;
-
-// nni_inproc_pipe represents one half of a connection.
-struct nni_inproc_pipe {
- const char * addr;
- nni_inproc_pair *pair;
- nni_msgq * rq;
- nni_msgq * wq;
- nni_pipe * npipe;
- uint16_t peer;
- uint16_t proto;
- size_t rcvmax;
- nni_stat_item st_rxbytes;
- nni_stat_item st_txbytes;
- nni_stat_item st_rxmsgs;
- nni_stat_item st_txmsgs;
- nni_stat_item st_rxdiscards;
- nni_stat_item st_txdiscards;
- nni_stat_item st_rxerrs;
- nni_stat_item st_txerrs;
- nni_stat_item st_rxoversize;
- nni_stat_item st_rcvmaxsz;
+} inproc_global;
+
+// inproc_pipe represents one half of a connection.
+struct inproc_pipe {
+ const char * addr;
+ inproc_pair * pair;
+ nni_msgq * rq;
+ nni_msgq * wq;
+ nni_pipe * npipe;
+ uint16_t peer;
+ uint16_t proto;
+ size_t rcvmax;
+ nni_stat_item st_rxbytes;
+ nni_stat_item st_txbytes;
+ nni_stat_item st_rxmsgs;
+ nni_stat_item st_txmsgs;
+ nni_stat_item st_rxdiscards;
+ nni_stat_item st_txdiscards;
+ nni_stat_item st_rxerrs;
+ nni_stat_item st_txerrs;
+ nni_stat_item st_rxoversize;
+ nni_stat_item st_rcvmaxsz;
};
-// nni_inproc_pair represents a pair of pipes. Because we control both
+// inproc_pair represents a pair of pipes. Because we control both
// sides of the pipes, we can allocate and free this in one structure.
-struct nni_inproc_pair {
- nni_mtx mx;
- int refcnt;
- nni_msgq * q[2];
- nni_inproc_pipe *pipes[2];
+struct inproc_pair {
+ nni_mtx mx;
+ int refcnt;
+ nni_msgq * q[2];
+ inproc_pipe *pipes[2];
};
-struct nni_inproc_ep {
+struct inproc_ep {
const char * addr;
bool listener;
nni_list_node node;
@@ -75,27 +76,27 @@ struct nni_inproc_ep {
// nni_inproc is our global state - this contains the list of active endpoints
// which we use for coordinating rendezvous.
-static nni_inproc_global nni_inproc;
+static inproc_global nni_inproc;
static int
-nni_inproc_init(void)
+inproc_init(void)
{
- NNI_LIST_INIT(&nni_inproc.servers, nni_inproc_ep, node);
+ NNI_LIST_INIT(&nni_inproc.servers, inproc_ep, node);
nni_mtx_init(&nni_inproc.mx);
return (0);
}
static void
-nni_inproc_fini(void)
+inproc_fini(void)
{
nni_mtx_fini(&nni_inproc.mx);
}
static void
-nni_inproc_pipe_close(void *arg)
+inproc_pipe_close(void *arg)
{
- nni_inproc_pipe *pipe = arg;
+ inproc_pipe *pipe = arg;
if (pipe->rq != NULL) {
nni_msgq_close(pipe->rq);
@@ -105,10 +106,10 @@ nni_inproc_pipe_close(void *arg)
}
}
-// nni_inproc_pair destroy is called when both pipe-ends of the pipe
+// inproc_pair destroy is called when both pipe-ends of the pipe
// have been destroyed.
static void
-nni_inproc_pair_destroy(nni_inproc_pair *pair)
+inproc_pair_destroy(inproc_pair *pair)
{
nni_msgq_fini(pair->q[0]);
nni_msgq_fini(pair->q[1]);
@@ -117,9 +118,9 @@ nni_inproc_pair_destroy(nni_inproc_pair *pair)
}
static int
-nni_inproc_pipe_alloc(nni_inproc_pipe **pipep, nni_inproc_ep *ep)
+inproc_pipe_alloc(inproc_pipe **pipep, inproc_ep *ep)
{
- nni_inproc_pipe *pipe;
+ inproc_pipe *pipe;
if ((pipe = NNI_ALLOC_STRUCT(pipe)) == NULL) {
return (NNG_ENOMEM);
@@ -189,10 +190,10 @@ inproc_get_rxerrs(nni_stat_item *st, void *arg)
#endif
static int
-nni_inproc_pipe_init(void *arg, nni_pipe *p)
+inproc_pipe_init(void *arg, nni_pipe *p)
{
- nni_inproc_pipe *pipe = arg;
- pipe->npipe = p;
+ inproc_pipe *pipe = arg;
+ pipe->npipe = p;
nni_stat_init(&pipe->st_rxbytes, "rxbytes", "bytes received (raw)");
nni_stat_set_update(&pipe->st_rxbytes, inproc_get_rxbytes, pipe->rq);
@@ -252,10 +253,10 @@ nni_inproc_pipe_init(void *arg, nni_pipe *p)
}
static void
-nni_inproc_pipe_fini(void *arg)
+inproc_pipe_fini(void *arg)
{
- nni_inproc_pipe *pipe = arg;
- nni_inproc_pair *pair;
+ inproc_pipe *pipe = arg;
+ inproc_pair *pair;
if ((pair = pipe->pair) != NULL) {
// If we are the last peer, then toss the pair structure.
@@ -268,7 +269,7 @@ nni_inproc_pipe_fini(void *arg)
pair->refcnt--;
if (pair->refcnt == 0) {
nni_mtx_unlock(&pair->mx);
- nni_inproc_pair_destroy(pair);
+ inproc_pair_destroy(pair);
} else {
nni_mtx_unlock(&pair->mx);
}
@@ -278,13 +279,13 @@ nni_inproc_pipe_fini(void *arg)
}
static void
-nni_inproc_pipe_send(void *arg, nni_aio *aio)
+inproc_pipe_send(void *arg, nni_aio *aio)
{
- nni_inproc_pipe *pipe = arg;
- nni_msg * msg = nni_aio_get_msg(aio);
- char * h;
- size_t l;
- int rv;
+ inproc_pipe *pipe = arg;
+ nni_msg * msg = nni_aio_get_msg(aio);
+ char * h;
+ size_t l;
+ int rv;
// We need to move any header data to the body, because the other
// side won't know what to do otherwise.
@@ -299,26 +300,26 @@ nni_inproc_pipe_send(void *arg, nni_aio *aio)
}
static void
-nni_inproc_pipe_recv(void *arg, nni_aio *aio)
+inproc_pipe_recv(void *arg, nni_aio *aio)
{
- nni_inproc_pipe *pipe = arg;
+ inproc_pipe *pipe = arg;
nni_msgq_aio_get(pipe->rq, aio);
}
static uint16_t
-nni_inproc_pipe_peer(void *arg)
+inproc_pipe_peer(void *arg)
{
- nni_inproc_pipe *pipe = arg;
+ inproc_pipe *pipe = arg;
return (pipe->peer);
}
static int
-nni_inproc_pipe_get_addr(void *arg, void *buf, size_t *szp, nni_opt_type t)
+inproc_pipe_get_addr(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
- nni_inproc_pipe *p = arg;
- nni_sockaddr sa;
+ inproc_pipe *p = arg;
+ nni_sockaddr sa;
memset(&sa, 0, sizeof(sa));
sa.s_inproc.sa_family = NNG_AF_INPROC;
@@ -327,10 +328,10 @@ nni_inproc_pipe_get_addr(void *arg, void *buf, size_t *szp, nni_opt_type t)
}
static int
-nni_inproc_dialer_init(void **epp, nni_url *url, nni_dialer *ndialer)
+inproc_dialer_init(void **epp, nni_url *url, nni_dialer *ndialer)
{
- nni_inproc_ep *ep;
- nni_sock * sock = nni_dialer_sock(ndialer);
+ inproc_ep *ep;
+ nni_sock * sock = nni_dialer_sock(ndialer);
if ((ep = NNI_ALLOC_STRUCT(ep)) == NULL) {
return (NNG_ENOMEM);
@@ -341,7 +342,7 @@ nni_inproc_dialer_init(void **epp, nni_url *url, nni_dialer *ndialer)
ep->proto = nni_sock_proto_id(sock);
ep->rcvmax = 0;
ep->ndialer = ndialer;
- NNI_LIST_INIT(&ep->clients, nni_inproc_ep, node);
+ NNI_LIST_INIT(&ep->clients, inproc_ep, node);
nni_aio_list_init(&ep->aios);
ep->addr = url->u_rawurl; // we match on the full URL.
@@ -358,10 +359,10 @@ nni_inproc_dialer_init(void **epp, nni_url *url, nni_dialer *ndialer)
}
static int
-nni_inproc_listener_init(void **epp, nni_url *url, nni_listener *nlistener)
+inproc_listener_init(void **epp, nni_url *url, nni_listener *nlistener)
{
- nni_inproc_ep *ep;
- nni_sock * sock = nni_listener_sock(nlistener);
+ inproc_ep *ep;
+ nni_sock * sock = nni_listener_sock(nlistener);
if ((ep = NNI_ALLOC_STRUCT(ep)) == NULL) {
return (NNG_ENOMEM);
@@ -372,7 +373,7 @@ nni_inproc_listener_init(void **epp, nni_url *url, nni_listener *nlistener)
ep->proto = nni_sock_proto_id(sock);
ep->rcvmax = 0;
ep->nlistener = nlistener;
- NNI_LIST_INIT(&ep->clients, nni_inproc_ep, node);
+ NNI_LIST_INIT(&ep->clients, inproc_ep, node);
nni_aio_list_init(&ep->aios);
ep->addr = url->u_rawurl; // we match on the full URL.
@@ -388,16 +389,15 @@ nni_inproc_listener_init(void **epp, nni_url *url, nni_listener *nlistener)
}
static void
-nni_inproc_ep_fini(void *arg)
+inproc_ep_fini(void *arg)
{
- nni_inproc_ep *ep = arg;
+ inproc_ep *ep = arg;
nni_mtx_fini(&ep->mtx);
NNI_FREE_STRUCT(ep);
}
static void
-inproc_conn_finish(
- nni_aio *aio, int rv, nni_inproc_ep *ep, nni_inproc_pipe *pipe)
+inproc_conn_finish(nni_aio *aio, int rv, inproc_ep *ep, inproc_pipe *pipe)
{
nni_aio_list_remove(aio);
@@ -417,7 +417,7 @@ inproc_conn_finish(
static nni_msg *
inproc_filter(void *arg, nni_msg *msg)
{
- nni_inproc_pipe *p = arg;
+ inproc_pipe *p = arg;
if (p->rcvmax && (nni_msg_len(msg) > p->rcvmax)) {
nni_stat_inc_atomic(&p->st_rxoversize, 1);
nni_msg_free(msg);
@@ -427,11 +427,11 @@ inproc_filter(void *arg, nni_msg *msg)
}
static void
-nni_inproc_ep_close(void *arg)
+inproc_ep_close(void *arg)
{
- nni_inproc_ep *ep = arg;
- nni_inproc_ep *client;
- nni_aio * aio;
+ inproc_ep *ep = arg;
+ inproc_ep *client;
+ nni_aio * aio;
nni_mtx_lock(&nni_inproc.mx);
if (nni_list_active(&nni_inproc.servers, ep)) {
@@ -451,9 +451,9 @@ nni_inproc_ep_close(void *arg)
}
static void
-nni_inproc_accept_clients(nni_inproc_ep *srv)
+inproc_accept_clients(inproc_ep *srv)
{
- nni_inproc_ep *cli, *nclient;
+ inproc_ep *cli, *nclient;
nclient = nni_list_first(&srv->clients);
while ((cli = nclient) != NULL) {
@@ -461,11 +461,11 @@ nni_inproc_accept_clients(nni_inproc_ep *srv)
nclient = nni_list_next(&srv->clients, nclient);
NNI_LIST_FOREACH (&cli->aios, caio) {
- nni_inproc_pipe *cpipe;
- nni_inproc_pipe *spipe;
- nni_inproc_pair *pair;
- nni_aio * saio;
- int rv;
+ inproc_pipe *cpipe;
+ inproc_pipe *spipe;
+ inproc_pair *pair;
+ nni_aio * saio;
+ int rv;
if ((saio = nni_list_first(&srv->aios)) == NULL) {
// No outstanding accept() calls.
@@ -482,20 +482,20 @@ nni_inproc_accept_clients(nni_inproc_ep *srv)
nni_mtx_init(&pair->mx);
spipe = cpipe = NULL;
- if (((rv = nni_inproc_pipe_alloc(&cpipe, cli)) != 0) ||
- ((rv = nni_inproc_pipe_alloc(&spipe, srv)) != 0) ||
+ if (((rv = inproc_pipe_alloc(&cpipe, cli)) != 0) ||
+ ((rv = inproc_pipe_alloc(&spipe, srv)) != 0) ||
((rv = nni_msgq_init(&pair->q[0], 1)) != 0) ||
((rv = nni_msgq_init(&pair->q[1], 1)) != 0)) {
if (cpipe != NULL) {
- nni_inproc_pipe_fini(cpipe);
+ inproc_pipe_fini(cpipe);
}
if (spipe != NULL) {
- nni_inproc_pipe_fini(spipe);
+ inproc_pipe_fini(spipe);
}
inproc_conn_finish(caio, rv, cli, NULL);
inproc_conn_finish(saio, rv, srv, NULL);
- nni_inproc_pair_destroy(pair);
+ inproc_pair_destroy(pair);
continue;
}
@@ -525,9 +525,9 @@ nni_inproc_accept_clients(nni_inproc_ep *srv)
}
static void
-nni_inproc_ep_cancel(nni_aio *aio, void *arg, int rv)
+inproc_ep_cancel(nni_aio *aio, void *arg, int rv)
{
- nni_inproc_ep *ep = arg;
+ inproc_ep *ep = arg;
nni_mtx_lock(&nni_inproc.mx);
if (nni_aio_list_active(aio)) {
@@ -539,11 +539,11 @@ nni_inproc_ep_cancel(nni_aio *aio, void *arg, int rv)
}
static void
-nni_inproc_ep_connect(void *arg, nni_aio *aio)
+inproc_ep_connect(void *arg, nni_aio *aio)
{
- nni_inproc_ep *ep = arg;
- nni_inproc_ep *server;
- int rv;
+ inproc_ep *ep = arg;
+ inproc_ep *server;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
@@ -566,7 +566,7 @@ nni_inproc_ep_connect(void *arg, nni_aio *aio)
// We don't have to worry about the case where a zero timeout
// on connect was specified, as there is no option to specify
// that in the upper API.
- if ((rv = nni_aio_schedule(aio, nni_inproc_ep_cancel, ep)) != 0) {
+ if ((rv = nni_aio_schedule(aio, inproc_ep_cancel, ep)) != 0) {
nni_mtx_unlock(&nni_inproc.mx);
nni_aio_finish_error(aio, rv);
return;
@@ -575,16 +575,16 @@ nni_inproc_ep_connect(void *arg, nni_aio *aio)
nni_list_append(&server->clients, ep);
nni_aio_list_append(&ep->aios, aio);
- nni_inproc_accept_clients(server);
+ inproc_accept_clients(server);
nni_mtx_unlock(&nni_inproc.mx);
}
static int
-nni_inproc_ep_bind(void *arg)
+inproc_ep_bind(void *arg)
{
- nni_inproc_ep *ep = arg;
- nni_inproc_ep *srch;
- nni_list * list = &nni_inproc.servers;
+ inproc_ep *ep = arg;
+ inproc_ep *srch;
+ nni_list * list = &nni_inproc.servers;
nni_mtx_lock(&nni_inproc.mx);
NNI_LIST_FOREACH (list, srch) {
@@ -599,10 +599,10 @@ nni_inproc_ep_bind(void *arg)
}
static void
-nni_inproc_ep_accept(void *arg, nni_aio *aio)
+inproc_ep_accept(void *arg, nni_aio *aio)
{
- nni_inproc_ep *ep = arg;
- int rv;
+ inproc_ep *ep = arg;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
@@ -612,7 +612,7 @@ nni_inproc_ep_accept(void *arg, nni_aio *aio)
// We need not worry about the case where a non-blocking
// accept was tried -- there is no API to do such a thing.
- if ((rv = nni_aio_schedule(aio, nni_inproc_ep_cancel, ep)) != 0) {
+ if ((rv = nni_aio_schedule(aio, inproc_ep_cancel, ep)) != 0) {
nni_mtx_unlock(&nni_inproc.mx);
nni_aio_finish_error(aio, rv);
return;
@@ -621,15 +621,15 @@ nni_inproc_ep_accept(void *arg, nni_aio *aio)
// We are already on the master list of servers, thanks to bind.
// Insert us into pending server aios, and then run accept list.
nni_aio_list_append(&ep->aios, aio);
- nni_inproc_accept_clients(ep);
+ inproc_accept_clients(ep);
nni_mtx_unlock(&nni_inproc.mx);
}
static int
inproc_ep_get_recvmaxsz(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_inproc_ep *ep = arg;
- int rv;
+ inproc_ep *ep = arg;
+ int rv;
nni_mtx_lock(&ep->mtx);
rv = nni_copyout_size(ep->rcvmax, v, szp, t);
nni_mtx_unlock(&ep->mtx);
@@ -639,9 +639,9 @@ inproc_ep_get_recvmaxsz(void *arg, void *v, size_t *szp, nni_opt_type t)
static int
inproc_ep_set_recvmaxsz(void *arg, const void *v, size_t sz, nni_opt_type t)
{
- nni_inproc_ep *ep = arg;
- size_t val;
- int rv;
+ inproc_ep *ep = arg;
+ size_t val;
+ int rv;
if (((rv = nni_copyin_size(&val, v, sz, 0, NNI_MAXSZ, t)) == 0) &&
(ep != NULL)) {
nni_mtx_lock(&ep->mtx);
@@ -652,14 +652,25 @@ inproc_ep_set_recvmaxsz(void *arg, const void *v, size_t sz, nni_opt_type t)
return (rv);
}
-static nni_option nni_inproc_pipe_options[] = {
+static int
+inproc_ep_get_addr(void *arg, void *v, size_t *szp, nni_opt_type t)
+{
+ inproc_ep * ep = arg;
+ nng_sockaddr sa;
+ sa.s_inproc.sa_family = NNG_AF_INPROC;
+ nni_strlcpy(
+ sa.s_inproc.sa_name, ep->addr, sizeof(sa.s_inproc.sa_name));
+ return (nni_copyout_sockaddr(&sa, v, szp, t));
+}
+
+static const nni_option inproc_pipe_options[] = {
{
.o_name = NNG_OPT_LOCADDR,
- .o_get = nni_inproc_pipe_get_addr,
+ .o_get = inproc_pipe_get_addr,
},
{
.o_name = NNG_OPT_REMADDR,
- .o_get = nni_inproc_pipe_get_addr,
+ .o_get = inproc_pipe_get_addr,
},
// terminate list
{
@@ -667,43 +678,73 @@ static nni_option nni_inproc_pipe_options[] = {
},
};
-static nni_tran_pipe_ops nni_inproc_pipe_ops = {
- .p_init = nni_inproc_pipe_init,
- .p_fini = nni_inproc_pipe_fini,
- .p_send = nni_inproc_pipe_send,
- .p_recv = nni_inproc_pipe_recv,
- .p_close = nni_inproc_pipe_close,
- .p_peer = nni_inproc_pipe_peer,
- .p_options = nni_inproc_pipe_options,
+static int
+inproc_pipe_getopt(
+ void *arg, const char *name, void *v, size_t *szp, nni_type t)
+{
+ return (nni_getopt(inproc_pipe_options, name, arg, v, szp, t));
+}
+
+static nni_tran_pipe_ops inproc_pipe_ops = {
+ .p_init = inproc_pipe_init,
+ .p_fini = inproc_pipe_fini,
+ .p_send = inproc_pipe_send,
+ .p_recv = inproc_pipe_recv,
+ .p_close = inproc_pipe_close,
+ .p_peer = inproc_pipe_peer,
+ .p_getopt = inproc_pipe_getopt,
};
-static nni_option nni_inproc_ep_options[] = {
+static const nni_option inproc_ep_options[] = {
{
.o_name = NNG_OPT_RECVMAXSZ,
.o_get = inproc_ep_get_recvmaxsz,
.o_set = inproc_ep_set_recvmaxsz,
},
+ {
+ .o_name = NNG_OPT_LOCADDR,
+ .o_get = inproc_ep_get_addr,
+ },
+ {
+ .o_name = NNG_OPT_REMADDR,
+ .o_get = inproc_ep_get_addr,
+ },
// terminate list
{
.o_name = NULL,
},
};
-static nni_tran_dialer_ops nni_inproc_dialer_ops = {
- .d_init = nni_inproc_dialer_init,
- .d_fini = nni_inproc_ep_fini,
- .d_connect = nni_inproc_ep_connect,
- .d_close = nni_inproc_ep_close,
- .d_options = nni_inproc_ep_options,
+static int
+inproc_ep_getopt(void *arg, const char *name, void *v, size_t *szp, nni_type t)
+{
+ return (nni_getopt(inproc_ep_options, name, arg, v, szp, t));
+}
+
+static int
+inproc_ep_setopt(
+ void *arg, const char *name, const void *v, size_t sz, nni_type t)
+{
+ return (nni_setopt(inproc_ep_options, name, arg, v, sz, t));
+}
+
+static nni_tran_dialer_ops inproc_dialer_ops = {
+ .d_init = inproc_dialer_init,
+ .d_fini = inproc_ep_fini,
+ .d_connect = inproc_ep_connect,
+ .d_close = inproc_ep_close,
+ .d_getopt = inproc_ep_getopt,
+ .d_setopt = inproc_ep_setopt,
};
-static nni_tran_listener_ops nni_inproc_listener_ops = {
- .l_init = nni_inproc_listener_init,
- .l_fini = nni_inproc_ep_fini,
- .l_bind = nni_inproc_ep_bind,
- .l_accept = nni_inproc_ep_accept,
- .l_close = nni_inproc_ep_close,
- .l_options = nni_inproc_ep_options,
+static nni_tran_listener_ops inproc_listener_ops = {
+ .l_init = inproc_listener_init,
+ .l_fini = inproc_ep_fini,
+ .l_bind = inproc_ep_bind,
+ .l_accept = inproc_ep_accept,
+ .l_close = inproc_ep_close,
+ .l_getopt = inproc_ep_getopt,
+ .l_setopt = inproc_ep_setopt,
};
// This is the inproc transport linkage, and should be the only global
@@ -711,11 +752,11 @@ static nni_tran_listener_ops nni_inproc_listener_ops = {
struct nni_tran nni_inproc_tran = {
.tran_version = NNI_TRANSPORT_VERSION,
.tran_scheme = "inproc",
- .tran_dialer = &nni_inproc_dialer_ops,
- .tran_listener = &nni_inproc_listener_ops,
- .tran_pipe = &nni_inproc_pipe_ops,
- .tran_init = nni_inproc_init,
- .tran_fini = nni_inproc_fini,
+ .tran_dialer = &inproc_dialer_ops,
+ .tran_listener = &inproc_listener_ops,
+ .tran_pipe = &inproc_pipe_ops,
+ .tran_init = inproc_init,
+ .tran_fini = inproc_fini,
};
int
diff --git a/src/transport/ipc/ipc.c b/src/transport/ipc/ipc.c
index 87764023..609b1811 100644
--- a/src/transport/ipc/ipc.c
+++ b/src/transport/ipc/ipc.c
@@ -802,7 +802,7 @@ ipctran_ep_connect(void *arg, nni_aio *aio)
}
static int
-ipctran_ep_get_recvmaxsz(void *arg, void *v, size_t *szp, nni_opt_type t)
+ipctran_ep_get_recvmaxsz(void *arg, void *v, size_t *szp, nni_type t)
{
ipctran_ep *ep = arg;
int rv;
@@ -813,7 +813,7 @@ ipctran_ep_get_recvmaxsz(void *arg, void *v, size_t *szp, nni_opt_type t)
}
static int
-ipctran_ep_set_recvmaxsz(void *arg, const void *v, size_t sz, nni_opt_type t)
+ipctran_ep_set_recvmaxsz(void *arg, const void *v, size_t sz, nni_type t)
{
ipctran_ep *ep = arg;
size_t val;