载入中...
搜索中...
未找到
EditorTransactionConsumer.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
8
9#include <cstddef>
10#include <memory>
11#include <optional>
12#include <span>
13#include <string>
14#include <vector>
15
16namespace eve::editor {
17
28 std::optional<eve::editor::TransactionReceipt> authorityReceipt;
29 std::size_t commandCount = 0;
30 std::size_t operationCount = 0;
31};
32
42 std::size_t commandCount = 0;
43 std::size_t operationCount = 0;
44 std::optional<AuthorityPlan> authorityPlan;
45};
46
58
70public:
72 explicit EditorTransactionConsumer(IEditAuthority* authority = nullptr);
75
78
80 [[nodiscard]] eve::Result<void> setAuthority(IEditAuthority* authority);
82 [[nodiscard]] eve::Result<TransactionId> begin(TransactionSpec specification);
84 [[nodiscard]] eve::Result<TransactionId> beginLegacy(std::string label);
85
87 [[nodiscard]] eve::Result<void> append(std::unique_ptr<IEditCommand> command);
93 [[nodiscard]] eve::Result<void> appendPreview(std::unique_ptr<IEditCommand> command);
95 [[nodiscard]] eve::Result<void> append(DomainOperation operation);
96
98 [[nodiscard]] eve::Result<EditorDryRunReport> dryRun() const;
100 [[nodiscard]] eve::Result<EditorTransactionRecord> commit();
108 [[nodiscard]] eve::Result<EditorTransactionRecord> commit(
109 std::span<transaction::ITransactionParticipant*> additional);
120 [[nodiscard]] eve::Result<EditorTransactionRecord> retry(
121 std::span<transaction::ITransactionParticipant*> additional = {});
127 [[nodiscard]] eve::Result<void> discard();
129 [[nodiscard]] eve::Result<void> rollback();
131 [[nodiscard]] eve::Result<EditorTransactionRecord> undo();
133 [[nodiscard]] eve::Result<EditorTransactionRecord> redo();
134
136 [[nodiscard]] bool active() const noexcept;
138 [[nodiscard]] bool canUndo() const noexcept;
140 [[nodiscard]] bool canRedo() const noexcept;
142 [[nodiscard]] std::size_t undoCount() const noexcept;
144 [[nodiscard]] std::size_t redoCount() const noexcept;
146 [[nodiscard]] EditorCommitState state() const noexcept;
148 [[nodiscard]] const std::vector<eve::Diagnostic>& diagnostics() const noexcept;
150 void clear();
151
152private:
153 [[nodiscard]] eve::Result<EditorTransactionRecord> commitAttempt(
154 std::span<transaction::ITransactionParticipant*> additional, bool retryAttempt);
155
156 struct Impl;
157 std::unique_ptr<Impl> impl_;
158};
159
160} // namespace eve::editor
ActionParameterOperation operation
bool & active
std::string label
#define EVENGINE_API_ORCHESTRATION
Definition Export.h:111
float begin
A structured explanation of a failed, degraded, or noteworthy result.
Definition Diagnostic.h:94
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Final validation and commit boundary for editor mutations.
Editor consumer of the common transaction participant/coordinator protocol.
EditorTransactionConsumer & operator=(const EditorTransactionConsumer &)=delete
~EditorTransactionConsumer()
Editor transaction consumer.
EditorTransactionConsumer(const EditorTransactionConsumer &)=delete
EditorCommitState
Lifecycle state of the editor consumer's active commit attempt.
@ Pending
A transaction is open and has not yet had a commit attempt fail.
@ FailedRetryable
The last attempt failed and retained work may be retried safely.
@ Discarded
The active transaction was explicitly rolled back or discarded.
@ Committed
The active transaction was committed and moved to editor history.
Build metadata (engine git commit, build time, third-party version).
Definition Build.cpp:16
DomainOperation public API.
TransactionSpec public API.
Side-effect-free information returned by an editor preflight.
std::optional< AuthorityPlan > authorityPlan
Structured result of one editor transaction or compensation.
transaction::TransactionReceipt coordinator
std::optional< eve::editor::TransactionReceipt > authorityReceipt
Observable summary returned after an atomic participant commit.
Definition Transaction.h:97