载入中...
搜索中...
未找到
RTSProductionAction.cpp
浏览该文件的文档.
15 OrderParticipant(orders::CommandQueue& queue, std::string kind, int priority, double timeout, std::string product,
28 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::Conflict, "RTS order participant is already in flight", "orders"));
33 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::Failed, std::string("failed to stage RTS order: ") + exception.what(), "orders"));
39 if (!order) return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvariantViolation, "staged RTS order disappeared", "orders"));
48 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::Conflict, "RTS order participant has no prepared stage", "orders"));
52 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::Failed, std::string("failed to publish RTS order: ") + exception.what(), "orders"));
60 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::Conflict, "committed RTS order requires compensation", "orders"));
68 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::Conflict, "RTS order has no committed state to compensate", "orders"));
72 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::Failed, std::string("failed to compensate RTS order: ") + exception.what(), "orders"));
99 ProductionParticipant(production::WorkQueue& queue, std::string owner, std::string kind, std::string product,
113 [[nodiscard]] std::string_view name() const noexcept override { return "rts-production-queue"; }
117 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::Conflict, "RTS production participant is already in flight", "production"));
146 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::Conflict, "RTS production participant has no prepared stage", "production"));
150 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::StaleHandle, "RTS production queue changed while transaction was staged", "production"));
159 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::Conflict, "committed production task requires compensation", "production"));
167 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::Conflict, "production queue has no committed task to compensate", "production"));
171 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::StaleHandle, "RTS production queue changed before compensation", "production"));
217 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::Conflict, "RTS Action participant is already in flight", "action"));
227 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::Conflict, "RTS Action participant has no prepared execution", "action"));
237 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::Conflict, "committed RTS Action requires compensation", "action"));
238 if (!execution_) return eve::Result<void>::success(eve::Status::success(eve::StatusCode::NoOp));
241 current->phase() != action::ActionPhase::Cancelled && current->phase() != action::ActionPhase::Completed) {
274eve::Result<RTSBuildReceipt> RTSProductionActionAdapter::build(Building& building, action::ActionRuntime& action,
290 eve::DiagnosticCode::InvariantViolation, "RTS building build components are not initialized", "building"));
319 eve::DiagnosticCode::InvalidArgument, "RTS build requires owner, kind and product", "request"));
333 eve::DiagnosticCode::InvalidArgument, "RTS production reserve must contain a positive resource amount",
357 eve::DiagnosticCode::InvalidArgument, "RTS build Action must be effect-free; effect is a transaction port",
360 if (!request.actionRequest.actionId.isValid()) request.actionRequest.actionId = request.actionDefinition.id;
369 OrderParticipant order(*request.orders, request.orderKind, request.orderPriority, request.orderTimeoutSeconds,
371 ProductionParticipant production(*request.production, request.owner, request.productionKind, request.product,
375 ActionParticipant action(*request.action, std::move(request.actionDefinition), std::move(request.actionRequest),
385 context, *request.account, request.cost, std::span<transaction::ITransactionParticipant*>(participants));
388 RTSBuildReceipt result{std::move(receipt), order.orderId(), production.taskId(), action.executionId()};
389 return eve::Result<RTSBuildReceipt>::success(std::move(result), eve::Status::success(eve::StatusCode::Applied));
442 eve::DiagnosticCode::Failed, std::string("failed to stage RTS cancellation orders: ") + exception.what(),
461 eve::DiagnosticCode::Failed, std::string("failed to publish RTS cancellation orders: ") + exception.what(),
Atomic RTS build/production composition over the shared protocols.
RTS domain roots and composition-only components.
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static std::optional< LogicalId > fromParts(std::string_view namespaceName, std::string_view name)
Builds a logical ID from separate namespace and name components.
Definition Identity.cpp:48
void ignore(std::string_view reason={}) const noexcept
Explicitly discard this result after documenting the reason.
Definition Result.h:537
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
static Status success(StatusCode code=StatusCode::Ok)
Construct a successful status with an explicit non-error outcome.
Definition Status.h:81
Generic priority order queue with no gameplay or entity semantics.
Definition CommandQueue.h:89
eve::Result< void > restore(std::string_view json)
Restores a command queue transactionally from a JSON snapshot.
Definition CommandQueue.cpp:476
eve::Result< void > cancel(const std::string &id, const std::string &reason="cancelled")
Cancels an active or queued command.
Definition CommandQueue.cpp:339
Generic multi-owner, multi-slot continuous-progress work queue.
Definition Production.h:200
eve::Result< std::string > snapshot() const
Serializes the complete queue as deterministic JSON.
Definition ProductionPersistence.cpp:148
eve::Result< void > cancel(std::string_view taskId, std::string_view reason="cancelled")
Cancels a non-terminal task with a structured outcome.
Definition Production.cpp:371
eve::Result< void > restore(std::string_view json)
Transactionally restores a snapshot; failure preserves current state.
Definition ProductionPersistence.cpp:287
static eve::Result< CostSpec > create(std::vector< ResourceCost > items)
Validate and canonicalize resource items.
Definition ResourceAccount.cpp:74
Provider-neutral resource account contract.
Definition ResourceAccount.h:316
RTS building domain root with placement and production composition.
Definition RTSTypes.h:840
static eve::Result< RTSBuildReceipt > build(Building &building, action::ActionRuntime &action, resource::IResourceAccount &account, resource::CostSpec cost, std::string product, Duration duration, std::string productionKind="unit", int priority=0, std::string transactionId={}, std::vector< RTSProductionResourceReserve > resourceReserves={}, eve::definition::DefinitionHandle definition={})
Run the canonical build transaction against a live RTS Building.
Definition RTSProductionAction.cpp:274
static eve::Result< RTSCancelProductionReceipt > cancel(Building &building, resource::IResourceAccount &account, std::string productionTaskId, std::string orderId, resource::CostSpec refund, std::string reason="production cancelled")
Cancel a building production task and refund its complete canonical cost atomically.
Definition RTSProductionAction.cpp:392
static eve::Result< TransactionReceipt > execute(const TransactionContext &context, std::span< ITransactionParticipant * > participants)
Execute already prepared domain participants as one transaction.
Definition AtomicResourcePayment.cpp:13
Immutable context shared by every participant of one transaction.
Definition Transaction.h:30
@ Completed
@ Cancelled
@ Failed
eve::detail::StrongUint64< ActionExecutionIdTag > ActionExecutionId
Definition Action.h:157
Definition RTS.cpp:24
@ InvalidArgument
@ PreconditionViolation
@ InvariantViolation
@ Failed
@ StaleHandle
@ Conflict
@ NoOp
@ Applied
detail::StrongUint64< detail::SimulationTickTag > SimulationTick
Deterministic simulation time step; it is not wall-clock time.
Definition Time.h:31
Definition Container.h:602
A generation-qualified reference to one definition incarnation.
Definition DefinitionRuntime.h:69
Result of an accepted atomic RTS build/production command.
Definition RTSProductionAction.h:78
Caller-owned inputs for one atomic RTS build or production command.
Definition RTSProductionAction.h:40
production::WorkQueue * production
Definition RTSProductionAction.h:41
Result of a production cancellation whose queues and refund all committed.
Definition RTSProductionAction.h:97
Caller-owned inputs for atomically cancelling one paid production task.
Definition RTSProductionAction.h:86
production::WorkQueue * production
Definition RTSProductionAction.h:87