aboutsummaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2024-11-09 23:45:21 -0800
committerGarrett D'Amore <garrett@damore.org>2024-11-11 11:03:12 -0800
commit713b80f440cb414cd0b856bde0ea1b31f939777f (patch)
tree1186c42418559c85719023bde3e919aa2df7fcef /src/tools
parentcbe9a27ef7485977fbc7c713376b096b6723da3d (diff)
downloadnng-713b80f440cb414cd0b856bde0ea1b31f939777f.tar.gz
nng-713b80f440cb414cd0b856bde0ea1b31f939777f.tar.bz2
nng-713b80f440cb414cd0b856bde0ea1b31f939777f.zip
refactor initialization/finalization
Applications must now call nng_init(), but they can supply a set of parameters optionally. The code is now safe for multiple libraries to do this concurrently, meaning nng_fini no longer can race against another instance starting up. The nni_init checks on all public APIs are removed now.
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/nngcat/nngcat.c3
-rw-r--r--src/tools/perf/perf.c3
-rw-r--r--src/tools/perf/pubdrop.c3
3 files changed, 9 insertions, 0 deletions
diff --git a/src/tools/nngcat/nngcat.c b/src/tools/nngcat/nngcat.c
index 87f7c0a6..57bee3e5 100644
--- a/src/tools/nngcat/nngcat.c
+++ b/src/tools/nngcat/nngcat.c
@@ -723,6 +723,9 @@ main(int ac, char **av)
addrend = &addrs;
topicend = &topics;
+ nng_init(NULL);
+ atexit(nng_fini);
+
while ((rv = nng_opts_parse(ac, av, opts, &val, &arg, &idx)) == 0) {
switch (val) {
case OPT_HELP:
diff --git a/src/tools/perf/perf.c b/src/tools/perf/perf.c
index 2801ce51..c7057c73 100644
--- a/src/tools/perf/perf.c
+++ b/src/tools/perf/perf.c
@@ -189,6 +189,9 @@ main(int argc, char **argv)
open_client = nng_pair0_open;
#endif
+ nng_init(NULL);
+ atexit(nng_fini);
+
// Allow -m <remote_lat> or whatever to override argv[0].
if ((argc >= 3) && (strcmp(argv[1], "-m") == 0)) {
prog = argv[2];
diff --git a/src/tools/perf/pubdrop.c b/src/tools/perf/pubdrop.c
index af715a88..020bae0f 100644
--- a/src/tools/perf/pubdrop.c
+++ b/src/tools/perf/pubdrop.c
@@ -75,6 +75,9 @@ main(int argc, char **argv)
argc--;
argv++;
+ nng_init(NULL);
+ atexit(nng_fini);
+
// We calculate a delay factor to roughly delay 1 usec. We don't
// need this to be perfect, just reproducible on the same host.
unsigned long cnt = 1000000;