diff options
| author | Garrett D'Amore <garrett@damore.org> | 2024-11-23 09:12:29 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2024-11-23 09:40:32 -0800 |
| commit | 3ed5d7e7c6bc995018ed9c3d63c18504f3983341 (patch) | |
| tree | ce7f482f04d8e56b4d77e1f58fec73d6606e5a64 /src/nng.c | |
| parent | 8f29c19954b7e4f0e47036b37b36ab9cd386ad70 (diff) | |
| download | nng-3ed5d7e7c6bc995018ed9c3d63c18504f3983341.tar.gz nng-3ed5d7e7c6bc995018ed9c3d63c18504f3983341.tar.bz2 nng-3ed5d7e7c6bc995018ed9c3d63c18504f3983341.zip | |
listener: add listener_create_url and listen_url
Diffstat (limited to 'src/nng.c')
| -rw-r--r-- | src/nng.c | 49 |
1 files changed, 49 insertions, 0 deletions
@@ -593,6 +593,34 @@ nng_listen(nng_socket sid, const char *addr, nng_listener *lp, int flags) } int +nng_listen_url(nng_socket sid, const nng_url *url, nng_listener *lp, int flags) +{ + int rv; + nni_sock *s; + nni_listener *l; + + if ((rv = nni_sock_find(&s, sid.id)) != 0) { + return (rv); + } + if ((rv = nni_listener_create_url(&l, s, url)) != 0) { + nni_sock_rele(s); + return (rv); + } + if ((rv = nni_listener_start(l, flags)) != 0) { + nni_listener_close(l); + return (rv); + } + + if (lp != NULL) { + nng_listener lid; + lid.id = nni_listener_id(l); + *lp = lid; + } + nni_listener_rele(l); + return (rv); +} + +int nng_listener_create(nng_listener *lp, nng_socket sid, const char *addr) { nni_sock *s; @@ -614,6 +642,27 @@ nng_listener_create(nng_listener *lp, nng_socket sid, const char *addr) } int +nng_listener_create_url(nng_listener *lp, nng_socket sid, const nng_url *url) +{ + nni_sock *s; + int rv; + nni_listener *l; + nng_listener lid; + + if ((rv = nni_sock_find(&s, sid.id)) != 0) { + return (rv); + } + if ((rv = nni_listener_create_url(&l, s, url)) != 0) { + nni_sock_rele(s); + return (rv); + } + lid.id = nni_listener_id(l); + *lp = lid; + nni_listener_rele(l); + return (0); +} + +int nng_listener_start(nng_listener lid, int flags) { nni_listener *l; |
