#pragma once #include "data/LedgerCache.hpp" #include "data/impl/InputFile.hpp" #include "data/impl/OutputFile.hpp" #include #include #include #include #include #include namespace data::impl { class LedgerCacheFile { public: struct Header { uint32_t version = kVersion; uint32_t latestSeq{}; uint64_t mapSize{}; uint64_t deletedSize{}; }; private: static constexpr uint32_t kVersion = 1; std::string path_; public: template struct DataBase { uint32_t latestSeq{0}; T map; T deleted; }; using DataView = DataBase; using Data = DataBase; LedgerCacheFile(std::string path); std::expected write(DataView dataView); std::expected read(uint32_t minLatestSequence); }; } // namespace data::impl