载入中...
搜索中...
未找到
eve::settlement::SettlementPipeline类 参考

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

Executes one owning chain request using its request-specific policy and rule snapshot.

在文件 Settlement.h 第 546 行定义.

◆ StageFunction

在文件 Settlement.h 第 544 行定义.

构造及析构函数说明

◆ SettlementPipeline()

成员函数说明

◆ addStage()

eve::Result< void > eve::settlement::SettlementPipeline::addStage ( StageKind  kind,
std::string  name,
int  priority,
StageFunction  function 
)

◆ 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.

参数
requestOwned request data that remains valid for this synchronous call.
policyBorrowed adapter whose domain state outlives this call.
eventsOptional 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.

参数
requestsOwning request values in deterministic commit order.
policiesBorrowed channel policies; count must match requests and pointers must be non-null.
eventsOptional 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.

参数
rootRoot request; its trigger path must be empty and depth must be zero.
executeSynchronous executor that builds the request-specific policy/rule snapshot and settles once.
maxDepthMaximum accepted derived depth, excluding the root.
maxSettlementsMaximum 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.

参数
requestsRequests whose indices are preserved in the returned item results.
policiesBorrowed policies matching requests one-for-one; pointers must be non-null.
eventsOptional 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().


该类的文档由以下文件生成: