aboutsummaryrefslogtreecommitdiff
path: root/src/nng.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2024-11-23 09:12:29 -0800
committerGarrett D'Amore <garrett@damore.org>2024-11-23 09:40:32 -0800
commit3ed5d7e7c6bc995018ed9c3d63c18504f3983341 (patch)
treece7f482f04d8e56b4d77e1f58fec73d6606e5a64 /src/nng.c
parent8f29c19954b7e4f0e47036b37b36ab9cd386ad70 (diff)
downloadnng-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.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/nng.c b/src/nng.c
index c1843d38..2bc9986c 100644
--- a/src/nng.c
+++ b/src/nng.c
@@ -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;