From 26075dcbab6b33b63141d8fff4b75a5d99182dce Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Sat, 7 Aug 2021 17:41:19 -0700 Subject: Remove separate protocol initialization step. Nothing is using this, but it adds complexity and also requires additional lock activity each time a socket is opened. --- src/core/protocol.c | 75 +++-------------------------------------------------- 1 file changed, 4 insertions(+), 71 deletions(-) (limited to 'src/core/protocol.c') diff --git a/src/core/protocol.c b/src/core/protocol.c index ea28ad0a..2123d7e8 100644 --- a/src/core/protocol.c +++ b/src/core/protocol.c @@ -1,5 +1,5 @@ // -// Copyright 2018 Staysail Systems, Inc. +// Copyright 2021 Staysail Systems, Inc. // Copyright 2018 Capitar IT Group BV // // This software is supplied under the terms of the MIT License, a @@ -12,87 +12,20 @@ #include "core/nng_impl.h" -// Protocol related stuff - generically. -typedef struct nni_protocol nni_protocol; -struct nni_protocol { - const nni_proto *p_proto; - nni_list_node p_link; -}; - -static nni_mtx nni_proto_lk; -static nni_list nni_proto_list; -static int nni_proto_inited = 0; - -static int -nni_proto_init(const nni_proto *proto) -{ - nni_protocol *p; - int rv; - - nni_mtx_lock(&nni_proto_lk); - NNI_LIST_FOREACH (&nni_proto_list, p) { - if (p->p_proto == proto) { - nni_mtx_unlock(&nni_proto_lk); - return (0); - } - } - if ((p = NNI_ALLOC_STRUCT(p)) == NULL) { - nni_mtx_unlock(&nni_proto_lk); - return (NNG_ENOMEM); - } - NNI_LIST_NODE_INIT(&p->p_link); - p->p_proto = proto; - if ((proto->proto_init != NULL) && ((rv = proto->proto_init()) != 0)) { - NNI_FREE_STRUCT(p); - nni_mtx_unlock(&nni_proto_lk); - return (rv); - } - nni_list_append(&nni_proto_list, p); - nni_mtx_unlock(&nni_proto_lk); - return (0); -} int -nni_proto_open(nng_socket *sockidp, const nni_proto *proto) +nni_proto_open(nng_socket *sip, const nni_proto *proto) { int rv; nni_sock *sock; - if (((rv = nni_init()) != 0) || ((rv = nni_proto_init(proto)) != 0)) { + if ((rv = nni_init()) != 0) { return (rv); } if ((rv = nni_sock_open(&sock, proto)) == 0) { nng_socket s; s.id = nni_sock_id(sock); // Keep socket held open. - *sockidp = s; + *sip = s; } return (rv); } - -int -nni_proto_sys_init(void) -{ - NNI_LIST_INIT(&nni_proto_list, nni_protocol, p_link); - nni_mtx_init(&nni_proto_lk); - nni_proto_inited = 1; - return (0); -} - -void -nni_proto_sys_fini(void) -{ - if (nni_proto_inited) { - nni_protocol *p; - nni_mtx_lock(&nni_proto_lk); - while ((p = nni_list_first(&nni_proto_list)) != NULL) { - nni_list_remove(&nni_proto_list, p); - if (p->p_proto->proto_fini != NULL) { - p->p_proto->proto_fini(); - } - NNI_FREE_STRUCT(p); - } - nni_mtx_unlock(&nni_proto_lk); - } - nni_proto_inited = 0; - nni_mtx_fini(&nni_proto_lk); -} -- cgit v1.2.3-70-g09d2