aboutsummaryrefslogtreecommitdiff
path: root/src/transport/inproc
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport/inproc')
-rw-r--r--src/transport/inproc/inproc.c51
1 files changed, 26 insertions, 25 deletions
diff --git a/src/transport/inproc/inproc.c b/src/transport/inproc/inproc.c
index e3cc5143..3f013f92 100644
--- a/src/transport/inproc/inproc.c
+++ b/src/transport/inproc/inproc.c
@@ -177,25 +177,15 @@ nni_inproc_pipe_peer(void *arg)
}
static int
-nni_inproc_pipe_getopt(void *arg, int option, void *buf, size_t *szp)
+nni_inproc_pipe_get_addr(void *arg, void *buf, size_t *szp)
{
-#if 0
- nni_inproc_pipe *pipe = arg;
+ nni_inproc_pipe *p = arg;
+ nni_sockaddr sa;
- switch (option) {
- case NNG_OPT_LOCALADDR:
- case NNG_OPT_REMOTEADDR:
- len = strlen(pipe->addr) + 1;
- if (len > *szp) {
- (void) memcpy(buf, pipe->addr, *szp);
- } else {
- (void) memcpy(buf, pipe->addr, len);
- }
- *szp = len;
- return (0);
- }
-#endif
- return (NNG_ENOTSUP);
+ sa.s_un.s_inproc.sa_family = NNG_AF_INPROC;
+ nni_strlcpy(sa.s_un.s_inproc.sa_path, p->addr,
+ sizeof(sa.s_un.s_inproc.sa_path));
+ return (nni_getopt_sockaddr(&sa, buf, szp));
}
static int
@@ -442,13 +432,25 @@ nni_inproc_ep_accept(void *arg, nni_aio *aio)
nni_mtx_unlock(&nni_inproc.mx);
}
+static nni_tran_pipe_option nni_inproc_pipe_options[] = {
+ { NNG_OPT_LOCADDR, nni_inproc_pipe_get_addr },
+ { NNG_OPT_REMADDR, nni_inproc_pipe_get_addr },
+ // terminate list
+ { NULL, NULL },
+};
+
static nni_tran_pipe nni_inproc_pipe_ops = {
- .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_getopt = nni_inproc_pipe_getopt,
+ .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 nni_tran_ep_option nni_inproc_ep_options[] = {
+ // terminate list
+ { NULL, NULL, NULL },
};
static nni_tran_ep nni_inproc_ep_ops = {
@@ -458,8 +460,7 @@ static nni_tran_ep nni_inproc_ep_ops = {
.ep_bind = nni_inproc_ep_bind,
.ep_accept = nni_inproc_ep_accept,
.ep_close = nni_inproc_ep_close,
- .ep_setopt = NULL,
- .ep_getopt = NULL,
+ .ep_options = nni_inproc_ep_options,
};
// This is the inproc transport linkage, and should be the only global