#ifndef TINY_CONVMEM_STORAGE_STORE_H #define TINY_CONVMEM_STORAGE_STORE_H #include #include #include #include "domain/message.h" typedef enum tiny_store_status { TINY_STORE_OK = 0, TINY_STORE_NOT_FOUND, TINY_STORE_BUSY, TINY_STORE_IO_ERROR, TINY_STORE_CORRUPT, TINY_STORE_NO_MEMORY } tiny_store_status_t; typedef struct tiny_store_entry { tiny_message_t message; bool deleted; uint64_t sequence; } tiny_store_entry_t; typedef struct tiny_store tiny_store_t; typedef struct tiny_rebuild_report { uint64_t messages_indexed; uint64_t records_removed; uint64_t bytes_before; uint64_t bytes_after; } tiny_rebuild_report_t; typedef struct tiny_store_health { uint64_t log_size; uint64_t snapshot_size; uint64_t active_messages; uint64_t deleted_messages; uint64_t last_sequence; bool recovered_tail; bool snapshot_valid; char last_error[160]; } tiny_store_health_t; tiny_store_status_t tiny_store_open(tiny_store_t **store, const char *directory); void tiny_store_close(tiny_store_t *store); const char *tiny_store_status_name(tiny_store_status_t status); tiny_store_status_t tiny_store_write(tiny_store_t *store, const tiny_message_t *input, tiny_message_t *written); tiny_store_status_t tiny_store_delete(tiny_store_t *store, const char *message_id, const char *session_id); tiny_store_status_t tiny_store_rebuild(tiny_store_t *store, tiny_rebuild_report_t *report); void tiny_store_health(const tiny_store_t *store, tiny_store_health_t *health); size_t tiny_store_entry_count(const tiny_store_t *store); const tiny_store_entry_t *tiny_store_entry(const tiny_store_t *store, size_t index); #endif