diff --git a/src/core/plugin.c b/src/core/plugin.c
index 85dd76f410dbccfdb27f6bbf9fff3c0ee4653f27..79df55e589ee967a4cf9e4819d4cada6c29dfae0 100644 (file)
--- a/src/core/plugin.c
+++ b/src/core/plugin.c
return ret;
} /* sdb_plugin_logf */
+sdb_timeseries_t *
+sdb_plugin_fetch_timeseries(const char *type, const char *id,
+ sdb_timeseries_opts_t *opts)
+{
+ sdb_plugin_cb_t *plugin;
+ sdb_plugin_fetch_ts_cb callback;
+ sdb_timeseries_t *ts;
+
+ ctx_t *old_ctx;
+
+ if ((! type) || (! id) || (! opts))
+ return NULL;
+
+ plugin = SDB_PLUGIN_CB(sdb_llist_search_by_name(ts_fetcher_list, type));
+ if (! plugin) {
+ sdb_log(SDB_LOG_ERR, "core: Cannot fetch time-series of type %s: "
+ "no such plugin loaded", type);
+ errno = ENOENT;
+ return NULL;
+ }
+
+ old_ctx = ctx_set(plugin->cb_ctx);
+ callback = (sdb_plugin_fetch_ts_cb)plugin->cb_callback;
+ ts = callback(id, opts, plugin->cb_user_data);
+ ctx_set(old_ctx);
+ return ts;
+} /* sdb_plugin_fetch_timeseries */
+
/* vim: set tw=78 sw=4 ts=4 noexpandtab : */