Code

store: Use full initializers for store objects.
[sysdb.git] / src / include / core / store.h
index f42d217ebe5dba73541d79a0de74a94d8f2081b7..4038fe4da91c0fc0c70a68b4ba833e3cba67da5c 100644 (file)
@@ -121,6 +121,7 @@ typedef struct {
        const char * const *backends;
        size_t backends_num;
 } sdb_store_host_t;
+#define SDB_STORE_HOST_INIT { NULL, 0, 0, NULL, 0 }
 
 /*
  * sdb_store_service_t represents the meta-data of a stored service object.
@@ -134,6 +135,7 @@ typedef struct {
        const char * const *backends;
        size_t backends_num;
 } sdb_store_service_t;
+#define SDB_STORE_SERVICE_INIT { NULL, NULL, 0, 0, NULL, 0 }
 
 /*
  * sdb_metric_store_t specifies how to access a metric's data.
@@ -159,6 +161,7 @@ typedef struct {
        const char * const *backends;
        size_t backends_num;
 } sdb_store_metric_t;
+#define SDB_STORE_METRIC_INIT { NULL, NULL, { NULL, NULL }, 0, 0, NULL, 0 }
 
 /*
  * sdb_store_attribute_t represents a stored attribute.
@@ -175,6 +178,7 @@ typedef struct {
        const char * const *backends;
        size_t backends_num;
 } sdb_store_attribute_t;
+#define SDB_STORE_ATTRIBUTE_INIT { NULL, 0, NULL, NULL, SDB_DATA_INIT, 0, 0, NULL, 0 }
 
 /*
  * Expressions represent arithmetic expressions based on stored objects and
@@ -288,15 +292,12 @@ typedef struct {
         * execute_query:
         * Execute a previously prepared query. The callback may expect that only
         * queries prepared by its respective prepare callback will be passed to
-        * this function.
-        *
-        * TODO: Instead of letting the executor write directly to a string buffer
-        *       (which cannot easily be merged with other results), let it hand
-        *       all objects to a store-writer.
+        * this function. The query result will be passed back via the specified
+        * store writer.
         */
        int (*execute_query)(sdb_object_t *q,
-                       sdb_strbuf_t *buf, sdb_strbuf_t *errbuf,
-                       sdb_object_t *user_data);
+                       sdb_store_writer_t *w, sdb_object_t *wd,
+                       sdb_strbuf_t *errbuf, sdb_object_t *user_data);
 } sdb_store_reader_t;
 
 /*
@@ -462,7 +463,7 @@ sdb_store_query_prepare_matcher(sdb_ast_node_t *ast);
  */
 int
 sdb_store_query_execute(sdb_store_t *store, sdb_store_query_t *m,
-               sdb_strbuf_t *buf, sdb_strbuf_t *errbuf);
+               sdb_store_writer_t *w, sdb_object_t *wd, sdb_strbuf_t *errbuf);
 
 /*
  * sdb_store_expr_create: