X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Finclude%2Fcore%2Fstore.h;h=0cee91362998d55c4f329c031572d5096e68400c;hp=a1e5e179ca5ec03d40fedc20081ec9b9f86a3e7f;hb=9a96acd759c31211aa512e174339a9c178c4eb83;hpb=07d956b72b9b0498b5ef720ea647f2df517b7a90 diff --git a/src/include/core/store.h b/src/include/core/store.h index a1e5e17..0cee913 100644 --- a/src/include/core/store.h +++ b/src/include/core/store.h @@ -118,7 +118,7 @@ typedef struct { sdb_time_t last_update; sdb_time_t interval; - char **backends; + const char * const *backends; size_t backends_num; } sdb_store_host_t; @@ -131,7 +131,7 @@ typedef struct { sdb_time_t last_update; sdb_time_t interval; - char **backends; + const char * const *backends; size_t backends_num; } sdb_store_service_t; @@ -156,7 +156,7 @@ typedef struct { sdb_time_t last_update; sdb_time_t interval; - char **backends; + const char * const *backends; size_t backends_num; } sdb_store_metric_t; @@ -172,7 +172,7 @@ typedef struct { sdb_time_t last_update; sdb_time_t interval; - char **backends; + const char * const *backends; size_t backends_num; } sdb_store_attribute_t; @@ -288,15 +288,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 +459,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: @@ -731,13 +728,12 @@ sdb_store_json_formatter_t * sdb_store_json_formatter(sdb_strbuf_t *buf, int type, int flags); /* - * sdb_store_json_emit: + * sdb_store_emit: * Serialize a single object to JSON adding it to the string buffer associated * with the formatter object. The serialized object will not include * attributes or any child objects. Instead, call the function again for each * of those objects. All attributes have to be emitted before any other - * children types. Use sdb_store_json_emit_full() to emit a full (filtered) - * object. + * children types. Use sdb_store_emit_full() to emit a full (filtered) object. * * Note that the output might not be valid JSON before calling * sdb_store_json_finish(). @@ -747,10 +743,10 @@ sdb_store_json_formatter(sdb_strbuf_t *buf, int type, int flags); * - a negative value else */ int -sdb_store_json_emit(sdb_store_json_formatter_t *f, sdb_store_obj_t *obj); +sdb_store_emit(sdb_store_obj_t *obj, sdb_store_writer_t *w, sdb_object_t *wd); /* - * sdb_store_json_emit_full: + * sdb_store_emit_full: * Serialize a single object including it's attributes and all children to * JSON, adding it to the string buffer associated with the formatter object. * The filter, if specified, is applied to each attribute and child object. @@ -764,8 +760,8 @@ sdb_store_json_emit(sdb_store_json_formatter_t *f, sdb_store_obj_t *obj); * - a negative value else */ int -sdb_store_json_emit_full(sdb_store_json_formatter_t *f, sdb_store_obj_t *obj, - sdb_store_matcher_t *filter); +sdb_store_emit_full(sdb_store_obj_t *obj, sdb_store_matcher_t *filter, + sdb_store_writer_t *w, sdb_object_t *wd); /* * sdb_store_json_finish: @@ -775,6 +771,13 @@ sdb_store_json_emit_full(sdb_store_json_formatter_t *f, sdb_store_obj_t *obj, int sdb_store_json_finish(sdb_store_json_formatter_t *f); +/* + * sdb_store_json_writer: + * A store writer implementation that generates JSON output. It expects a + * store JSON formatter as its user-data argument. + */ +extern sdb_store_writer_t sdb_store_json_writer; + #ifdef __cplusplus } /* extern "C" */ #endif