amduat/include/amduat/asl/index_snapshot.h
2026-01-17 16:43:47 +01:00

49 lines
1.1 KiB
C

#ifndef AMDUAT_ASL_INDEX_SNAPSHOT_H
#define AMDUAT_ASL_INDEX_SNAPSHOT_H
#include "amduat/asl/index_replay.h"
#include "amduat/asl/store.h"
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
enum {
AMDUAT_ASL_SNAPSHOT_MANIFEST_VERSION = 1,
AMDUAT_ASL_SNAPSHOT_MANIFEST_HEADER_SIZE = 80,
AMDUAT_ASL_SNAPSHOT_MANIFEST_MAGIC_LEN = 8
};
typedef struct {
amduat_asl_snapshot_id_t snapshot_id;
amduat_asl_log_position_t anchor_logseq;
amduat_asl_store_config_t config;
amduat_asl_segment_seal_t *segments;
size_t segments_len;
amduat_asl_tombstone_entry_t *tombstones;
size_t tombstones_len;
} amduat_asl_snapshot_manifest_t;
bool amduat_asl_snapshot_manifest_write(
const char *path,
const amduat_asl_snapshot_manifest_t *manifest,
uint8_t out_hash[32]);
bool amduat_asl_snapshot_manifest_read(
const char *path,
amduat_asl_snapshot_manifest_t *out_manifest,
uint8_t out_hash[32]);
void amduat_asl_snapshot_manifest_free(
amduat_asl_snapshot_manifest_t *manifest);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* AMDUAT_ASL_INDEX_SNAPSHOT_H */