127 std::span<const JournalEntry>
entries() const noexcept {
132 return retained_bytes_;
136 return command_count_;
140 return base_revision_;
144 struct WriterWatermark {
146 std::uint64_t transaction = 0;
147 std::uint64_t command = 0;
151 std::optional<Project> prepare_append(
const Project& before);
152 void append_prepared(
JournalEntry entry, std::optional<Project> initial_snapshot)
noexcept;
156 std::vector<JournalEntry> entries_;
157 std::size_t retained_bytes_ = 0;
158 std::size_t command_count_ = 0;
160 std::optional<Project> base_snapshot_;
161 std::vector<WriterWatermark> base_writers_;
Wrap a value as a failure result.
Definition result.hpp:58
Result<T, E> — either holds a T or an E, never both.
Definition result.hpp:76
std::size_t command_count() const noexcept
Returns the total number of command envelopes in retained entries.
Definition journal.hpp:135
std::size_t retained_bytes() const noexcept
Returns the saturated retained-size accounting for entries.
Definition journal.hpp:131
std::span< const JournalEntry > entries() const noexcept
Returns the retained suffix in revision order.
Definition journal.hpp:127
DocumentRevision base_revision() const noexcept
Returns the revision of the checkpoint preceding entries().
Definition journal.hpp:139
friend class detail::JournalAccess
Definition journal.hpp:149
runtime::Result< Project, TransactionError > replay(const Project &checkpoint, DocumentRevision checkpoint_revision) const
Deterministically applies all entries after the supplied checkpoint.
CommandJournal(JournalLimits limits)
Creates an empty revision-zero journal with fixed quotas.
Definition journal.hpp:115
Owned canonical collection of incremental invalidations.
Definition transaction.hpp:74
JournalSink & operator=(const JournalSink &)=delete
JournalSink(const JournalSink &)=delete
virtual runtime::Result< bool, JournalSinkError > append_batch(const JournalEntry &entry) noexcept=0
Makes a complete transaction entry durable as one batch.
virtual ~JournalSink()=default
virtual runtime::Result< bool, JournalSinkError > checkpoint(const Project &snapshot, DocumentRevision durable_revision) noexcept=0
Installs a checkpoint before entries through its revision are discarded.
virtual runtime::Result< bool, JournalSinkError > validate_restore(const Project &, DocumentRevision) noexcept
Validates attachment to an already-durable snapshot and revision.
Definition journal.hpp:96
Immutable root of a Timeline document and its monotonic identity domain.
Definition model.hpp:1079
std::size_t retained_size(const Command &command) noexcept
Returns the retained heap-byte estimate used for command/journal limits.
JournalEntryKind
Distinguishes user submissions from generated undo/redo transactions.
Definition journal.hpp:31
JournalSinkError
Failure category returned by a durable JournalSink.
Definition journal.hpp:46
@ History
Definition journal.hpp:31
@ Ordinary
Definition journal.hpp:31
@ DurabilityUncertain
Definition file_journal.hpp:29
@ IoError
Definition file_journal.hpp:20
@ Closed
Definition journal.hpp:47
@ InvalidState
Definition journal.hpp:49
Definition clip_launch.hpp:30
Definition program_compiler.hpp:18
Monotonic document snapshot revision used for optimistic admission.
Definition command.hpp:54
One contiguous revision transition retained by the command journal.
Definition journal.hpp:37
DocumentRevision before
Definition journal.hpp:38
Transaction transaction
Definition journal.hpp:40
DocumentRevision after
Definition journal.hpp:39
DirtySet dirty
Definition journal.hpp:41
JournalEntryKind kind
Definition journal.hpp:42
In-memory command-journal quotas.
Definition journal.hpp:24
std::size_t max_retained_bytes
Definition journal.hpp:27
std::size_t max_transactions
Definition journal.hpp:25
std::size_t max_commands
Definition journal.hpp:26
Atomically admitted ordered command batch.
Definition command.hpp:824
Stable non-zero identity of a document writer.
Definition command.hpp:22