载入中...
搜索中...
未找到
DialoguePayment.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
16#include "common/StateAccess.h"
17#include "common/Value.h"
19
20#include <cstdint>
21#include <memory>
22#include <optional>
23#include <span>
24#include <string>
25#include <vector>
26
27namespace eve::dialogue {
28
38 std::optional<std::int64_t> money;
40 std::optional<std::int64_t> reputation;
41
43 [[nodiscard]] bool empty() const noexcept { return !money && !reputation; }
45 [[nodiscard]] eve::Result<void> validate() const;
47 [[nodiscard]] static eve::Result<PaymentSpec> fromValue(const eve::Value& value);
49 [[nodiscard]] eve::Value toValue() const;
50};
51
71
82public:
88 DialogueStateMutationParticipant(eve::IStateMutation& provider, std::span<const eve::StateMutation> mutations);
89
96
98 [[nodiscard]] std::string_view name() const noexcept override { return "dialogue.state-mutation"; }
111
112private:
113 enum class Phase : std::uint8_t { Idle, Prepared, Committed, RolledBack };
114
115 eve::IStateMutation& provider_;
116 std::vector<eve::StateMutation> mutations_;
117 Phase phase_ = Phase::Idle;
118};
119
131public:
134
136 void setBindings(DialogueAccountBindings bindings);
138 [[nodiscard]] const DialogueAccountBindings& bindings() const noexcept { return bindings_; }
139
149 std::string transactionId, const PaymentSpec& payment,
150 std::span<eve::transaction::ITransactionParticipant*> effects) const;
151
160 [[nodiscard]] eve::Result<eve::transaction::TransactionReceipt> executeStateMutation(
161 std::string transactionId, const PaymentSpec& payment, eve::IStateMutation& provider,
162 std::span<const eve::StateMutation> mutations) const;
163
164private:
165 DialogueAccountBindings bindings_;
166};
167
168} // namespace eve::dialogue
double value
#define EVENGINE_API_ORCHESTRATION
Definition Export.h:111
std::vector< std::shared_ptr< DeviceBytes > > bindings
Definition OnnxGpgpu.cpp:38
Strongly typed, transaction-friendly resource cost protocol.
Consumer-owned query and mutation contracts for authoritative world state.
Owning, renderer-independent dynamic values.
const VegetationPresetContext & context
Move-only operation result carrying either a value or Status.
Definition Result.h:155
The canonical owning dynamic value used by data-facing protocols.
Definition Value.h:31
Composes Dialogue accounts with StatePatch or Action participants.
const DialogueAccountBindings & bindings() const noexcept
Return the current borrowed bindings for diagnostics.
Transaction participant that delegates an atomic state mutation.
std::string_view name() const noexcept override
Stable diagnostic name.
DialogueStateMutationParticipant(const DialogueStateMutationParticipant &)=delete
DialogueStateMutationParticipant & operator=(const DialogueStateMutationParticipant &)=delete
DialogueStateMutationParticipant & operator=(DialogueStateMutationParticipant &&)=delete
~DialogueStateMutationParticipant() override=default
Releases DialogueStateMutationParticipant resources.
DialogueStateMutationParticipant(DialogueStateMutationParticipant &&)=delete
eve::Result< void > compensate(const eve::transaction::TransactionContext &context) override
Undo an already committed external effect by compensation.
eve::Result< void > commit(const eve::transaction::TransactionContext &context) override
Publish this participant's staged changes.
eve::Result< void > rollback(const eve::transaction::TransactionContext &context) override
Discard a prepared but not committed stage.
eve::Result< void > prepare(const eve::transaction::TransactionContext &context) override
Validate and stage local changes for the transaction.
Provider-neutral resource account contract.
All-or-nothing mutation boundary owned by the consumer.
Synchronous participant contract for one coordinator transaction.
Immutable context shared by every participant of one transaction.
Definition Transaction.h:30
Borrowed account bindings used by one DialogueFlow integration.
eve::resource::IResourceAccount * money
Borrowed authoritative account for money.
eve::resource::IResourceAccount * reputation
Borrowed authoritative account for reputation.
std::string reputationResource
ResourceId used inside the reputation account.
std::string moneyResource
ResourceId used inside the money account.
Canonical money/reputation cost attached to a dialogue choice or command.
bool empty() const noexcept
Whether this specification contains no charge.
std::optional< std::int64_t > money
Optional money amount, in the configured money resource.
std::optional< std::int64_t > reputation
Optional reputation amount, in the configured reputation resource.