diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/nng.c | 161 | ||||
| -rw-r--r-- | src/supplemental/util/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/supplemental/util/platform.c | 172 | ||||
| -rw-r--r-- | src/supplemental/websocket/websocket_test.c | 3 | ||||
| -rw-r--r-- | src/testing/nuts.h | 1 | ||||
| -rw-r--r-- | src/testing/streams.c | 9 | ||||
| -rw-r--r-- | src/tools/nngcat/nngcat.c | 47 | ||||
| -rw-r--r-- | src/tools/perf/perf.c | 23 | ||||
| -rw-r--r-- | src/tools/perf/pubdrop.c | 15 |
9 files changed, 206 insertions, 227 deletions
@@ -1,5 +1,5 @@ // -// Copyright 2022 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech> // Copyright 2018 Capitar IT Group BV <info@capitar.com> // // This software is supplied under the terms of the MIT License, a @@ -2016,4 +2016,161 @@ void nng_init_set_parameter(nng_init_parameter p, uint64_t value) { nni_init_set_param(p, value); -}
\ No newline at end of file +} + +nng_time +nng_clock(void) +{ + (void) nni_init(); + return (nni_clock()); +} + +// Sleep for specified msecs. +void +nng_msleep(nng_duration dur) +{ + (void) nni_init(); + nni_msleep(dur); +} + +// Create and start a thread. Note that on some platforms, this might +// actually be a coroutine, with limitations about what system APIs +// you can call. Therefore, these threads should only be used with the +// I/O APIs provided by nng. The thread runs until completion. +int +nng_thread_create(nng_thread **thrp, void (*func)(void *), void *arg) +{ + nni_thr *thr; + int rv; + + (void) nni_init(); + + if ((thr = NNI_ALLOC_STRUCT(thr)) == NULL) { + return (NNG_ENOMEM); + } + *thrp = (void *) thr; + if ((rv = nni_thr_init(thr, func, arg)) != 0) { + return (rv); + } + nni_thr_run(thr); + return (0); +} + +void +nng_thread_set_name(nng_thread *thr, const char *name) +{ + nni_thr_set_name((void *) thr, name); +} + +// Destroy a thread (waiting for it to complete.) When this function +// returns all resources for the thread are cleaned up. +void +nng_thread_destroy(nng_thread *thr) +{ + nni_thr *t = (void *) thr; + nni_thr_fini(t); + NNI_FREE_STRUCT(t); +} + +struct nng_mtx { + nni_mtx m; +}; + +int +nng_mtx_alloc(nng_mtx **mpp) +{ + nng_mtx *mp; + + (void) nni_init(); + + if ((mp = NNI_ALLOC_STRUCT(mp)) == NULL) { + return (NNG_ENOMEM); + } + nni_mtx_init(&mp->m); + *mpp = mp; + return (0); +} + +void +nng_mtx_free(nng_mtx *mp) +{ + if (mp != NULL) { + nni_mtx_fini(&mp->m); + NNI_FREE_STRUCT(mp); + } +} + +void +nng_mtx_lock(nng_mtx *mp) +{ + nni_mtx_lock(&mp->m); +} + +void +nng_mtx_unlock(nng_mtx *mp) +{ + nni_mtx_unlock(&mp->m); +} + +struct nng_cv { + nni_cv c; +}; + +int +nng_cv_alloc(nng_cv **cvp, nng_mtx *mx) +{ + nng_cv *cv; + + if ((cv = NNI_ALLOC_STRUCT(cv)) == NULL) { + return (NNG_ENOMEM); + } + nni_cv_init(&cv->c, &mx->m); + *cvp = cv; + return (0); +} + +void +nng_cv_free(nng_cv *cv) +{ + if (cv != NULL) { + nni_cv_fini(&cv->c); + NNI_FREE_STRUCT(cv); + } +} + +void +nng_cv_wait(nng_cv *cv) +{ + nni_cv_wait(&cv->c); +} + +int +nng_cv_until(nng_cv *cv, nng_time when) +{ + return (nni_cv_until(&cv->c, (nni_time) when)); +} + +void +nng_cv_wake(nng_cv *cv) +{ + nni_cv_wake(&cv->c); +} + +void +nng_cv_wake1(nng_cv *cv) +{ + nni_cv_wake1(&cv->c); +} + +uint32_t +nng_random(void) +{ + (void) nni_init(); + return (nni_random()); +} + +int +nng_socket_pair(int fds[2]) +{ + return (nni_socket_pair(fds)); +} diff --git a/src/supplemental/util/CMakeLists.txt b/src/supplemental/util/CMakeLists.txt index f62026fb..6a820b21 100644 --- a/src/supplemental/util/CMakeLists.txt +++ b/src/supplemental/util/CMakeLists.txt @@ -7,7 +7,7 @@ # found online at https://opensource.org/licenses/MIT. # -nng_sources(idhash.c options.c platform.c) +nng_sources(idhash.c options.c) nng_headers( nng/supplemental/util/idhash.h nng/supplemental/util/options.h diff --git a/src/supplemental/util/platform.c b/src/supplemental/util/platform.c deleted file mode 100644 index 0f9e7a1a..00000000 --- a/src/supplemental/util/platform.c +++ /dev/null @@ -1,172 +0,0 @@ -// -// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech> -// Copyright 2018 Capitar IT Group BV <info@capitar.com> -// -// This software is supplied under the terms of the MIT License, a -// copy of which should be located in the distribution where this -// file was obtained (LICENSE.txt). A copy of the license may also be -// found online at https://opensource.org/licenses/MIT. -// - -#include <stdlib.h> -#include <string.h> - -#include "core/nng_impl.h" -#include "nng/supplemental/util/platform.h" - -nng_time -nng_clock(void) -{ - (void) nni_init(); - return (nni_clock()); -} - -// Sleep for specified msecs. -void -nng_msleep(nng_duration dur) -{ - (void) nni_init(); - nni_msleep(dur); -} - -// Create and start a thread. Note that on some platforms, this might -// actually be a coroutine, with limitations about what system APIs -// you can call. Therefore, these threads should only be used with the -// I/O APIs provided by nng. The thread runs until completion. -int -nng_thread_create(nng_thread **thrp, void (*func)(void *), void *arg) -{ - nni_thr *thr; - int rv; - - (void) nni_init(); - - if ((thr = NNI_ALLOC_STRUCT(thr)) == NULL) { - return (NNG_ENOMEM); - } - *thrp = (void *) thr; - if ((rv = nni_thr_init(thr, func, arg)) != 0) { - return (rv); - } - nni_thr_run(thr); - return (0); -} - -void -nng_thread_set_name(nng_thread *thr, const char *name) -{ - nni_thr_set_name((void *)thr, name); -} - -// Destroy a thread (waiting for it to complete.) When this function -// returns all resources for the thread are cleaned up. -void -nng_thread_destroy(nng_thread *thr) -{ - nni_thr *t = (void *) thr; - nni_thr_fini(t); - NNI_FREE_STRUCT(t); -} - -struct nng_mtx { - nni_mtx m; -}; - -int -nng_mtx_alloc(nng_mtx **mpp) -{ - nng_mtx *mp; - - (void) nni_init(); - - if ((mp = NNI_ALLOC_STRUCT(mp)) == NULL) { - return (NNG_ENOMEM); - } - nni_mtx_init(&mp->m); - *mpp = mp; - return (0); -} - -void -nng_mtx_free(nng_mtx *mp) -{ - if (mp != NULL) { - nni_mtx_fini(&mp->m); - NNI_FREE_STRUCT(mp); - } -} - -void -nng_mtx_lock(nng_mtx *mp) -{ - nni_mtx_lock(&mp->m); -} - -void -nng_mtx_unlock(nng_mtx *mp) -{ - nni_mtx_unlock(&mp->m); -} - -struct nng_cv { - nni_cv c; -}; - -int -nng_cv_alloc(nng_cv **cvp, nng_mtx *mx) -{ - nng_cv *cv; - - if ((cv = NNI_ALLOC_STRUCT(cv)) == NULL) { - return (NNG_ENOMEM); - } - nni_cv_init(&cv->c, &mx->m); - *cvp = cv; - return (0); -} - -void -nng_cv_free(nng_cv *cv) -{ - if (cv != NULL) { - nni_cv_fini(&cv->c); - NNI_FREE_STRUCT(cv); - } -} - -void -nng_cv_wait(nng_cv *cv) -{ - nni_cv_wait(&cv->c); -} - -int -nng_cv_until(nng_cv *cv, nng_time when) -{ - return (nni_cv_until(&cv->c, (nni_time) when)); -} - -void -nng_cv_wake(nng_cv *cv) -{ - nni_cv_wake(&cv->c); -} - -void -nng_cv_wake1(nng_cv *cv) -{ - nni_cv_wake1(&cv->c); -} - -uint32_t -nng_random(void) -{ - (void) nni_init(); - return (nni_random()); -} - -int -nng_socket_pair(int fds[2]) -{ - return (nni_socket_pair(fds)); -} diff --git a/src/supplemental/websocket/websocket_test.c b/src/supplemental/websocket/websocket_test.c index be4e1b30..edd3d609 100644 --- a/src/supplemental/websocket/websocket_test.c +++ b/src/supplemental/websocket/websocket_test.c @@ -1,5 +1,5 @@ // -// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech> // Copyright 2018 Capitar IT Group BV <info@capitar.com> // // This software is supplied under the terms of the MIT License, a @@ -10,7 +10,6 @@ #include <string.h> #include <nng/nng.h> -#include <nng/supplemental/util/platform.h> #include <nuts.h> diff --git a/src/testing/nuts.h b/src/testing/nuts.h index da0f525f..e13a44da 100644 --- a/src/testing/nuts.h +++ b/src/testing/nuts.h @@ -48,7 +48,6 @@ extern void nng_fini(void); #include <nng/protocol/survey0/respond.h> #include <nng/protocol/survey0/survey.h> #include <nng/supplemental/tls/tls.h> -#include <nng/supplemental/util/platform.h> #include <nng/transport/ws/websocket.h> #include <supplemental/sha1/sha1.h> diff --git a/src/testing/streams.c b/src/testing/streams.c index 33c70c00..92d52f37 100644 --- a/src/testing/streams.c +++ b/src/testing/streams.c @@ -1,5 +1,5 @@ // -// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech> // Copyright 2018 Capitar IT Group BV <info@capitar.com> // // This software is supplied under the terms of the MIT License, a @@ -11,14 +11,13 @@ #define TEST_NO_MAIN #include <nng/nng.h> -#include <nng/supplemental/util/platform.h> typedef struct { - uint8_t * base; + uint8_t *base; size_t rem; nng_iov iov; - nng_aio * upper_aio; - nng_aio * lower_aio; + nng_aio *upper_aio; + nng_aio *lower_aio; nng_stream *s; void (*submit)(nng_stream *, nng_aio *); } stream_xfr_t; diff --git a/src/tools/nngcat/nngcat.c b/src/tools/nngcat/nngcat.c index 3f29f114..bdf6823c 100644 --- a/src/tools/nngcat/nngcat.c +++ b/src/tools/nngcat/nngcat.c @@ -1,5 +1,5 @@ // -// Copyright 2022 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech> // Copyright 2018 Capitar IT Group BV <info@capitar.com> // Copyright 2020 Lager Data, Inc. <support@lagerdata.com> // @@ -31,7 +31,6 @@ #include <nng/protocol/survey0/survey.h> #include <nng/supplemental/tls/tls.h> #include <nng/supplemental/util/options.h> -#include <nng/supplemental/util/platform.h> #include <nng/transport/zerotier/zerotier.h> // Globals. We need this to avoid passing around everything. @@ -42,18 +41,18 @@ int delay = 0; nng_duration interval = NNG_DURATION_INFINITE; nng_duration sendtimeo = NNG_DURATION_INFINITE; nng_duration recvtimeo = NNG_DURATION_INFINITE; -void * data = NULL; +void *data = NULL; size_t datalen = 0; int compat = 0; int async = 0; int insecure = 0; -void * cacert = NULL; +void *cacert = NULL; size_t cacertlen = 0; -void * keyfile = NULL; +void *keyfile = NULL; size_t keylen = 0; -void * certfile = NULL; +void *certfile = NULL; size_t certlen = 0; -const char * zthome = NULL; +const char *zthome = NULL; int count = 0; int recvmaxsz = -1; @@ -310,11 +309,11 @@ intarg(const char *val, int maxv) static void loadfile(const char *path, void **datap, size_t *lenp) { - FILE * f; + FILE *f; size_t total_read = 0; size_t allocation_size = BUFSIZ; - char * fdata; - char * realloc_result; + char *fdata; + char *realloc_result; if (strcmp(path, "-") == 0) { f = stdin; @@ -385,7 +384,7 @@ configtls(nng_tls_config *tls) struct addr { struct addr *next; int mode; - char * val; + char *val; }; struct addr ** @@ -406,7 +405,7 @@ addaddr(struct addr **endp, int mode, const char *a) struct topic { struct topic *next; - char * val; + char *val; }; struct topic ** @@ -578,7 +577,7 @@ sendloop(nng_socket sock) for (;;) { int rv; - nng_msg * msg; + nng_msg *msg; nng_time start; nng_time end; nng_duration delta; @@ -592,7 +591,7 @@ sendloop(nng_socket sock) fatal("Send error: %s", nng_strerror(rv)); } end = nng_clock(); - delta = (nng_duration)(end - start); + delta = (nng_duration) (end - start); iters++; // By default, we don't loop. @@ -630,7 +629,7 @@ sendrecv(nng_socket sock) // that we exit the receive loop, and can continue. for (;;) { int rv; - nng_msg * msg; + nng_msg *msg; nng_time start; nng_time end; nng_duration delta; @@ -655,7 +654,7 @@ sendrecv(nng_socket sock) // want to increment the iteration count. for (;;) { - delta = (nng_duration)(nng_clock() - start); + delta = (nng_duration) (nng_clock() - start); nng_duration expire = interval - delta; if ((recvtimeo >= 0) && (expire > recvtimeo)) { @@ -688,7 +687,7 @@ sendrecv(nng_socket sock) } end = nng_clock(); - delta = (nng_duration)(end - start); + delta = (nng_duration) (end - start); iters++; if ((count > 0) && (iters >= count)) { @@ -709,13 +708,13 @@ int main(int ac, char **av) { int idx; - char * arg; + char *arg; int val; int rv; char scratch[512]; - struct addr * addrs = NULL; - struct addr ** addrend; - struct topic * topics = NULL; + struct addr *addrs = NULL; + struct addr **addrend; + struct topic *topics = NULL; struct topic **topicend; nng_socket sock; int port; @@ -1092,7 +1091,7 @@ main(int ac, char **av) } for (struct addr *a = addrs; a != NULL; a = a->next) { - char * act; + char *act; nng_listener l; nng_dialer d; nng_tls_config *tls; @@ -1114,8 +1113,8 @@ main(int ac, char **av) nng_strerror(rv)); } if (zthome != NULL) { - rv = nng_dialer_set(d, NNG_OPT_ZT_HOME, - zthome, strlen(zthome) + 1); + rv = nng_dialer_set(d, NNG_OPT_ZT_HOME, zthome, + strlen(zthome) + 1); if ((rv != 0) && (rv != NNG_ENOTSUP)) { fatal("Unable to set ZT home: %s", nng_strerror(rv)); diff --git a/src/tools/perf/perf.c b/src/tools/perf/perf.c index 46d91cd8..2801ce51 100644 --- a/src/tools/perf/perf.c +++ b/src/tools/perf/perf.c @@ -1,5 +1,5 @@ // -// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech> // Copyright 2018 Capitar IT Group BV <info@capitar.com> // // This software is supplied under the terms of the MIT License, a @@ -17,7 +17,6 @@ #include <nng/nng.h> #include <nng/supplemental/util/options.h> -#include <nng/supplemental/util/platform.h> static void die(const char *, ...); static int @@ -328,13 +327,13 @@ do_inproc(void *args) void do_inproc_lat(int argc, char **argv) { - nng_thread * thr; + nng_thread *thr; struct inproc_args ia; int rv; int val; int optidx; - char * arg; - char * addr; + char *arg; + char *addr; addr = "inproc://latency_test"; @@ -392,13 +391,13 @@ do_inproc_lat(int argc, char **argv) void do_inproc_thr(int argc, char **argv) { - nng_thread * thr; + nng_thread *thr; struct inproc_args ia; int rv; int optidx; int val; - char * arg; - char * addr = "inproc://throughput-test"; + char *arg; + char *addr = "inproc://throughput-test"; optidx = 0; while ((rv = nng_opts_parse(argc, argv, opts, &val, &arg, &optidx)) == @@ -461,7 +460,7 @@ void latency_client(const char *addr, size_t msgsize, int trips) { nng_socket s; - nng_msg * msg; + nng_msg *msg; nng_time start, end; int rv; int i; @@ -511,7 +510,7 @@ void latency_server(const char *addr, size_t msgsize, int trips) { nng_socket s; - nng_msg * msg; + nng_msg *msg; int rv; int i; @@ -553,7 +552,7 @@ void throughput_server(const char *addr, size_t msgsize, int count) { nng_socket s; - nng_msg * msg; + nng_msg *msg; int rv; int i; uint64_t start, end; @@ -611,7 +610,7 @@ void throughput_client(const char *addr, size_t msgsize, int count) { nng_socket s; - nng_msg * msg; + nng_msg *msg; int rv; int i; diff --git a/src/tools/perf/pubdrop.c b/src/tools/perf/pubdrop.c index f7e1dbfd..bc067d76 100644 --- a/src/tools/perf/pubdrop.c +++ b/src/tools/perf/pubdrop.c @@ -1,5 +1,5 @@ // -// Copyright 2019 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech> // // This software is supplied under the terms of the MIT License, a // copy of which should be located in the distribution where this @@ -15,7 +15,6 @@ #include <string.h> #include <nng/nng.h> -#include <nng/supplemental/util/platform.h> // pubdrop - this is a simple testing utility that lets us measure PUB/SUB // performance, including dropped messages, delivery across multiple threads, @@ -117,7 +116,7 @@ parse_int(const char *arg, const char *what) } struct pubdrop_args { - const char * addr; + const char *addr; bool start; unsigned long long msgsize; unsigned long long count; @@ -128,8 +127,8 @@ struct pubdrop_args { unsigned long long recvs; nng_time beg; nng_time end; - nng_mtx * mtx; - nng_cv * cv; + nng_mtx *mtx; + nng_cv *cv; }; static void @@ -138,7 +137,7 @@ pub_server(void *arg) struct pubdrop_args *pa = arg; nng_socket sock; int rv; - nng_msg * msg; + nng_msg *msg; nng_time start; nng_time end; @@ -191,7 +190,7 @@ sub_client(void *arg) struct pubdrop_args *pa = arg; nng_socket sock; int rv; - nng_msg * msg; + nng_msg *msg; unsigned long long recvs; unsigned long long drops; unsigned long long gaps; @@ -255,7 +254,7 @@ sub_client(void *arg) static void do_pubdrop(int argc, char **argv) { - nng_thread ** thrs; + nng_thread **thrs; struct pubdrop_args pa; int rv; int nsubs; |
