73 lines
1.9 KiB
C
73 lines
1.9 KiB
C
#ifndef AMDUAT_FED_REPLAY_H
|
|
#define AMDUAT_FED_REPLAY_H
|
|
|
|
#include "amduat/asl/core.h"
|
|
|
|
#include <stdbool.h>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef enum {
|
|
AMDUAT_FED_REC_ARTIFACT = 0,
|
|
AMDUAT_FED_REC_PER = 1,
|
|
AMDUAT_FED_REC_TGK_EDGE = 2,
|
|
AMDUAT_FED_REC_TOMBSTONE = 3
|
|
} amduat_fed_record_type_t;
|
|
|
|
typedef struct {
|
|
uint32_t domain_id;
|
|
uint8_t visibility;
|
|
uint8_t has_source;
|
|
uint16_t reserved0;
|
|
uint32_t source_domain;
|
|
} amduat_fed_record_meta_t;
|
|
|
|
typedef struct {
|
|
amduat_fed_record_type_t type;
|
|
amduat_reference_t ref; /* PER/TGK identities are ASL references. */
|
|
} amduat_fed_record_id_t;
|
|
|
|
typedef struct {
|
|
amduat_fed_record_meta_t meta;
|
|
amduat_fed_record_id_t id;
|
|
uint64_t logseq;
|
|
uint64_t snapshot_id;
|
|
uint64_t log_prefix;
|
|
} amduat_fed_record_t;
|
|
|
|
typedef struct {
|
|
amduat_fed_record_t *records;
|
|
size_t len;
|
|
} amduat_fed_replay_view_t;
|
|
|
|
/* Caller frees record ids with amduat_fed_replay_view_free. */
|
|
bool amduat_fed_record_validate(const amduat_fed_record_t *record);
|
|
|
|
bool amduat_fed_replay_build(const amduat_fed_record_t *records,
|
|
size_t count,
|
|
uint32_t domain_id,
|
|
uint64_t snapshot_id,
|
|
uint64_t log_prefix,
|
|
amduat_fed_replay_view_t *out_view);
|
|
|
|
/* Backwards-compatible alias for amduat_fed_replay_build. */
|
|
/* Deprecated: use amduat_fed_replay_build. */
|
|
bool amduat_fed_replay_domain(const amduat_fed_record_t *records,
|
|
size_t count,
|
|
uint32_t domain_id,
|
|
uint64_t snapshot_id,
|
|
uint64_t log_prefix,
|
|
amduat_fed_replay_view_t *out_view);
|
|
|
|
void amduat_fed_replay_view_free(amduat_fed_replay_view_t *view);
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
#endif /* AMDUAT_FED_REPLAY_H */
|