23 namespace runtime_store_detail {
24 inline constexpr std::array<std::byte, 8>
magic{
25 std::byte{
'E'}, std::byte{
'V'}, std::byte{
'R'}, std::byte{
'T'},
26 std::byte{
'R'}, std::byte{
'T'}, std::byte{0}, std::byte{1}};
29 std::span<std::byte const> semantic) {
30 std::vector<std::byte> out(
magic.begin(),
magic.end());
32 for (
auto const & run : source.
runs()) {
39 if (encoded.size() <
magic.size() || !std::equal(
magic.begin(),
magic.end(), encoded.begin()))
40 throw std::invalid_argument(
"unsupported Everett runtime checkpoint");
42 auto count = input.
number();
43 if (count > 65 || count > input.data.size() / 16)
44 throw std::invalid_argument(
"invalid Everett runtime interval count");
46 result.
intervals.reserve(
static_cast<std::size_t
>(count));
47 for (std::uint64_t i = 0; i != count; ++i) {
48 auto first = input.number(), last = input.number();
49 result.
intervals.push_back({first, last});
51 auto size = input.number();
52 if (size != input.data.size())
throw std::invalid_argument(
"invalid Everett runtime semantic extent");
53 result.
semantic.assign(input.data.begin(), input.data.end());
68 template <
class Pair,
class Native>
static std::vector<std::byte>
encode(
snapshot_type const & source,
71 std::span<std::byte const> data,
blob_identity const & head, Resolver & resolver) {
73 return {snapshot_type::restore(resolver.pair(head), value.intervals), std::move(value.semantic)};
Executes charged encoded COLA carries behind immutable queryable snapshots.
void number(bytes &out, std::uint64_t value)
Definition sqlite_catalog.h:109
void binary(bytes &out, std::span< std::byte const > value)
Definition sqlite_catalog.h:127
std::vector< std::byte > checkpoint(cola_runtime_snapshot< P > const &source, std::span< std::byte const > semantic)
Definition runtime_checkpoint.h:28
constexpr std::array< std::byte, 8 > magic
Definition runtime_checkpoint.h:24
Definition active_engine.h:18
Stores retained roots, timeline generations and exact file graphs in optional SQLite metadata.
Definition cola_runtime.h:519
Definition sqlite_catalog.h:152
std::uint64_t number()
Definition sqlite_catalog.h:155
pair_type head() const noexcept
Definition cola_query.h:63
Definition cola_runtime.h:140
std::span< run_type const > runs() const &noexcept
Definition cola_runtime.h:151
query_type const & query_root() const &noexcept
Definition cola_runtime.h:153
Definition runtime_checkpoint.h:58
Snapshot snapshot
Definition runtime_checkpoint.h:59
std::vector< std::byte > semantic
Definition runtime_checkpoint.h:60
Definition runtime_checkpoint.h:18
std::vector< cola_runtime_interval > intervals
Definition runtime_checkpoint.h:19
std::vector< std::byte > semantic
Definition runtime_checkpoint.h:20
static std::vector< std::byte > encode(snapshot_type const &source, std::span< std::byte const > semantic, Pair, Native)
Definition runtime_checkpoint.h:68
static decoded_runtime_checkpoint< snapshot_type > decode(std::span< std::byte const > data, blob_identity const &head, Resolver &resolver)
Definition runtime_checkpoint.h:70
static void collect(snapshot_type const &source, Pair pair, Native)
Definition runtime_checkpoint.h:65
Definition runtime_checkpoint.h:62