载入中...
搜索中...
未找到
EditingAuthority.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
7
8#include <memory>
9#include <span>
10#include <unordered_map>
11#include <vector>
12
13namespace eve::editing {
14
17public:
19 virtual ~IEditAuthority() = default;
20
23 std::span<const DomainOperation> operations) = 0;
28};
29
37public:
40
42 Result<AuthorityPlan> preflight(const TransactionSpec& transaction,
43 std::span<const DomainOperation> operations) override;
45 Result<TransactionReceipt> commit(const AuthorityPlan& plan) override;
47 Result<TransactionReceipt> compensate(const TransactionReceipt& receipt) override;
48
49private:
50 struct CommittedEntry {
51 TransactionReceipt receipt;
52 std::vector<DomainOperation> operations;
53 };
54
55 static DomainOperation inverseOf(const DomainOperation& operation);
56 Result<void> rollbackApplied(std::span<const DomainOperation> operations, std::size_t count);
57
58 IDomainOperationTarget* target_ = nullptr;
59 std::unordered_map<TransactionId, CommittedEntry, StrongIdHash<TransactionId>> committed_;
60 std::vector<TransactionId> commitOrder_;
61 std::uint64_t receiptSequence_ = 0;
62};
63
66public:
68 Result<AuthorityPlan> preflight(const TransactionSpec& transaction,
69 std::span<const DomainOperation> operations) override;
71 Result<TransactionReceipt> commit(const AuthorityPlan& plan) override;
73 Result<TransactionReceipt> compensate(const TransactionReceipt& receipt) override;
74};
75
76} // namespace eve::editing
LogicalId target
ActionParameterOperation operation
#define EVENGINE_API_PLATFORM
Definition Export.h:107
std::uint32_t count
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Editable-target capability that applies owning domain operations.
Final validation and commit boundary for editor mutations.
virtual Result< TransactionReceipt > compensate(const TransactionReceipt &receipt)=0
Apply inverse operations as a new compensating action.
virtual Result< AuthorityPlan > preflight(const TransactionSpec &transaction, std::span< const DomainOperation > operations)=0
Validate a transaction without mutating its target.
virtual ~IEditAuthority()=default
Releases IEditAuthority resources.
virtual Result< TransactionReceipt > commit(const AuthorityPlan &plan)=0
Atomically apply an authority-approved plan when possible.
In-process authority for a single editable runtime or document target.
LocalWorldAuthority(IDomainOperationTarget *target)
Bind a non-owning operation target.
Authority that permits discovery and dry-run but rejects commits.
AuthorityPlan public API.
TransactionReceipt public API.
TransactionSpec public API.