X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Fcore%2Fplugin.c;h=7404b036392ecd5c76899009dd7f515ff9d87d8e;hp=4de1c3a4d93f3a8f502844bc67d4fe5801889b6b;hb=af74f327da5e6ebe01d5e5e6f8fa19646e203eed;hpb=f05f6dfc4e48309c916c0dcb158df66c80de6c71 diff --git a/src/core/plugin.c b/src/core/plugin.c index 4de1c3a..7404b03 100644 --- a/src/core/plugin.c +++ b/src/core/plugin.c @@ -1332,5 +1332,144 @@ sdb_plugin_fetch_timeseries(const char *type, const char *id, return ts; } /* sdb_plugin_fetch_timeseries */ +int +sdb_plugin_store_host(const char *name, sdb_time_t last_update) +{ + sdb_llist_iter_t *iter; + int status = 0; + + if (! name) + return -1; + + iter = sdb_llist_get_iter(writer_list); + while (sdb_llist_iter_has_next(iter)) { + sdb_plugin_writer_t *writer; + writer = SDB_PLUGIN_WRITER(sdb_llist_iter_get_next(iter)); + assert(writer); + if (writer->impl.store_host(name, last_update, writer->user_data)) + status = -1; + } + sdb_llist_iter_destroy(iter); + return status; +} /* sdb_plugin_store_host */ + +int +sdb_plugin_store_service(const char *hostname, const char *name, + sdb_time_t last_update) +{ + sdb_llist_iter_t *iter; + int status = 0; + + if ((! hostname) || (! name)) + return -1; + + iter = sdb_llist_get_iter(writer_list); + while (sdb_llist_iter_has_next(iter)) { + sdb_plugin_writer_t *writer; + writer = SDB_PLUGIN_WRITER(sdb_llist_iter_get_next(iter)); + assert(writer); + if (writer->impl.store_service(hostname, name, last_update, + writer->user_data)) + status = -1; + } + sdb_llist_iter_destroy(iter); + return status; +} /* sdb_plugin_store_service */ + +int +sdb_plugin_store_metric(const char *hostname, const char *name, + sdb_metric_store_t *store, sdb_time_t last_update) +{ + sdb_llist_iter_t *iter; + int status = 0; + + if ((! hostname) || (! name)) + return -1; + + if ((! store->type) || (! store->id)) + store = NULL; + + iter = sdb_llist_get_iter(writer_list); + while (sdb_llist_iter_has_next(iter)) { + sdb_plugin_writer_t *writer; + writer = SDB_PLUGIN_WRITER(sdb_llist_iter_get_next(iter)); + assert(writer); + if (writer->impl.store_metric(hostname, name, store, last_update, + writer->user_data)) + status = -1; + } + sdb_llist_iter_destroy(iter); + return status; +} /* sdb_plugin_store_metric */ + +int +sdb_plugin_store_attribute(const char *hostname, const char *key, + const sdb_data_t *value, sdb_time_t last_update) +{ + sdb_llist_iter_t *iter; + int status = 0; + + if ((! hostname) || (! key) || (! value)) + return -1; + + iter = sdb_llist_get_iter(writer_list); + while (sdb_llist_iter_has_next(iter)) { + sdb_plugin_writer_t *writer; + writer = SDB_PLUGIN_WRITER(sdb_llist_iter_get_next(iter)); + assert(writer); + if (writer->impl.store_attribute(hostname, key, value, last_update, + writer->user_data)) + status = -1; + } + sdb_llist_iter_destroy(iter); + return status; +} /* sdb_plugin_store_attribute */ + +int +sdb_plugin_store_service_attribute(const char *hostname, const char *service, + const char *key, const sdb_data_t *value, sdb_time_t last_update) +{ + sdb_llist_iter_t *iter; + int status = 0; + + if ((! hostname) || (! service) || (! key) || (! value)) + return -1; + + iter = sdb_llist_get_iter(writer_list); + while (sdb_llist_iter_has_next(iter)) { + sdb_plugin_writer_t *writer; + writer = SDB_PLUGIN_WRITER(sdb_llist_iter_get_next(iter)); + assert(writer); + if (writer->impl.store_service_attr(hostname, service, + key, value, last_update, writer->user_data)) + status = -1; + } + sdb_llist_iter_destroy(iter); + return status; +} /* sdb_plugin_store_service_attribute */ + +int +sdb_plugin_store_metric_attribute(const char *hostname, const char *metric, + const char *key, const sdb_data_t *value, sdb_time_t last_update) +{ + sdb_llist_iter_t *iter; + int status = 0; + + if ((! hostname) || (! metric) || (! key) || (! value)) + return -1; + + iter = sdb_llist_get_iter(writer_list); + while (sdb_llist_iter_has_next(iter)) { + sdb_plugin_writer_t *writer; + writer = SDB_PLUGIN_WRITER(sdb_llist_iter_get_next(iter)); + assert(writer); + if (writer->impl.store_metric_attr(hostname, metric, + key, value, last_update, writer->user_data)) + status = -1; + } + sdb_llist_iter_destroy(iter); + return status; +} /* sdb_plugin_store_metric_attribute */ + /* vim: set tw=78 sw=4 ts=4 noexpandtab : */