diff options
| author | Garrett D'Amore <garrett@damore.org> | 2020-11-08 23:10:21 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2020-11-08 23:10:21 -0800 |
| commit | bec9771439bbd1db6844a66ce076b4dd438ae610 (patch) | |
| tree | 15fae33f3935eb0135d8ccae36ba114ed32d5b9d /src/core/stats.c | |
| parent | a06a4b45ef111908c1cb7138990ae36bd2c5d0c3 (diff) | |
| download | nng-bec9771439bbd1db6844a66ce076b4dd438ae610.tar.gz nng-bec9771439bbd1db6844a66ce076b4dd438ae610.tar.bz2 nng-bec9771439bbd1db6844a66ce076b4dd438ae610.zip | |
fixes #1329 stats could lose parent and private fields
Diffstat (limited to 'src/core/stats.c')
| -rw-r--r-- | src/core/stats.c | 58 |
1 files changed, 18 insertions, 40 deletions
diff --git a/src/core/stats.c b/src/core/stats.c index f9b56858..d6f98e3e 100644 --- a/src/core/stats.c +++ b/src/core/stats.c @@ -48,7 +48,6 @@ nni_stat_add(nni_stat_item *parent, nni_stat_item *child) NNI_LIST_INIT(&child->si_children, nni_stat_item, si_node); } nni_list_append(&parent->si_children, child); - child->si_parent = parent; #else NNI_ARG_UNUSED(parent); NNI_ARG_UNUSED(child); @@ -70,15 +69,11 @@ nni_stat_register(nni_stat_item *child) } void -nni_stat_unregister(nni_stat_item *child) +nni_stat_unregister(nni_stat_item *stat) { #ifdef NNG_ENABLE_STATS - nni_stat_item *parent; nni_mtx_lock(&stats_lock); - if ((parent = child->si_parent) != NULL) { - nni_list_remove(&parent->si_children, child); - child->si_parent = NULL; - } + nni_list_node_remove(&stat->si_node); nni_mtx_unlock(&stats_lock); #else NNI_ARG_UNUSED(child); @@ -90,16 +85,14 @@ void nni_stat_init(nni_stat_item *stat, const char *name, const char *desc) { NNI_LIST_INIT(&stat->si_children, nni_stat_item, si_node); - stat->si_parent = NULL; - stat->si_name = name; - stat->si_desc = desc; - stat->si_lock = NULL; - stat->si_update = NULL; - stat->si_private = NULL; - stat->si_string = NULL; - stat->si_number = 0; - stat->si_type = NNG_STAT_COUNTER; - stat->si_unit = NNG_UNIT_NONE; + stat->si_name = name; + stat->si_desc = desc; + stat->si_lock = NULL; + stat->si_update = NULL; + stat->si_string = NULL; + stat->si_number = 0; + stat->si_type = NNG_STAT_COUNTER; + stat->si_unit = NNG_UNIT_NONE; } void @@ -141,9 +134,8 @@ nni_stat_init_bool( } static void -stat_atomic_update(nni_stat_item *stat, void *notused) +stat_atomic_update(nni_stat_item *stat) { - NNI_ARG_UNUSED(notused); stat->si_number = nni_atomic_get64(&stat->si_atomic); } @@ -151,9 +143,8 @@ void nni_stat_init_atomic(nni_stat_item *stat, const char *name, const char *desc) { nni_stat_init(stat, name, desc); - stat->si_number = 0; - stat->si_private = NULL; - stat->si_update = stat_atomic_update; + stat->si_number = 0; + stat->si_update = stat_atomic_update; nni_atomic_init64(&stat->si_atomic); } @@ -192,19 +183,6 @@ nni_stat_set_lock(nni_stat_item *stat, nni_mtx *mtx) #endif } -void -nni_stat_set_update(nni_stat_item *stat, nni_stat_update f, void *a) -{ -#ifdef NNG_ENABLE_STATS - stat->si_update = f; - stat->si_private = a; -#else - NNI_ARG_UNUSED(stat); - NNI_ARG_UNUSED(f); - NNI_ARG_UNUSED(a); -#endif -} - #ifdef NNG_ENABLE_STATS void nni_stat_set_type(nni_stat_item *stat, int type) @@ -295,7 +273,7 @@ stat_update(nni_stat *stat) } } if (item->si_update != NULL) { - item->si_update(item, item->si_private); + item->si_update(item); } stat->s_value = item->si_number; stat->s_time = nni_clock(); @@ -424,7 +402,7 @@ nng_stat_find(nng_stat *stat, const char *name) if (strcmp(name, stat->s_name) == 0) { return (stat); } - NNI_LIST_FOREACH(&stat->s_children, child) { + NNI_LIST_FOREACH (&stat->s_children, child) { nng_stat *result; if ((result = nng_stat_find(child, name)) != NULL) { return (result); @@ -437,7 +415,7 @@ nng_stat * nng_stat_find_socket(nng_stat *stat, nng_socket s) { char name[16]; - (void) snprintf(name, sizeof (name), "socket%d", nng_socket_id(s)); + (void) snprintf(name, sizeof(name), "socket%d", nng_socket_id(s)); return (nng_stat_find(stat, name)); } @@ -445,7 +423,7 @@ nng_stat * nng_stat_find_dialer(nng_stat *stat, nng_dialer d) { char name[16]; - (void) snprintf(name, sizeof (name), "dialer%d", nng_dialer_id(d)); + (void) snprintf(name, sizeof(name), "dialer%d", nng_dialer_id(d)); return (nng_stat_find(stat, name)); } @@ -453,7 +431,7 @@ nng_stat * nng_stat_find_listener(nng_stat *stat, nng_listener l) { char name[16]; - (void) snprintf(name, sizeof (name), "listener%d", nng_listener_id(l)); + (void) snprintf(name, sizeof(name), "listener%d", nng_listener_id(l)); return (nng_stat_find(stat, name)); } |
