aboutsummaryrefslogtreecommitdiff
path: root/src/nng.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2024-11-23 08:55:21 -0800
committerGarrett D'Amore <garrett@damore.org>2024-11-23 09:40:32 -0800
commit8f29c19954b7e4f0e47036b37b36ab9cd386ad70 (patch)
tree535b12c11e1049f80edd4b7b5564c8e3ebcfb07d /src/nng.c
parentd1a0201e25ca2bf1d28c753aef47795144733b8d (diff)
downloadnng-8f29c19954b7e4f0e47036b37b36ab9cd386ad70.tar.gz
nng-8f29c19954b7e4f0e47036b37b36ab9cd386ad70.tar.bz2
nng-8f29c19954b7e4f0e47036b37b36ab9cd386ad70.zip
dialers: add nng_dial_url and nng_dialer_create_url
This allows a URL object to be used for dialing, which may be easier than using a string if you already have the URL object.
Diffstat (limited to 'src/nng.c')
-rw-r--r--src/nng.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/nng.c b/src/nng.c
index b25701a3..c1843d38 100644
--- a/src/nng.c
+++ b/src/nng.c
@@ -538,6 +538,33 @@ nng_dial(nng_socket sid, const char *addr, nng_dialer *dp, int flags)
}
int
+nng_dial_url(nng_socket sid, const nng_url *url, nng_dialer *dp, int flags)
+{
+ nni_dialer *d;
+ int rv;
+ nni_sock *s;
+
+ if ((rv = nni_sock_find(&s, sid.id)) != 0) {
+ return (rv);
+ }
+ if ((rv = nni_dialer_create_url(&d, s, url)) != 0) {
+ nni_sock_rele(s);
+ return (rv);
+ }
+ if ((rv = nni_dialer_start(d, flags)) != 0) {
+ nni_dialer_close(d);
+ return (rv);
+ }
+ if (dp != NULL) {
+ nng_dialer did;
+ did.id = nni_dialer_id(d);
+ *dp = did;
+ }
+ nni_dialer_rele(d);
+ return (0);
+}
+
+int
nng_listen(nng_socket sid, const char *addr, nng_listener *lp, int flags)
{
int rv;
@@ -628,6 +655,27 @@ nng_dialer_create(nng_dialer *dp, nng_socket sid, const char *addr)
}
int
+nng_dialer_create_url(nng_dialer *dp, nng_socket sid, const nng_url *url)
+{
+ nni_sock *s;
+ nni_dialer *d;
+ int rv;
+ nng_dialer did;
+
+ if ((rv = nni_sock_find(&s, sid.id)) != 0) {
+ return (rv);
+ }
+ if ((rv = nni_dialer_create_url(&d, s, url)) != 0) {
+ nni_sock_rele(s);
+ return (rv);
+ }
+ did.id = nni_dialer_id(d);
+ *dp = did;
+ nni_dialer_rele(d);
+ return (0);
+}
+
+int
nng_dialer_start(nng_dialer did, int flags)
{
nni_dialer *d;