Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
control_operations.hpp
Go to the documentation of this file.
1#pragma once
2
5
6#include <chrono>
7#include <cstddef>
8#include <cstdint>
9#include <filesystem>
10#include <functional>
11#include <memory>
12#include <optional>
13#include <string>
14#include <string_view>
15#include <vector>
16
17namespace pulp::inspect {
18
19inline constexpr std::uint32_t kControlOperationReceiptSchemaVersion = 1;
20inline constexpr std::string_view kControlOperationReceiptSchemaId =
21 "dev.pulp.control/operation-receipt@1";
22inline constexpr std::uint32_t kControlAuthorityBindingVersion = 1;
23
25 std::string value;
26 explicit operator bool() const {
27 return !value.empty();
28 }
29 friend bool operator==(const ControlReceiptId&, const ControlReceiptId&) = default;
30};
31
57
62 std::string request_id;
63 std::string idempotency_key;
65
67 return *this;
68 }
69};
70
72 std::optional<ControlResultCode> result_code;
74 std::string explanation;
75 std::string detail_json = "{}";
77 std::vector<ControlArtifactHandle> artifacts;
78 std::vector<std::string> evidence_ids;
79};
80
93
111
113
127
129 std::filesystem::path directory;
130 std::size_t max_receipts = 4096;
135 std::chrono::milliseconds replay_window = std::chrono::hours{24};
136 std::chrono::milliseconds retention = std::chrono::hours{24 * 7};
137};
138
148 public:
149 using WallClock = std::function<std::chrono::system_clock::time_point()>;
150
153 WallClock clock = [] { return std::chrono::system_clock::now(); });
157
159 bool is_open() const;
160
170 ControlOperationResult result = {});
172 std::string reason);
173
174 std::optional<ControlOperationReceipt> receipt(const ControlReceiptId& receipt_id) const;
175 std::vector<ControlOperationReceipt> receipts() const;
176
177 private:
179 class Impl;
180 std::unique_ptr<Impl> impl_;
181};
182
183} // namespace pulp::inspect
ControlOperationStoreResult request_cancellation(const ControlReceiptId &receipt_id, std::string reason)
ControlOperationStoreResult replay(ControlOperationBinding binding)
Resolves an existing idempotent receipt without admitting new work.
ControlOperationStore(ControlOperationStoreConfig config, WallClock clock=[] { return std::chrono::system_clock::now();})
ControlOperationStore & operator=(const ControlOperationStore &)=delete
ControlOperationStoreResult open()
ControlOperationStoreResult begin(const ControlReceiptId &receipt_id)
Atomically claims an admitted receipt for execution.
ControlOperationStoreResult admit(ControlOperationBinding binding)
ControlOperationStoreResult transition(const ControlReceiptId &receipt_id, ControlReceiptState expected, ControlReceiptState next, ControlOperationResult result={})
std::function< std::chrono::system_clock::time_point()> WallClock
Definition control_operations.hpp:149
std::optional< ControlOperationReceipt > receipt(const ControlReceiptId &receipt_id) const
std::vector< ControlOperationReceipt > receipts() const
ControlOperationStore(const ControlOperationStore &)=delete
@ NotFound
Nothing matched and synthesis was disabled.
Definition font_resolver.hpp:174
Definition agent_context.hpp:7
constexpr std::uint32_t kControlOperationReceiptSchemaVersion
Definition control_operations.hpp:19
constexpr std::uint32_t kControlAuthorityBindingVersion
Definition control_operations.hpp:22
InspectorCapability
Definition capabilities.hpp:10
@ SessionDescribe
Definition capabilities.hpp:20
constexpr std::size_t kControlMaximumEnvelopeBytes
Definition control_protocol.hpp:19
ControlRetryClassification
Definition control_protocol.hpp:396
@ Never
Definition control_protocol.hpp:397
constexpr std::string_view kControlOperationReceiptSchemaId
Definition control_operations.hpp:20
@ Replay
Definition control_identity.hpp:117
ControlOperationStoreStatus
Definition control_operations.hpp:94
@ Opened
Definition control_operations.hpp:95
@ CancellationRequested
Definition control_operations.hpp:100
@ Replay
Definition control_operations.hpp:97
@ StoreUnavailable
Definition control_operations.hpp:107
@ Transitioned
Definition control_operations.hpp:99
@ MalformedStore
Definition control_operations.hpp:108
@ InvalidTransition
Definition control_operations.hpp:104
@ Admitted
Definition control_operations.hpp:96
@ PersistenceError
Definition control_operations.hpp:109
std::string_view control_operation_store_status_id(ControlOperationStoreStatus status)
ControlReceiptState
Definition control_protocol.hpp:365
@ Admitted
Definition control_protocol.hpp:366
@ RequestIdConflict
Definition control_admission.hpp:24
@ ReplayWindowExpired
Definition control_admission.hpp:25
@ IdempotencyConflict
Definition control_admission.hpp:23
@ ResourceExhausted
Definition control_admission.hpp:26
@ Admitted
Definition control_admission.hpp:16
@ InvalidRequest
Definition control_admission.hpp:17
Canonical immutable snapshot of the authority under which an operation was admitted.
Definition control_operations.hpp:35
ControlClientId client_id
Definition control_operations.hpp:38
std::uint64_t expected_state_generation
Definition control_operations.hpp:52
std::string consent_decision_id
Definition control_operations.hpp:48
std::string operation_id
Definition control_operations.hpp:46
std::string producer_artifact_digest
Definition control_operations.hpp:50
InspectorCapability capability
Definition control_operations.hpp:45
std::string instance_id
Definition control_operations.hpp:42
ControlRegistrationId registration_id
Definition control_operations.hpp:39
friend bool operator==(const ControlAuthorityBinding &, const ControlAuthorityBinding &)=default
std::string client_principal
Definition control_operations.hpp:37
std::string publication_id
Definition control_operations.hpp:43
std::int64_t deadline_unix_ms
Definition control_operations.hpp:51
std::string instance_generation
Definition control_operations.hpp:44
std::string session_id
Definition control_operations.hpp:41
std::string manifest_digest
Definition control_operations.hpp:49
std::uint32_t operation_version
Definition control_operations.hpp:47
ControlBrokerId broker_id
Definition control_operations.hpp:36
ControlGrantId grant_id
Definition control_operations.hpp:40
Definition control_identity.hpp:20
Definition control_identity.hpp:28
Definition control_grants.hpp:18
The complete idempotency scope for one admitted operation.
Definition control_operations.hpp:61
std::string request_id
Definition control_operations.hpp:62
std::string canonical_request_hash
Definition control_operations.hpp:64
const ControlAuthorityBinding & authority_binding() const
Definition control_operations.hpp:66
std::string idempotency_key
Definition control_operations.hpp:63
Definition control_operations.hpp:81
ControlReceiptId receipt_id
Definition control_operations.hpp:83
std::int64_t created_at_unix_ms
Definition control_operations.hpp:90
bool cancellation_requested
Definition control_operations.hpp:85
std::string binding_hash
Definition control_operations.hpp:88
std::uint32_t schema_version
Definition control_operations.hpp:82
std::string cancellation_reason
Definition control_operations.hpp:86
std::int64_t updated_at_unix_ms
Definition control_operations.hpp:91
ControlOperationResult result
Definition control_operations.hpp:89
ControlReceiptState state
Definition control_operations.hpp:84
ControlOperationBinding binding
Definition control_operations.hpp:87
Definition control_operations.hpp:71
ControlRetryClassification retry
Definition control_operations.hpp:73
std::string explanation
Definition control_operations.hpp:74
std::vector< std::string > evidence_ids
Definition control_operations.hpp:78
std::string detail_json
Definition control_operations.hpp:75
std::vector< ControlArtifactHandle > artifacts
Definition control_operations.hpp:77
std::string cancellation_reason
Definition control_operations.hpp:76
std::optional< ControlResultCode > result_code
Definition control_operations.hpp:72
Definition control_operations.hpp:128
std::size_t max_active_receipts_per_client
Definition control_operations.hpp:132
std::filesystem::path directory
Definition control_operations.hpp:129
std::chrono::milliseconds replay_window
Definition control_operations.hpp:135
std::size_t max_receipts
Definition control_operations.hpp:130
std::chrono::milliseconds retention
Definition control_operations.hpp:136
std::size_t max_active_receipts_per_registration_instance
Quota for one exact registration generation and instance identity.
Definition control_operations.hpp:134
std::size_t max_receipt_bytes
Definition control_operations.hpp:131
Definition control_operations.hpp:114
std::optional< ControlOperationReceipt > receipt
Definition control_operations.hpp:116
bool succeeded() const
Definition control_operations.hpp:119
std::string error
Definition control_operations.hpp:117
ControlOperationStoreStatus status
Definition control_operations.hpp:115
Definition control_operations.hpp:24
std::string value
Definition control_operations.hpp:25
friend bool operator==(const ControlReceiptId &, const ControlReceiptId &)=default
Definition control_identity.hpp:36