index 3a4029d8be4b2d46e8365d3904e9fcbfe1706a9f..3a50dc6c57d269ee05f3b285d09b5a3bb132267a 100644 (file)
#define SDB_CORE_TIMESERIES_H 1
#include "sysdb.h"
+#include "core/object.h"
#include "core/time.h"
+#include "utils/strbuf.h"
#ifdef __cplusplus
extern "C" {
#endif
+/*
+ * sdb_timeseries_info_t:
+ * Information about a timeseries.
+ */
+typedef struct {
+ char **data_names;
+ size_t data_names_len;
+} sdb_timeseries_info_t;
+
+/*
+ * sdb_timeseries_info_create:
+ * Allocate a timeseries information object.
+ *
+ * Returns:
+ * - a newly allocated timeseries info object on success
+ * - NULL else
+ */
+sdb_timeseries_info_t *
+sdb_timeseries_info_create(size_t data_names_len, const char * const *data_names);
+
+/*
+ * sdb_timeseries_info_destroy:
+ * Destroy a timeseries info object, freeing all of its memory.
+ */
+void
+sdb_timeseries_info_destroy(sdb_timeseries_info_t *ts_info);
+
/*
* A data-point describes a datum at a certain point of time.
*/
sdb_time_t end;
sdb_data_point_t **data;
- char **data_names;
size_t data_len;
+ char **data_names;
+ size_t data_names_len;
} sdb_timeseries_t;
/*
sdb_time_t end;
} sdb_timeseries_opts_t;
+/*
+ * sdb_timeseries_create:
+ * Allocate a time-series object, pre-populating the data_names information
+ * and allocating the data field.
+ *
+ * Returns:
+ * - a newly allocated time-series object on success
+ * - NULL else
+ */
+sdb_timeseries_t *
+sdb_timeseries_create(size_t data_names_len, const char * const *data_names,
+ size_t data_len);
+
+/*
+ * sdb_timeseries_destroy:
+ * Destroy a time-series object, freeing all of its memory.
+ */
+void
+sdb_timeseries_destroy(sdb_timeseries_t *ts);
+
+/*
+ * A timeseries fetcher fetches data from a timeseries data-store.
+ */
+typedef struct {
+ /*
+ * describe:
+ * Retrieve information about the timeseries from the data-store. The
+ * returned timeseries info object must be freeable using
+ * sdb_timeseries_info_destroy.
+ */
+ sdb_timeseries_info_t *(*describe)(const char *id, sdb_object_t *user_data);
+
+ /*
+ * fetch:
+ * Read timeseries data from the data-store. The returned timeseries
+ * object must be freeable using sdb_timeseries_destroy.
+ */
+ sdb_timeseries_t *(*fetch)(const char *id,
+ sdb_timeseries_opts_t *opts, sdb_object_t *user_data);
+} sdb_timeseries_fetcher_t;
+
+/*
+ * sdb_timeseries_tojson:
+ * Serialize a time-series to JSON written to the specified string buffer.
+ *
+ * Returns:
+ * - 0 on success
+ * - a negative value else
+ */
+int
+sdb_timeseries_tojson(sdb_timeseries_t *ts, sdb_strbuf_t *buf);
+
#ifdef __cplusplus
} /* extern "C" */
#endif