1aa09b3d5SMarkus Armbruster /* 2aa09b3d5SMarkus Armbruster * Copyright (c) 2022 Oracle and/or its affiliates. 3aa09b3d5SMarkus Armbruster * 4aa09b3d5SMarkus Armbruster * This work is licensed under the terms of the GNU GPL, version 2. 5aa09b3d5SMarkus Armbruster * See the COPYING file in the top-level directory. 6aa09b3d5SMarkus Armbruster */ 7aa09b3d5SMarkus Armbruster 8aa09b3d5SMarkus Armbruster #ifndef STATS_H 9aa09b3d5SMarkus Armbruster #define STATS_H 10aa09b3d5SMarkus Armbruster 11aa09b3d5SMarkus Armbruster #include "qapi/qapi-types-stats.h" 12aa09b3d5SMarkus Armbruster 13aa09b3d5SMarkus Armbruster typedef void StatRetrieveFunc(StatsResultList **result, StatsTarget target, 14aa09b3d5SMarkus Armbruster strList *names, strList *targets, Error **errp); 15aa09b3d5SMarkus Armbruster typedef void SchemaRetrieveFunc(StatsSchemaList **result, Error **errp); 16aa09b3d5SMarkus Armbruster 17aa09b3d5SMarkus Armbruster /* 18aa09b3d5SMarkus Armbruster * Register callbacks for the QMP query-stats command. 19aa09b3d5SMarkus Armbruster * 20aa09b3d5SMarkus Armbruster * @provider: stats provider checked against QMP command arguments 21aa09b3d5SMarkus Armbruster * @stats_fn: routine to query stats: 22aa09b3d5SMarkus Armbruster * @schema_fn: routine to query stat schemas: 23aa09b3d5SMarkus Armbruster */ 24aa09b3d5SMarkus Armbruster void add_stats_callbacks(StatsProvider provider, 25aa09b3d5SMarkus Armbruster StatRetrieveFunc *stats_fn, 26aa09b3d5SMarkus Armbruster SchemaRetrieveFunc *schemas_fn); 27aa09b3d5SMarkus Armbruster 28aa09b3d5SMarkus Armbruster /* 29aa09b3d5SMarkus Armbruster * Helper routines for adding stats entries to the results lists. 30aa09b3d5SMarkus Armbruster */ 31aa09b3d5SMarkus Armbruster void add_stats_entry(StatsResultList **, StatsProvider, const char *id, 32aa09b3d5SMarkus Armbruster StatsList *stats_list); 33aa09b3d5SMarkus Armbruster void add_stats_schema(StatsSchemaList **, StatsProvider, StatsTarget, 34aa09b3d5SMarkus Armbruster StatsSchemaValueList *); 35aa09b3d5SMarkus Armbruster 36aa09b3d5SMarkus Armbruster /* 37*a1a62cedSMichael Tokarev * True if a string matches the filter passed to the stats_fn callback, 38aa09b3d5SMarkus Armbruster * false otherwise. 39aa09b3d5SMarkus Armbruster * 40aa09b3d5SMarkus Armbruster * Note that an empty list means no filtering, i.e. all strings will 41aa09b3d5SMarkus Armbruster * return true. 42aa09b3d5SMarkus Armbruster */ 43aa09b3d5SMarkus Armbruster bool apply_str_list_filter(const char *string, strList *list); 44aa09b3d5SMarkus Armbruster 45aa09b3d5SMarkus Armbruster #endif /* STATS_H */ 46