From 8bac5ccdf1de7334311459b9e2666e74a2c16c15 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Sat, 2 Nov 2024 23:16:22 -0700 Subject: Replace `NNG_OPT_PROTO`, `NNG_OPT_PROTONAME`, and friends with functions. Socket options were a little awkward, and these are core properties of the socket. Few if any applications need these. This also avoids some dynamic allocations. --- src/nng.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'src/nng.c') diff --git a/src/nng.c b/src/nng.c index 1707ce9f..d5c1b957 100644 --- a/src/nng.c +++ b/src/nng.c @@ -1150,6 +1150,70 @@ nng_socket_get_send_poll_fd(nng_socket id, int *fdp) return (rv); } +int +nng_socket_proto_id(nng_socket id, uint16_t *idp) +{ + int rv; + nni_sock *sock; + + if (((rv = nni_init()) != 0) || + ((rv = nni_sock_find(&sock, id.id)) != 0)) { + return (rv); + } + + *idp = nni_sock_proto_id(sock); + nni_sock_rele(sock); + return (0); +} + +int +nng_socket_peer_id(nng_socket id, uint16_t *idp) +{ + int rv; + nni_sock *sock; + + if (((rv = nni_init()) != 0) || + ((rv = nni_sock_find(&sock, id.id)) != 0)) { + return (rv); + } + + *idp = nni_sock_peer_id(sock); + nni_sock_rele(sock); + return (0); +} + +int +nng_socket_proto_name(nng_socket id, const char **name) +{ + int rv; + nni_sock *sock; + + if (((rv = nni_init()) != 0) || + ((rv = nni_sock_find(&sock, id.id)) != 0)) { + return (rv); + } + + *name = nni_sock_proto_name(sock); + nni_sock_rele(sock); + return (0); +} + +int +nng_socket_peer_name(nng_socket id, const char **name) +{ + int rv; + nni_sock *sock; + + if (((rv = nni_init()) != 0) || + ((rv = nni_sock_find(&sock, id.id)) != 0)) { + return (rv); + } + + *name = nni_sock_peer_name(sock); + nni_sock_rele(sock); + return (0); +} + int nng_pipe_notify(nng_socket s, nng_pipe_ev ev, nng_pipe_cb cb, void *arg) { -- cgit v1.2.3-70-g09d2