diff --git a/src/core/plugin.c b/src/core/plugin.c
index f10a904169f5d3993dc89894535e6a7b4ca01513..85dd76f410dbccfdb27f6bbf9fff3c0ee4653f27 100644 (file)
--- a/src/core/plugin.c
+++ b/src/core/plugin.c
static sdb_llist_t *cname_list = NULL;
static sdb_llist_t *shutdown_list = NULL;
static sdb_llist_t *log_list = NULL;
+static sdb_llist_t *ts_fetcher_list = NULL;
static struct {
const char *type;
@@ -751,12 +752,16 @@ sdb_plugin_register_collector(const char *name, sdb_plugin_collector_cb callback
if (interval)
SDB_PLUGIN_CCB(obj)->ccb_interval = *interval;
else {
- sdb_time_t tmp = sdb_plugin_get_ctx().interval;
+ ctx_t *ctx = ctx_get();
- if (tmp > 0)
- SDB_PLUGIN_CCB(obj)->ccb_interval = tmp;
- else
- SDB_PLUGIN_CCB(obj)->ccb_interval = 0;
+ if (! ctx) {
+ sdb_log(SDB_LOG_ERR, "core: Cannot determine interval "
+ "for collector %s; none specified and no plugin "
+ "context found", cb_name);
+ return -1;
+ }
+
+ SDB_PLUGIN_CCB(obj)->ccb_interval = ctx->public.interval;
}
if (! (SDB_PLUGIN_CCB(obj)->ccb_next_update = sdb_gettime())) {
@@ -782,6 +787,14 @@ sdb_plugin_register_collector(const char *name, sdb_plugin_collector_cb callback
return 0;
} /* sdb_plugin_register_collector */
+int
+sdb_plugin_register_ts_fetcher(const char *name,
+ sdb_plugin_fetch_ts_cb callback, sdb_object_t *user_data)
+{
+ return plugin_add_callback(&ts_fetcher_list, "time-series fetcher",
+ name, callback, user_data);
+} /* sdb_plugin_register_ts_fetcher */
+
sdb_plugin_ctx_t
sdb_plugin_get_ctx(void)
{
return 0;
} /* sdb_plugin_set_ctx */
+const sdb_plugin_info_t *
+sdb_plugin_current(void)
+{
+ ctx_t *ctx = ctx_get();
+
+ if (! ctx)
+ return NULL;
+ return &ctx->info;
+} /* sdb_plugin_current */
+
int
sdb_plugin_configure(const char *name, oconfig_item_t *ci)
{