diff --git a/src/core/stats.c b/src/core/stats.c index 50f24e29e..3b9448e6d 100644 --- a/src/core/stats.c +++ b/src/core/stats.c @@ -11,7 +11,9 @@ #include #include +#include "core/defs.h" #include "core/nng_impl.h" +#include "nng/nng.h" typedef struct nng_stat nni_stat; @@ -377,72 +379,123 @@ nng_stat_parent(nng_stat *stat) nng_stat * nng_stat_next(nng_stat *stat) { +#if NNG_ENABLE_STATS if (stat->s_parent == NULL) { return (NULL); // Root node, no siblings. } return (nni_list_next(&stat->s_parent->s_children, stat)); +#else + NNI_ARG_UNUSED(stat); + return (NULL); +#endif } nng_stat * nng_stat_child(nng_stat *stat) { +#if NNG_ENABLE_STATS return (nni_list_first(&stat->s_children)); +#else + NNI_ARG_UNUSED(stat); + return (NULL); +#endif } const char * nng_stat_name(nni_stat *stat) { +#if NNG_ENABLE_STATS return (stat->s_info->si_name); +#else + NNI_ARG_UNUSED(stat); + return (NULL); +#endif } uint64_t nng_stat_value(nni_stat *stat) { +#if NNG_ENABLE_STATS return (stat->s_val.sv_value); +#else + NNI_ARG_UNUSED(stat); + return (0); +#endif } bool nng_stat_bool(nni_stat *stat) { +#if NNG_ENABLE_STATS return (stat->s_val.sv_bool); +#else + NNI_ARG_UNUSED(stat); + return (false); +#endif } const char * nng_stat_string(nng_stat *stat) { +#if NNG_ENABLE_STATS if (stat->s_info->si_type != NNG_STAT_STRING) { return (""); } return (stat->s_val.sv_string); +#else + NNI_ARG_UNUSED(stat); + return (""); +#endif } uint64_t nng_stat_timestamp(nng_stat *stat) { +#if NNG_ENABLE_STATS return ((uint64_t) stat->s_timestamp); +#else + NNI_ARG_UNUSED(stat); + return (0); +#endif } int nng_stat_type(nng_stat *stat) { +#if NNG_ENABLE_STATS return (stat->s_info->si_type); +#else + NNI_ARG_UNUSED(stat); + return (NNG_STAT_ID); +#endif } int nng_stat_unit(nng_stat *stat) { +#if NNG_ENABLE_STATS return (stat->s_info->si_unit); +#else + NNI_ARG_UNUSED(stat); + return (NNG_UNIT_NONE); +#endif } const char * nng_stat_desc(nng_stat *stat) { +#if NNG_ENABLE_STATS return (stat->s_info->si_desc); +#else + NNI_ARG_UNUSED(stat); + return (""); +#endif } nng_stat * nng_stat_find(nng_stat *stat, const char *name) { +#if NNG_ENABLE_STATS nng_stat *child; if (stat == NULL) { return (NULL); @@ -456,12 +509,17 @@ nng_stat_find(nng_stat *stat, const char *name) return (result); } } +#else + NNI_ARG_UNUSED(stat); + NNI_ARG_UNUSED(name); +#endif return (NULL); } nng_stat * nng_stat_find_scope(nng_stat *stat, const char *name, int id) { +#if NNG_ENABLE_STATS nng_stat *child; if (stat == NULL || stat->s_info->si_type != NNG_STAT_SCOPE) { return (NULL); @@ -477,6 +535,11 @@ nng_stat_find_scope(nng_stat *stat, const char *name, int id) return (result); } } +#else + NNI_ARG_UNUSED(stat); + NNI_ARG_UNUSED(name); + NNI_ARG_UNUSED(id); +#endif return (NULL); } diff --git a/src/core/stats.h b/src/core/stats.h index e80f18dff..ff4db25c5 100644 --- a/src/core/stats.h +++ b/src/core/stats.h @@ -36,21 +36,23 @@ typedef enum nng_unit_enum nni_stat_unit; // avoid having to spend dereference costs or (worse) to have to include // extra conditionals on hot code paths. struct nni_stat_item { +#ifdef NNG_ENABLE_STATS nni_list_node si_node; // list node, framework use only nni_list si_children; // children, framework use only const nni_stat_info *si_info; // statistic description union { uint64_t sv_number; nni_atomic_u64 sv_atomic; - char * sv_string; + char *sv_string; bool sv_bool; int sv_id; } si_u; +#endif }; struct nni_stat_info { - const char * si_name; // name of statistic - const char * si_desc; // description of statistic (English) + const char *si_name; // name of statistic + const char *si_desc; // description of statistic (English) nni_stat_type si_type; // statistic type, e.g. NNG_STAT_LEVEL nni_stat_unit si_unit; // statistic unit, e.g. NNG_UNIT_MILLIS nni_stat_update si_update; // update function (can be NULL)