Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
control_artifacts.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <chrono>
4#include <cstddef>
5#include <cstdint>
6#include <filesystem>
7#include <functional>
8#include <memory>
9#include <optional>
10#include <span>
11#include <string>
12#include <string_view>
13#include <vector>
14
15namespace pulp::inspect {
16
17class ControlBroker;
18
20 std::string broker_id;
21 std::string receipt_id;
22 std::string producer_client_id;
24 std::string session_id;
25 std::string instance_id;
26 std::string publication_id;
29 std::uint32_t producer_operation_version = 0;
30 std::string original_grant_id;
32 std::string manifest_digest;
34};
35
42
43enum class ControlArtifactDeletionState : std::uint8_t {
46};
47
48enum class ControlArtifactRedactionState : std::uint8_t {
51};
52
59
61bool control_evidence_contract_matches(ControlEvidenceKind kind, std::string_view content_type,
63 ControlArtifactRedactionState redaction_state);
64
72
85
96
98
100 std::filesystem::path root;
101 std::size_t maximum_blob_bytes = 16u * 1024u * 1024u;
102 std::size_t maximum_chunk_bytes = 1u * 1024u * 1024u;
105 std::uint64_t maximum_total_bytes = 256u * 1024u * 1024u;
106 std::size_t maximum_artifacts = 4096;
108 std::chrono::milliseconds maximum_lifetime = std::chrono::hours{24};
110};
111
118
120
131
133 std::size_t deleted_artifacts = 0;
134 std::size_t deleted_orphan_blobs = 0;
135 std::size_t deleted_partial_files = 0;
136 std::size_t deletion_audit_failures = 0;
137 std::uint64_t reclaimed_bytes = 0;
138 bool succeeded = false;
139};
140
145
148 std::optional<ControlArtifactMetadata> metadata;
149 std::vector<std::uint8_t> bytes;
150 bool eof = false;
151 std::string explanation;
152};
153
161 public:
162 using WallClock = std::function<std::chrono::system_clock::time_point()>;
163
166 WallClock clock = [] { return std::chrono::system_clock::now(); });
170
171 bool is_ready() const;
172 std::size_t maximum_blob_bytes() const noexcept;
173
174 ControlArtifactStoreResult store(std::span<const std::uint8_t> bytes,
176 ControlArtifactProperties properties);
177
181 std::optional<ControlArtifactMetadata> metadata(std::string_view artifact_id) const;
182
188
189 private:
190 friend class ControlBroker;
192 read_authorized(std::string_view artifact_id, std::uint64_t offset, std::size_t maximum_bytes,
193 const ControlArtifactMetadata& authorized_metadata) const;
194
195 class Impl;
196 std::unique_ptr<Impl> impl_;
197};
198
199} // namespace pulp::inspect
ControlArtifactStore & operator=(const ControlArtifactStore &)=delete
friend class ControlBroker
Definition control_artifacts.hpp:190
std::optional< ControlArtifactMetadata > metadata(std::string_view artifact_id) const
Returns immutable publication metadata without reading blob bytes.
std::size_t maximum_blob_bytes() const noexcept
ControlArtifactStore(const ControlArtifactStore &)=delete
std::function< std::chrono::system_clock::time_point()> WallClock
Definition control_artifacts.hpp:162
ControlArtifactStore(ControlArtifactStoreConfig config, WallClock clock=[] { return std::chrono::system_clock::now();})
std::vector< ControlArtifactDeletionRecord > deletion_audit() const
ControlArtifactCollectionResult collect()
Applies expiry and crash cleanup and returns bounded deletion evidence.
ControlArtifactStoreResult store(std::span< const std::uint8_t > bytes, ControlArtifactLineage lineage, ControlArtifactProperties properties)
Dormant composition root for the local capability-control broker.
Definition control_broker.hpp:45
@ NotFound
Nothing matched and synthesis was disabled.
Definition font_resolver.hpp:174
Definition agent_context.hpp:7
ControlArtifactStatus
Definition control_artifacts.hpp:86
@ Corrupt
Definition control_artifacts.hpp:92
@ Read
Definition control_artifacts.hpp:88
@ Stored
Definition control_artifacts.hpp:87
@ InvalidRequest
Definition control_artifacts.hpp:89
@ Unauthorized
Definition control_artifacts.hpp:90
@ IoError
Definition control_artifacts.hpp:94
ControlArtifactRedactionState
Definition control_artifacts.hpp:48
@ Original
Definition control_artifacts.hpp:49
@ Redacted
Definition control_artifacts.hpp:50
bool control_evidence_contract_matches(ControlEvidenceKind kind, std::string_view content_type, ControlArtifactSensitivity sensitivity, ControlArtifactRedactionState redaction_state)
std::string_view control_artifact_status_id(ControlArtifactStatus status)
std::string_view control_artifact_deletion_reason_id(ControlArtifactDeletionReason reason)
@ Expired
Definition audit.hpp:68
@ Sensitive
Definition capabilities.hpp:25
std::string_view control_evidence_content_type(ControlEvidenceKind kind)
ControlArtifactDeletionState
Definition control_artifacts.hpp:43
@ Active
Definition control_artifacts.hpp:44
@ Deleted
Definition control_artifacts.hpp:45
ControlArtifactDeletionReason
Definition control_artifacts.hpp:112
@ QuotaCollection
Definition control_artifacts.hpp:114
@ Expired
Definition control_artifacts.hpp:113
@ CrashCleanup
Definition control_artifacts.hpp:116
@ ExplicitDeletion
Definition control_artifacts.hpp:115
@ ResourceExhausted
Definition control_admission.hpp:26
@ InvalidRequest
Definition control_admission.hpp:17
ControlArtifactSensitivity
Definition control_artifacts.hpp:36
@ Public
Definition control_artifacts.hpp:37
@ Sensitive
Definition control_artifacts.hpp:39
@ Internal
Definition control_artifacts.hpp:38
@ Restricted
Definition control_artifacts.hpp:40
ControlEvidenceKind
Definition control_artifacts.hpp:53
@ Screenshot
Definition control_artifacts.hpp:54
@ OfflineRender
Definition control_artifacts.hpp:55
@ StateSnapshot
Definition control_artifacts.hpp:56
@ PerfettoTrace
Definition control_artifacts.hpp:57
STL namespace.
Definition control_artifacts.hpp:132
std::uint64_t reclaimed_bytes
Definition control_artifacts.hpp:137
std::size_t deleted_orphan_blobs
Definition control_artifacts.hpp:134
bool succeeded
Definition control_artifacts.hpp:138
std::size_t deleted_artifacts
Definition control_artifacts.hpp:133
std::size_t deletion_audit_failures
Definition control_artifacts.hpp:136
std::size_t deleted_partial_files
Definition control_artifacts.hpp:135
Persisted deletion evidence intentionally excludes client-provided content, paths,...
Definition control_artifacts.hpp:124
std::string sha256
Definition control_artifacts.hpp:126
std::string artifact_id
Definition control_artifacts.hpp:125
std::uint64_t deleted_at_unix_ms
Definition control_artifacts.hpp:128
std::uint64_t byte_size
Definition control_artifacts.hpp:127
ControlArtifactDeletionReason reason
Definition control_artifacts.hpp:129
Definition control_artifacts.hpp:19
std::string producer_capability_id
Definition control_artifacts.hpp:27
std::string consent_decision_id
Definition control_artifacts.hpp:31
std::string instance_id
Definition control_artifacts.hpp:25
std::string producer_client_id
Definition control_artifacts.hpp:22
std::string session_id
Definition control_artifacts.hpp:24
std::string broker_id
Definition control_artifacts.hpp:20
std::string manifest_digest
Definition control_artifacts.hpp:32
std::string producer_registration_id
Definition control_artifacts.hpp:23
std::string publication_id
Definition control_artifacts.hpp:26
std::string producer_operation_id
Definition control_artifacts.hpp:28
std::uint32_t producer_operation_version
Definition control_artifacts.hpp:29
std::string receipt_id
Definition control_artifacts.hpp:21
std::string producer_artifact_digest
Definition control_artifacts.hpp:33
std::string original_grant_id
Definition control_artifacts.hpp:30
Definition control_artifacts.hpp:73
std::string content_type
Definition control_artifacts.hpp:78
ControlArtifactLineage lineage
Definition control_artifacts.hpp:75
std::string artifact_id
Definition control_artifacts.hpp:74
ControlArtifactRedactionState redaction_state
Definition control_artifacts.hpp:83
std::uint64_t byte_size
Definition control_artifacts.hpp:77
ControlArtifactSensitivity sensitivity
Definition control_artifacts.hpp:81
std::string sha256
Definition control_artifacts.hpp:76
ControlArtifactDeletionState deletion_state
Definition control_artifacts.hpp:82
std::uint64_t created_at_unix_ms
Definition control_artifacts.hpp:79
std::uint64_t expires_at_unix_ms
Definition control_artifacts.hpp:80
Definition control_artifacts.hpp:65
std::uint64_t expires_at_unix_ms
Definition control_artifacts.hpp:68
std::uint64_t created_at_unix_ms
Definition control_artifacts.hpp:67
ControlArtifactRedactionState redaction_state
Definition control_artifacts.hpp:70
ControlArtifactSensitivity sensitivity
Definition control_artifacts.hpp:69
std::string content_type
Definition control_artifacts.hpp:66
Definition control_artifacts.hpp:146
bool eof
Definition control_artifacts.hpp:150
std::vector< std::uint8_t > bytes
Definition control_artifacts.hpp:149
ControlArtifactStatus status
Definition control_artifacts.hpp:147
std::string explanation
Definition control_artifacts.hpp:151
std::optional< ControlArtifactMetadata > metadata
Definition control_artifacts.hpp:148
Definition control_artifacts.hpp:99
std::filesystem::path root
Definition control_artifacts.hpp:100
std::size_t maximum_artifacts
Definition control_artifacts.hpp:106
std::uint64_t maximum_total_bytes
Logical publication quota.
Definition control_artifacts.hpp:105
std::size_t maximum_chunk_bytes
Definition control_artifacts.hpp:102
std::size_t maximum_blob_bytes
Definition control_artifacts.hpp:101
std::size_t maximum_artifacts_per_client
Definition control_artifacts.hpp:107
std::size_t maximum_deletion_audit_records
Definition control_artifacts.hpp:109
std::chrono::milliseconds maximum_lifetime
Definition control_artifacts.hpp:108
Definition control_artifacts.hpp:141
std::optional< ControlArtifactMetadata > metadata
Definition control_artifacts.hpp:143
ControlArtifactStatus status
Definition control_artifacts.hpp:142