diff options
| author | Garrett D'Amore <garrett@damore.org> | 2025-01-04 14:25:44 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2025-01-04 16:40:37 -0800 |
| commit | a40b421d39a64c285a4ac23304538690aaa90739 (patch) | |
| tree | 8b55dad260cafe6c02938fd1850f0a2e88e776ce | |
| parent | 7cdba9654117b4be1bf43925c10bae1a2a510cfa (diff) | |
| download | nng-a40b421d39a64c285a4ac23304538690aaa90739.tar.gz nng-a40b421d39a64c285a4ac23304538690aaa90739.tar.bz2 nng-a40b421d39a64c285a4ac23304538690aaa90739.zip | |
api: Promote idhash supplemental API to core
| -rw-r--r-- | docs/ref/api/id_map.md | 3 | ||||
| -rw-r--r-- | docs/ref/migrate/nng1.md | 1 | ||||
| -rw-r--r-- | include/nng/nng.h | 14 | ||||
| -rw-r--r-- | include/nng/supplemental/util/idhash.h | 36 | ||||
| -rw-r--r-- | src/core/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | src/core/idhash_test.c (renamed from src/supplemental/util/idhash_test.c) | 4 | ||||
| -rw-r--r-- | src/nng.c | 55 | ||||
| -rw-r--r-- | src/supplemental/util/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | src/supplemental/util/idhash.c | 68 |
9 files changed, 74 insertions, 114 deletions
diff --git a/docs/ref/api/id_map.md b/docs/ref/api/id_map.md index 0e5c1eac..fcbae848 100644 --- a/docs/ref/api/id_map.md +++ b/docs/ref/api/id_map.md @@ -9,9 +9,6 @@ include file to list of includes. ## ID Map Structure ```c -#include <nng/nng.h> -#include <nng/supplemental/util/idhash.h> - typedef struct nng_id_map_s nng_id_map; ``` diff --git a/docs/ref/migrate/nng1.md b/docs/ref/migrate/nng1.md index e6d6d820..cfb40a90 100644 --- a/docs/ref/migrate/nng1.md +++ b/docs/ref/migrate/nng1.md @@ -41,6 +41,7 @@ Simply remove any references to them. - `nng/protocol/survey0/respond.h` - `nng/protocol/survey0/survey.h` - `nng/supplemental/tls/tls.h` +- `nng/supplemental/util/idhash.h` - `nng/supplemental/util/platform.h` - `nng/transport/inproc/inproc.h` - `nng/transport/ipc/ipc.h` diff --git a/include/nng/nng.h b/include/nng/nng.h index 43824d61..980e527a 100644 --- a/include/nng/nng.h +++ b/include/nng/nng.h @@ -1604,6 +1604,20 @@ NNG_DECL const char *nng_tls_engine_description(void); // nng_tls_engine_fips_mode returns true if the engine is in FIPS 140 mode. NNG_DECL bool nng_tls_engine_fips_mode(void); +// Public ID map support. +typedef struct nng_id_map_s nng_id_map; + +#define NNG_MAP_RANDOM 1 + +NNG_DECL int nng_id_map_alloc( + nng_id_map **map, uint64_t lo, uint64_t hi, int flags); +NNG_DECL void nng_id_map_free(nng_id_map *map); +NNG_DECL void *nng_id_get(nng_id_map *, uint64_t); +NNG_DECL int nng_id_set(nng_id_map *, uint64_t, void *); +NNG_DECL int nng_id_alloc(nng_id_map *, uint64_t *, void *); +NNG_DECL int nng_id_remove(nng_id_map *, uint64_t); +NNG_DECL bool nng_id_visit(nng_id_map *, uint64_t *, void **, uint32_t *); + // Protocol specific values. These were formerly located in protocol specific // headers, but we are bringing them here for ease of use. diff --git a/include/nng/supplemental/util/idhash.h b/include/nng/supplemental/util/idhash.h deleted file mode 100644 index f231a554..00000000 --- a/include/nng/supplemental/util/idhash.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// 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 -// file was obtained (LICENSE.txt). A copy of the license may also be -// found online at https://opensource.org/licenses/MIT. -// - -#ifndef NNG_SUPPLEMENTAL_UTIL_IDHASH_H -#define NNG_SUPPLEMENTAL_UTIL_IDHASH_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <nng/nng.h> - -typedef struct nng_id_map_s nng_id_map; - -#define NNG_MAP_RANDOM 1 - -NNG_DECL int nng_id_map_alloc( - nng_id_map **map, uint64_t lo, uint64_t hi, int flags); -NNG_DECL void nng_id_map_free(nng_id_map *map); -NNG_DECL void *nng_id_get(nng_id_map *, uint64_t); -NNG_DECL int nng_id_set(nng_id_map *, uint64_t, void *); -NNG_DECL int nng_id_alloc(nng_id_map *, uint64_t *, void *); -NNG_DECL int nng_id_remove(nng_id_map *, uint64_t); -NNG_DECL bool nng_id_visit(nng_id_map *, uint64_t *, void **, uint32_t *); - -#ifdef __cplusplus -} -#endif - -#endif // NNG_SUPPLEMENTAL_IDHASH_IDHASH_H diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index ba8b1ca8..9f5b4a95 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright 2024 Staysail Systems, Inc. <info@staystail.tech> +# Copyright 2025 Staysail Systems, Inc. <info@staystail.tech> # # This software is supplied under the terms of the MIT License, a # copy of which should be located in the distribution where this @@ -84,6 +84,7 @@ nng_test(aio_test) nng_test(buf_size_test) nng_test(errors_test) nng_test(id_test) +nng_test(idhash_test) nng_test(init_test) nng_test(list_test) nng_test(log_test) diff --git a/src/supplemental/util/idhash_test.c b/src/core/idhash_test.c index e0d472a0..2bf65dae 100644 --- a/src/supplemental/util/idhash_test.c +++ b/src/core/idhash_test.c @@ -1,5 +1,5 @@ // -// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2025 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 @@ -9,8 +9,6 @@ #include <nuts.h> -#include <nng/supplemental/util/idhash.h> - void test_id_basic(void) { @@ -2179,3 +2179,58 @@ nng_udp_multicast_membership(nng_udp *udp, nng_sockaddr *sa, bool join) return ( nni_plat_udp_multicast_membership((nni_plat_udp *) udp, sa, join)); } + +struct nng_id_map_s { + nni_id_map m; +}; + +int +nng_id_map_alloc(nng_id_map **map, uint64_t lo, uint64_t hi, int flags) +{ + nng_id_map *m; + + if ((m = NNI_ALLOC_STRUCT(m)) == NULL) { + return (NNG_ENOMEM); + } + nni_id_map_init( + &m->m, lo, hi, (flags & NNG_MAP_RANDOM) ? true : false); + *map = m; + return (0); +} + +void +nng_id_map_free(nng_id_map *map) +{ + nni_id_map_fini(&map->m); + NNI_FREE_STRUCT(map); +} + +void * +nng_id_get(nng_id_map *map, uint64_t id) +{ + return (nni_id_get(&map->m, id)); +} + +int +nng_id_set(nng_id_map *map, uint64_t id, void *val) +{ + return (nni_id_set(&map->m, id, val)); +} + +int +nng_id_remove(nng_id_map *map, uint64_t id) +{ + return (nni_id_remove(&map->m, id)); +} + +int +nng_id_alloc(nng_id_map *map, uint64_t *id, void *val) +{ + return (nni_id_alloc(&map->m, id, val)); +} + +bool +nng_id_visit(nng_id_map *map, uint64_t *id, void **valp, uint32_t *cursor) +{ + return (nni_id_visit(&map->m, id, valp, cursor)); +} diff --git a/src/supplemental/util/CMakeLists.txt b/src/supplemental/util/CMakeLists.txt index 69afd9e0..d7541363 100644 --- a/src/supplemental/util/CMakeLists.txt +++ b/src/supplemental/util/CMakeLists.txt @@ -7,9 +7,7 @@ # found online at https://opensource.org/licenses/MIT. # -nng_sources(idhash.c options.c) +nng_sources(options.c) nng_headers( - nng/supplemental/util/idhash.h nng/supplemental/util/options.h) -nng_test(idhash_test) nng_test(options_test) diff --git a/src/supplemental/util/idhash.c b/src/supplemental/util/idhash.c deleted file mode 100644 index 4ededa31..00000000 --- a/src/supplemental/util/idhash.c +++ /dev/null @@ -1,68 +0,0 @@ -// -// 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 -// file was obtained (LICENSE.txt). A copy of the license may also be -// found online at https://opensource.org/licenses/MIT. -// - -#include <nng/nng.h> -#include <nng/supplemental/util/idhash.h> - -#include "core/nng_impl.h" - -struct nng_id_map_s { - nni_id_map m; -}; - -int -nng_id_map_alloc(nng_id_map **map, uint64_t lo, uint64_t hi, int flags) -{ - nng_id_map *m; - - if ((m = NNI_ALLOC_STRUCT(m)) == NULL) { - return (NNG_ENOMEM); - } - nni_id_map_init( - &m->m, lo, hi, (flags & NNG_MAP_RANDOM) ? true : false); - *map = m; - return (0); -} - -void -nng_id_map_free(nng_id_map *map) -{ - nni_id_map_fini(&map->m); - NNI_FREE_STRUCT(map); -} - -void * -nng_id_get(nng_id_map *map, uint64_t id) -{ - return (nni_id_get(&map->m, id)); -} - -int -nng_id_set(nng_id_map *map, uint64_t id, void *val) -{ - return (nni_id_set(&map->m, id, val)); -} - -int -nng_id_remove(nng_id_map *map, uint64_t id) -{ - return (nni_id_remove(&map->m, id)); -} - -int -nng_id_alloc(nng_id_map *map, uint64_t *id, void *val) -{ - return (nni_id_alloc(&map->m, id, val)); -} - -bool -nng_id_visit(nng_id_map *map, uint64_t *id, void **valp, uint32_t *cursor) -{ - return (nni_id_visit(&map->m, id, valp, cursor)); -} |
