diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/tcp.c | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/src/core/tcp.c b/src/core/tcp.c index 159ffe41..fd1c7e96 100644 --- a/src/core/tcp.c +++ b/src/core/tcp.c @@ -273,143 +273,3 @@ nni_tcp_dialer_alloc(nng_stream_dialer **dp, const nng_url *url) *dp = (void *) d; return (0); } - -typedef struct { - nng_stream_listener ops; - nni_tcp_listener *l; - nng_sockaddr sa; -} tcp_listener; - -static void -tcp_listener_close(void *arg) -{ - tcp_listener *l = arg; - nni_tcp_listener_close(l->l); -} - -static void -tcp_listener_stop(void *arg) -{ - tcp_listener *l = arg; - nni_tcp_listener_stop(l->l); -} - -static void -tcp_listener_free(void *arg) -{ - tcp_listener *l = arg; - nni_tcp_listener_fini(l->l); - NNI_FREE_STRUCT(l); -} - -static int -tcp_listener_listen(void *arg) -{ - tcp_listener *l = arg; - return (nni_tcp_listener_listen(l->l, &l->sa)); -} - -static void -tcp_listener_accept(void *arg, nng_aio *aio) -{ - tcp_listener *l = arg; - nni_tcp_listener_accept(l->l, aio); -} - -static int -tcp_listener_get_port(void *arg, void *buf, size_t *szp, nni_type t) -{ - tcp_listener *l = arg; - int rv; - nng_sockaddr sa; - size_t sz; - int port; - uint8_t *paddr; - - sz = sizeof(sa); - rv = nni_tcp_listener_get( - l->l, NNG_OPT_LOCADDR, &sa, &sz, NNI_TYPE_SOCKADDR); - if (rv != 0) { - return (rv); - } - - switch (sa.s_family) { - case NNG_AF_INET: - paddr = (void *) &sa.s_in.sa_port; - break; - - case NNG_AF_INET6: - paddr = (void *) &sa.s_in6.sa_port; - break; - - default: - paddr = NULL; - break; - } - - if (paddr == NULL) { - return (NNG_ESTATE); - } - - NNI_GET16(paddr, port); - return (nni_copyout_int(port, buf, szp, t)); -} - -static int -tcp_listener_get( - void *arg, const char *name, void *buf, size_t *szp, nni_type t) -{ - tcp_listener *l = arg; - if (strcmp(name, NNG_OPT_TCP_BOUND_PORT) == 0) { - return (tcp_listener_get_port(l, buf, szp, t)); - } - return (nni_tcp_listener_get(l->l, name, buf, szp, t)); -} - -static int -tcp_listener_set( - void *arg, const char *name, const void *buf, size_t sz, nni_type t) -{ - tcp_listener *l = arg; - return (nni_tcp_listener_set(l->l, name, buf, sz, t)); -} - -static int -tcp_listener_alloc_addr(nng_stream_listener **lp, const nng_sockaddr *sa) -{ - tcp_listener *l; - int rv; - - if ((l = NNI_ALLOC_STRUCT(l)) == NULL) { - return (NNG_ENOMEM); - } - if ((rv = nni_tcp_listener_init(&l->l)) != 0) { - NNI_FREE_STRUCT(l); - return (rv); - } - l->sa = *sa; - - l->ops.sl_free = tcp_listener_free; - l->ops.sl_close = tcp_listener_close; - l->ops.sl_stop = tcp_listener_stop; - l->ops.sl_listen = tcp_listener_listen; - l->ops.sl_accept = tcp_listener_accept; - l->ops.sl_get = tcp_listener_get; - l->ops.sl_set = tcp_listener_set; - - *lp = (void *) l; - return (0); -} - -int -nni_tcp_listener_alloc(nng_stream_listener **lp, const nng_url *url) -{ - int rv; - nng_sockaddr sa; - - if ((rv = nni_url_to_address(&sa, url)) != 0) { - return (rv); - } - - return (tcp_listener_alloc_addr(lp, &sa)); -} |
