static void test_stats_foreach_counter_yields_tracked_counters(void) { StatsCluster *sc = stats_cluster_new(SCS_SOURCE | SCS_FILE, "id", "instance"); assert_stats_foreach_yielded_counters_matches(sc, -1); stats_cluster_track_counter(sc, SC_TYPE_PROCESSED); assert_stats_foreach_yielded_counters_matches(sc, SC_TYPE_PROCESSED, -1); stats_cluster_track_counter(sc, SC_TYPE_STAMP); assert_stats_foreach_yielded_counters_matches(sc, SC_TYPE_PROCESSED, SC_TYPE_STAMP, -1); stats_cluster_free(sc); }
static void test_stats_foreach_counter_never_forgets_untracked_counters(void) { StatsCluster *sc = stats_cluster_new(SCS_SOURCE | SCS_FILE, "id", "instance"); StatsCounterItem *processed, *stamp; processed = stats_cluster_track_counter(sc, SC_TYPE_PROCESSED); stamp = stats_cluster_track_counter(sc, SC_TYPE_STAMP); stats_cluster_untrack_counter(sc, SC_TYPE_PROCESSED, &processed); assert_stats_foreach_yielded_counters_matches(sc, SC_TYPE_PROCESSED, SC_TYPE_STAMP, -1); stats_cluster_untrack_counter(sc, SC_TYPE_STAMP, &stamp); assert_stats_foreach_yielded_counters_matches(sc, SC_TYPE_PROCESSED, SC_TYPE_STAMP, -1); stats_cluster_free(sc); }
/** * stats_register_associated_counter: * @sc: the dynamic counter that was registered with stats_register_dynamic_counter * @type: the type that we want to use in the same StatsCluster instance * @counter: the returned pointer to the counter itself * * This function registers another counter type in the same StatsCounter * instance in order to avoid an unnecessary lookup. **/ void stats_register_associated_counter(StatsCluster *sc, StatsCounterType type, StatsCounterItem **counter) { g_assert(stats_locked); *counter = NULL; if (!sc) return; g_assert(sc->dynamic); *counter = stats_cluster_track_counter(sc, type); }
static StatsCluster * _register_counter(gint stats_level, gint component, const gchar *id, const gchar *instance, StatsCounterType type, gboolean dynamic, StatsCounterItem **counter) { StatsCluster *sc; g_assert(stats_locked); sc = _grab_cluster(stats_level, component, id, instance, dynamic); if (sc) *counter = stats_cluster_track_counter(sc, type); else *counter = NULL; return sc; }