X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Finclude%2Fcore%2Fstore.h;h=aa28c96d1be99c57806dd79965ccc38ccf3ae2ce;hb=055e6f2b7fea04f00ed3783e22344c7340b54c78;hp=59200815482e9d5540837dfd1fce07e19fdfd743;hpb=ee48af6c45d912a297e183ebdfd2e723e3a8bf1a;p=sysdb.git diff --git a/src/include/core/store.h b/src/include/core/store.h index 5920081..aa28c96 100644 --- a/src/include/core/store.h +++ b/src/include/core/store.h @@ -32,7 +32,6 @@ #include "core/object.h" #include "core/data.h" #include "core/time.h" -#include "utils/llist.h" #include "utils/strbuf.h" #include @@ -56,12 +55,12 @@ enum { /* - * sdb_store_base_t represents the super-class of any object stored in the + * sdb_store_obj_t represents the super-class of any object stored in the * database. It inherits from sdb_object_t and may safely be cast to a generic * object to access its name. */ -struct sdb_store_base; -typedef struct sdb_store_base sdb_store_base_t; +struct sdb_store_obj; +typedef struct sdb_store_obj sdb_store_obj_t; /* * sdb_store_clear: @@ -98,7 +97,7 @@ sdb_store_host(const char *name, sdb_time_t last_update); _Bool sdb_store_has_host(const char *name); -sdb_store_base_t * +sdb_store_obj_t * sdb_store_get_host(const char *name); /* @@ -123,7 +122,7 @@ sdb_store_attribute(const char *hostname, /* * 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 @@ -141,6 +140,24 @@ int 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. @@ -253,7 +270,7 @@ sdb_store_inv_matcher(sdb_store_matcher_t *m); * - 0 else */ int -sdb_store_matcher_matches(sdb_store_matcher_t *m, sdb_store_base_t *obj); +sdb_store_matcher_matches(sdb_store_matcher_t *m, sdb_store_obj_t *obj); /* * sdb_store_matcher_tostring: @@ -268,7 +285,7 @@ sdb_store_matcher_tostring(sdb_store_matcher_t *m, char *buf, size_t buflen); * Lookup callback. It is called for each matching object when looking up data * in the store. The lookup aborts if the callback returns non-zero. */ -typedef int (*sdb_store_lookup_cb)(sdb_store_base_t *obj, void *user_data); +typedef int (*sdb_store_lookup_cb)(sdb_store_obj_t *obj, void *user_data); /* * sdb_store_lookup: @@ -319,13 +336,13 @@ sdb_store_tojson(sdb_strbuf_t *buf, int flags); * - a negative value on error */ int -sdb_store_host_tojson(sdb_store_base_t *host, sdb_strbuf_t *buf, int flags); +sdb_store_host_tojson(sdb_store_obj_t *host, sdb_strbuf_t *buf, int flags); /* * sdb_store_iter_cb: * Store iterator callback. Iteration stops if the callback returns non-zero. */ -typedef int (*sdb_store_iter_cb)(sdb_store_base_t *obj, void *user_data); +typedef int (*sdb_store_iter_cb)(sdb_store_obj_t *obj, void *user_data); /* * sdb_store_iterate: