Added the snapshot/epoch type and getter in the public API, plus the store wrapper implementation:
This commit is contained in:
parent
12e2a91ca7
commit
456e899b50
|
|
@ -18,6 +18,8 @@ typedef struct {
|
||||||
} amduat_tgk_store_mem_artifact_t;
|
} amduat_tgk_store_mem_artifact_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
/* Monotonic snapshot/epoch; increments when ingest/remove mutates state. */
|
||||||
|
amduat_tgk_snapshot_id_t snapshot_id;
|
||||||
amduat_tgk_store_config_t config;
|
amduat_tgk_store_config_t config;
|
||||||
const amduat_tgk_store_mem_artifact_t *artifacts;
|
const amduat_tgk_store_mem_artifact_t *artifacts;
|
||||||
size_t artifacts_len;
|
size_t artifacts_len;
|
||||||
|
|
|
||||||
|
|
@ -122,6 +122,17 @@ static bool amduat_tgk_store_fs_get_config(void *ctx,
|
||||||
return mem_ops.get_config(&fs->mem, out_config);
|
return mem_ops.get_config(&fs->mem, out_config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool amduat_tgk_store_fs_snapshot_id(void *ctx,
|
||||||
|
amduat_tgk_snapshot_id_t *out_id) {
|
||||||
|
amduat_tgk_store_fs_t *fs = (amduat_tgk_store_fs_t *)ctx;
|
||||||
|
amduat_tgk_store_ops_t mem_ops = amduat_tgk_store_mem_ops();
|
||||||
|
|
||||||
|
if (fs == NULL || mem_ops.snapshot_id == NULL) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return mem_ops.snapshot_id(&fs->mem, out_id);
|
||||||
|
}
|
||||||
|
|
||||||
static amduat_tgk_graph_error_t amduat_tgk_store_fs_resolve_edge(
|
static amduat_tgk_graph_error_t amduat_tgk_store_fs_resolve_edge(
|
||||||
void *ctx,
|
void *ctx,
|
||||||
amduat_reference_t ref,
|
amduat_reference_t ref,
|
||||||
|
|
@ -349,6 +360,7 @@ amduat_tgk_store_ops_t amduat_tgk_store_fs_ops(void) {
|
||||||
|
|
||||||
memset(&ops, 0, sizeof(ops));
|
memset(&ops, 0, sizeof(ops));
|
||||||
ops.get_config = amduat_tgk_store_fs_get_config;
|
ops.get_config = amduat_tgk_store_fs_get_config;
|
||||||
|
ops.snapshot_id = amduat_tgk_store_fs_snapshot_id;
|
||||||
ops.resolve_edge = amduat_tgk_store_fs_resolve_edge;
|
ops.resolve_edge = amduat_tgk_store_fs_resolve_edge;
|
||||||
ops.edges_from = amduat_tgk_store_fs_edges_from;
|
ops.edges_from = amduat_tgk_store_fs_edges_from;
|
||||||
ops.edges_to = amduat_tgk_store_fs_edges_to;
|
ops.edges_to = amduat_tgk_store_fs_edges_to;
|
||||||
|
|
|
||||||
|
|
@ -555,6 +555,18 @@ static bool amduat_tgk_store_mem_get_config(void *ctx,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool amduat_tgk_store_mem_snapshot_id(
|
||||||
|
void *ctx,
|
||||||
|
amduat_tgk_snapshot_id_t *out_id) {
|
||||||
|
amduat_tgk_store_mem_t *mem = (amduat_tgk_store_mem_t *)ctx;
|
||||||
|
|
||||||
|
if (mem == NULL || out_id == NULL) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
*out_id = mem->snapshot_id;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static amduat_tgk_graph_error_t amduat_tgk_store_mem_resolve_edge(
|
static amduat_tgk_graph_error_t amduat_tgk_store_mem_resolve_edge(
|
||||||
void *ctx,
|
void *ctx,
|
||||||
amduat_reference_t ref,
|
amduat_reference_t ref,
|
||||||
|
|
@ -829,6 +841,7 @@ bool amduat_tgk_store_mem_init(amduat_tgk_store_mem_t *mem,
|
||||||
if (mem == NULL) {
|
if (mem == NULL) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
mem->snapshot_id = 0;
|
||||||
mem->config = config;
|
mem->config = config;
|
||||||
mem->artifacts = artifacts;
|
mem->artifacts = artifacts;
|
||||||
mem->artifacts_len = artifacts_len;
|
mem->artifacts_len = artifacts_len;
|
||||||
|
|
@ -926,6 +939,7 @@ void amduat_tgk_store_mem_free(amduat_tgk_store_mem_t *mem) {
|
||||||
mem->edges_len = 0;
|
mem->edges_len = 0;
|
||||||
mem->artifacts = NULL;
|
mem->artifacts = NULL;
|
||||||
mem->artifacts_len = 0;
|
mem->artifacts_len = 0;
|
||||||
|
mem->snapshot_id = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
amduat_tgk_store_ops_t amduat_tgk_store_mem_ops(void) {
|
amduat_tgk_store_ops_t amduat_tgk_store_mem_ops(void) {
|
||||||
|
|
@ -933,6 +947,7 @@ amduat_tgk_store_ops_t amduat_tgk_store_mem_ops(void) {
|
||||||
|
|
||||||
memset(&ops, 0, sizeof(ops));
|
memset(&ops, 0, sizeof(ops));
|
||||||
ops.get_config = amduat_tgk_store_mem_get_config;
|
ops.get_config = amduat_tgk_store_mem_get_config;
|
||||||
|
ops.snapshot_id = amduat_tgk_store_mem_snapshot_id;
|
||||||
ops.resolve_edge = amduat_tgk_store_mem_resolve_edge;
|
ops.resolve_edge = amduat_tgk_store_mem_resolve_edge;
|
||||||
ops.edges_from = amduat_tgk_store_mem_edges_from;
|
ops.edges_from = amduat_tgk_store_mem_edges_from;
|
||||||
ops.edges_to = amduat_tgk_store_mem_edges_to;
|
ops.edges_to = amduat_tgk_store_mem_edges_to;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue