Deterministically ordered, composable settlement pipeline. 更多...
#include <Settlement.h>
Public 类型 | |
| using | StageFunction = std::function< eve::Result< void >(SettlementContext &)> |
| using | RequestExecutor = std::function< eve::Result< SettlementResult >(const SettlementRequest &)> |
| Executes one owning chain request using its request-specific policy and rule snapshot. | |
Public 成员函数 | |
| SettlementPipeline () | |
| Construct a pipeline with the canonical stages installed. | |
| eve::Result< void > | addStage (StageKind kind, std::string name, int priority, StageFunction function) |
| Add one named custom stage; duplicate names are rejected. | |
| eve::Result< SettlementResult > | settle (const SettlementRequest &request, ISettlementPolicy &policy, game_event::GameEventLog *events=nullptr) const |
| Execute one settlement transaction against a domain policy. | |
| eve::Result< std::vector< SettlementResult > > | settleAtomic (std::span< const SettlementRequest > requests, std::span< ISettlementPolicy * > policies, game_event::GameEventLog *events=nullptr) const |
| Prepare and commit several independent resource channels atomically. | |
| eve::Result< std::vector< SettlementBatchItemResult > > | settleIndependent (std::span< const SettlementRequest > requests, std::span< ISettlementPolicy * > policies, game_event::GameEventLog *events=nullptr) const |
| Settle several channels independently in caller-provided deterministic order. | |
| eve::Result< std::vector< SettlementBatchItemResult > > | settleChain (const SettlementRequest &root, const RequestExecutor &execute, std::uint32_t maxDepth, std::uint32_t maxSettlements) const |
| Settle a root request and its policy-produced derived requests in stable breadth-first order. | |
详细描述
Deterministically ordered, composable settlement pipeline.
The constructor installs the nine canonical stages. Additional stages can be inserted into any phase with a stable priority and unique name. Clamp, Apply, Event and Trigger each have an unregistrable terminal step; custom stages in those phases always run before their terminal step regardless of priority or name. Canonical non-terminal policy stages always run before custom stages in their phase. Other custom-stage ordering is phase, priority, name, then registration sequence.
在文件 Settlement.h 第 542 行定义.
成员类型定义说明
◆ RequestExecutor
| using eve::settlement::SettlementPipeline::RequestExecutor = std::function<eve::Result<SettlementResult>(const SettlementRequest&)> |
Executes one owning chain request using its request-specific policy and rule snapshot.
在文件 Settlement.h 第 546 行定义.
◆ StageFunction
| using eve::settlement::SettlementPipeline::StageFunction = std::function<eve::Result<void>(SettlementContext&)> |
在文件 Settlement.h 第 544 行定义.
构造及析构函数说明
◆ SettlementPipeline()
| eve::settlement::SettlementPipeline::SettlementPipeline | ( | ) |
Construct a pipeline with the canonical stages installed.
在文件 Settlement.cpp 第 589 行定义.
引用了 eve::Applied, eve::settlement::Apply, eve::settlement::ArmorShield, eve::settlement::Clamp, context, eve::settlement::Decision, eve::settlement::Event, eve::Result< T >::failure(), function, kind, name, eve::NoOp, priority, request, eve::settlement::SourceModifiers, status, eve::Status::success(), eve::Result< T >::success(), eve::settlement::TargetMitigation, eve::settlement::Trigger, eve::settlement::Validate , 以及 eve::settlement::validateSettlementRequest().
成员函数说明
◆ addStage()
| eve::Result< void > eve::settlement::SettlementPipeline::addStage | ( | StageKind | kind, |
| std::string | name, | ||
| int | priority, | ||
| StageFunction | function | ||
| ) |
Add one named custom stage; duplicate names are rejected.
在文件 Settlement.cpp 第 649 行定义.
引用了 eve::AlreadyExists, eve::Diagnostic::error(), eve::Result< T >::failure(), function, eve::InvalidArgument, eve::InvariantViolation, kind, name, priority , 以及 eve::Result< T >::success().
被这些函数引用 eve::settlement::SettlementRuleSet::install() , 以及 eve::rpg::SettlementPipeline::run().
◆ settle()
| eve::Result< SettlementResult > eve::settlement::SettlementPipeline::settle | ( | const SettlementRequest & | request, |
| ISettlementPolicy & | policy, | ||
| game_event::GameEventLog * | events = nullptr |
||
| ) | const |
Execute one settlement transaction against a domain policy.
- 参数
-
request Owned request data that remains valid for this synchronous call. policy Borrowed adapter whose domain state outlives this call. events Optional borrowed event stream; a present stream receives the canonical result event after the policy mutation commits.
- 返回
- A complete result, or a structured failure. Any failure rolls back the prepared mutation and leaves policy state unchanged.
在文件 Settlement.cpp 第 744 行定义.
引用了 eve::Applied, eve::settlement::SettlementResult::applied, context, eve::Diagnostic::error(), eve::settlement::SettlementResult::event, events, eve::Failed, eve::Result< T >::failure(), eve::NoOp, pending, request, eve::settlement::SettlementResult::requested, eve::game_event::GameEvent::sequence, sequence, status, stored, eve::Status::success(), eve::Result< T >::success() , 以及 eve::settlement::SettlementResult::tick.
被这些函数引用 eve::combat::DamageRuntime::apply(), eve::combat::DamageRuntime::heal(), eve::rpg::SettlementPipeline::run(), eve::tactics::TacticsSettlementRuntime::settle() , 以及 settleIndependent().
◆ settleAtomic()
| eve::Result< std::vector< SettlementResult > > eve::settlement::SettlementPipeline::settleAtomic | ( | std::span< const SettlementRequest > | requests, |
| std::span< ISettlementPolicy * > | policies, | ||
| game_event::GameEventLog * | events = nullptr |
||
| ) | const |
Prepare and commit several independent resource channels atomically.
- 参数
-
requests Owning request values in deterministic commit order. policies Borrowed channel policies; count must match requests and pointers must be non-null. events Optional event log restored to its exact snapshot if any append fails.
- 返回
- One result per input channel, or a failure after every prepared/committed mutation is restored.
- 备注
- Channels targeting the same subject and resource must share one policy instance. They are evaluated in input order so each segment observes the state produced by the previous segment. The settlement module never becomes the resource's state owner. @thread Synchronous on every policy and event-log owner thread.
@reentrancy Policies and the event log must not re-enter this pipeline. @cost Linear in request count plus one full pipeline execution per channel and an event-log snapshot when used.
在文件 SettlementBatch.cpp 第 23 行定义.
引用了 eve::Applied, eve::Conflict, events, eve::Failed, index, eve::InvalidArgument, eve::NoOp, pending, previous, resource, eve::game_event::GameEvent::sequence, sequence, status, stored, eve::Status::success() , 以及 target.
被这些函数引用 eve::tactics::TacticsSettlementRuntime::settleAtomic().
◆ settleChain()
| eve::Result< std::vector< SettlementBatchItemResult > > eve::settlement::SettlementPipeline::settleChain | ( | const SettlementRequest & | root, |
| const RequestExecutor & | execute, | ||
| std::uint32_t | maxDepth, | ||
| std::uint32_t | maxSettlements | ||
| ) | const |
Settle a root request and its policy-produced derived requests in stable breadth-first order.
- 参数
-
root Root request; its trigger path must be empty and depth must be zero. execute Synchronous executor that builds the request-specific policy/rule snapshot and settles once. maxDepth Maximum accepted derived depth, excluding the root. maxSettlements Maximum total settlements, including the root.
- 返回
- One indexed owning outcome per attempted request. A failed item stops further derivation.
- 备注
- This is a commit-each strategy: earlier successful settlements remain committed when a later derived request fails. Trigger keys already present in the ancestry path are rejected. @thread Synchronous on all policy and event-log owner threads. @reentrancy The executor must not call settleChain recursively; it may call settle on a pipeline snapshot. @cost Linear in executed settlements plus trigger-path checks and each settlement's normal cost.
在文件 SettlementBatch.cpp 第 169 行定义.
引用了 eve::Applied, eve::Conflict, cursor, eve::Diagnostic::error(), eve::Status::failure(), eve::game_event::CausationRef::fromEventId(), eve::settlement::SettlementBatchItemResult::index, eve::InvalidArgument, eve::game_event::CorrelationId::None, eve::game_event::CausationRef::None, eve::NoOp, pending, request, eve::settlement::SettlementBatchItemResult::request, eve::settlement::SettlementBatchItemResult::result, root, status, eve::settlement::SettlementBatchItemResult::status , 以及 eve::Status::success().
◆ settleIndependent()
| eve::Result< std::vector< SettlementBatchItemResult > > eve::settlement::SettlementPipeline::settleIndependent | ( | std::span< const SettlementRequest > | requests, |
| std::span< ISettlementPolicy * > | policies, | ||
| game_event::GameEventLog * | events = nullptr |
||
| ) | const |
Settle several channels independently in caller-provided deterministic order.
- 参数
-
requests Requests whose indices are preserved in the returned item results. policies Borrowed policies matching requests one-for-one; pointers must be non-null. events Optional shared event stream; each failed item rolls back only its own mutation/event.
- 返回
- An outcome for every item, including structured failure statuses; argument errors fail the outer Result. @thread Synchronous on every policy and event-log owner thread. @reentrancy Policies and the event log must not re-enter this pipeline. @cost Linear in request count plus one full independent settlement per channel.
在文件 SettlementBatch.cpp 第 134 行定义.
引用了 eve::Applied, events, index, eve::settlement::SettlementBatchItemResult::index, eve::InvalidArgument, eve::NoOp, eve::settlement::SettlementBatchItemResult::request, eve::settlement::SettlementBatchItemResult::result, settle(), eve::settlement::SettlementBatchItemResult::status , 以及 eve::Status::success().
该类的文档由以下文件生成:
- src/modules/settlement/Settlement.h
- src/modules/settlement/Settlement.cpp
- src/modules/settlement/SettlementBatch.cpp