index 20656b37bdb8dbb0272db666d56dacf20fbf7583..4e8d468c4263f0e57cd2f26d301aedf0006102a7 100644 (file)
--- a/src/include/core/store.h
+++ b/src/include/core/store.h
#include "core/object.h"
#include "core/data.h"
#include "core/time.h"
-#include "utils/llist.h"
#include "utils/strbuf.h"
#include <stdio.h>
/*
* sdb_store_service:
- * Add/update a store in the store. If the service, identified by its name,
+ * Add/update a service in the store. If the service, identified by its name,
* already exists for the specified host, it will be updated according to the
* specified 'service' object. If the referenced host does not exist, an error
* will be reported. Else, a new entry will be created in the store. Any
sdb_store_service(const char *hostname, const char *name,
sdb_time_t last_update);
+/*
+ * sdb_store_service_attr:
+ * Add/update a service's attribute in the store. If the attribute, identified
+ * by its key, already exists for the specified service, it will be updated to
+ * the specified value. If the references service (for the specified host)
+ * does not exist, an error will be reported. Any memory required for storing
+ * the entry will be allocated and managed by the store itself.
+ *
+ * Returns:
+ * - 0 on success
+ * - a positive value if the new entry is older than the currently stored
+ * entry (in this case, no update will happen)
+ * - a negative value on error
+ */
+int
+sdb_store_service_attr(const char *hostname, const char *service,
+ const char *key, const sdb_data_t *value, sdb_time_t last_update);
+
/*
* Conditionals may be used to lookup hosts from the store based on a
* conditional expression.
sdb_store_matcher_t *
sdb_store_attr_matcher(const char *name, const char *value, _Bool re);
+/*
+ * sdb_store_isnull_matcher:
+ * Creates a matcher matching "missing" attributes.
+ */
+sdb_store_matcher_t *
+sdb_store_isnull_matcher(const char *attr_name);
+
/*
* sdb_store_lt_matcher, sdb_store_le_matcher, sdb_store_eq_matcher,
* sdb_store_ge_matcher, sdb_store_gt_matcher:
typedef int (*sdb_store_lookup_cb)(sdb_store_obj_t *obj, void *user_data);
/*
- * sdb_store_lookup:
+ * sdb_store_scan:
* Look up objects in the store. The specified callback function is called for
- * each object in the store matching 'm'.
+ * each object in the store matching 'm'. The function performs a full scan of
+ * all hosts stored in the database.
*
* Returns:
* - 0 on success
* - a negative value else
*/
int
-sdb_store_lookup(sdb_store_matcher_t *m, sdb_store_lookup_cb cb,
+sdb_store_scan(sdb_store_matcher_t *m, sdb_store_lookup_cb cb,
void *user_data);
/*