X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Finclude%2Fcore%2Fplugin.h;h=5c299ddc13193ba0df9073d8b006dcaeab88b975;hp=6c4a2e16cfdf674c2884f560ac158ef7836733d3;hb=daf9e92a1a3bf86a5cdbb2f3cc7d9c37f050174d;hpb=9a96acd759c31211aa512e174339a9c178c4eb83 diff --git a/src/include/core/plugin.h b/src/include/core/plugin.h index 6c4a2e1..5c299dd 100644 --- a/src/include/core/plugin.h +++ b/src/include/core/plugin.h @@ -123,9 +123,6 @@ typedef int (*sdb_plugin_shutdown_cb)(sdb_object_t *user_data); typedef int (*sdb_plugin_log_cb)(int prio, const char *msg, sdb_object_t *user_data); -typedef sdb_timeseries_t *(*sdb_plugin_fetch_ts_cb)(const char *id, - sdb_timeseries_opts_t *opts, sdb_object_t *user_data); - /* * sdb_plugin_register_config: * Register a "config" function. This will be used to pass on the @@ -240,11 +237,12 @@ sdb_plugin_register_log(const char *name, sdb_plugin_log_cb callback, sdb_object_t *user_data); /* - * sdb_plugin_register_ts_fetcher: - * Register a "time-series fetcher" function to be called whenever retrieving - * a time-series from a data-store. The callback will receive an identifier - * describing where to retrieve the data from (e.g. a filename or some kind of - * URL) and options which further describe the query. + * sdb_plugin_register_timeseries_fetcher: + * Register a "time-series fetcher" to be called whenever retrieving a + * time-series from a data-store or information about it. The fetch callback + * will receive an identifier describing where to retrieve the data from (e.g. + * a filename or some kind of URL) and options which further describe the + * query. * * The name is used literally (without prepending the plugin name) to look up * the appropriate fetcher callback. @@ -256,8 +254,8 @@ sdb_plugin_register_log(const char *name, sdb_plugin_log_cb callback, * use the object for other purposes, it should thus deref it. */ int -sdb_plugin_register_ts_fetcher(const char *name, - sdb_plugin_fetch_ts_cb callback, sdb_object_t *user_data); +sdb_plugin_register_timeseries_fetcher(const char *name, + sdb_timeseries_fetcher_t *fetcher, sdb_object_t *user_data); /* * sdb_plugin_register_writer: @@ -436,10 +434,35 @@ sdb_timeseries_t * sdb_plugin_fetch_timeseries(const char *type, const char *id, sdb_timeseries_opts_t *opts); +/* + * sdb_plugin_describe_timeseries: + * Fetch information about the time-series identified by 'id' from a backend + * data-store of the specified 'type'. The type has to match an existing + * time-series fetcher callback's name. The identifier is passed through to + * the callback which then needs to make sense of it. + * + * Returns: + * - a time-series information object on success + * - NULL else + */ +sdb_timeseries_info_t * +sdb_plugin_describe_timeseries(const char *type, const char *id); + +/* + * sdb_query_opts_t: + * Options for tuning the behavior of a query. + */ +typedef struct { + /* If enabled, populate the time-series info field of each metric. */ + bool describe_timeseries; +} sdb_query_opts_t; +#define SDB_DEFAULT_QUERY_OPTS { false } + /* * sdb_plugin_query: * Query the store using the query specified by 'ast'. The result will be - * written to 'buf' and any errors will be written to 'errbuf'. + * written to 'buf' and any errors will be written to 'errbuf'. The query + * options default to SDB_DEFAULT_QUERY_OPTS. * * Returns: * - 0 on success @@ -447,7 +470,8 @@ sdb_plugin_fetch_timeseries(const char *type, const char *id, */ int sdb_plugin_query(sdb_ast_node_t *ast, - sdb_store_writer_t *w, sdb_object_t *wd, sdb_strbuf_t *errbuf); + sdb_store_writer_t *w, sdb_object_t *wd, + sdb_query_opts_t *opts, sdb_strbuf_t *errbuf); /* * sdb_plugin_store_host, sdb_plugin_store_service, sdb_plugin_store_metric,