Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
plugin_state_io.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <functional>
5#include <span>
6#include <vector>
7
8namespace pulp::state {
9class StateStore;
10}
11
12namespace pulp::format {
13class Processor;
14
15namespace plugin_state_io {
16
18 std::function<bool(std::span<const uint8_t> source,
19 std::vector<uint8_t>& destination)>;
20
22
28
43
44[[nodiscard]] const char* restore_diagnostic_status_name(
45 RestoreDiagnosticStatus status) noexcept;
46
48 uint64_t max_total_bytes = 0;
49 uint64_t max_store_bytes = 0;
50 uint64_t max_plugin_bytes = 0;
52};
53
68
74 std::span<const uint8_t> bytes,
75 const RestoreDiagnosticPolicy& policy = {}) noexcept;
76
77bool register_envelope_migration(uint32_t from_version,
78 uint32_t to_version,
79 EnvelopeMigrationFn migration);
80
87std::vector<uint8_t> serialize(const state::StateStore& store,
88 const Processor& processor);
89
95bool deserialize(std::span<const uint8_t> bytes,
96 state::StateStore& store,
97 Processor& processor);
98
99} // namespace plugin_state_io
100} // namespace pulp::format
Definition processor.hpp:174
Centralized parameter storage with lock-free value access.
Definition store.hpp:164
Definition plugin_state_io.hpp:15
RestoreBlobFormat
Definition plugin_state_io.hpp:23
@ legacy_state_store
Definition plugin_state_io.hpp:25
@ envelope
Definition plugin_state_io.hpp:26
@ unknown
Definition plugin_state_io.hpp:24
bool register_envelope_migration(uint32_t from_version, uint32_t to_version, EnvelopeMigrationFn migration)
std::function< bool(std::span< const uint8_t > source, std::vector< uint8_t > &destination)> EnvelopeMigrationFn
Definition plugin_state_io.hpp:17
RestoreDiagnostics inspect_restore_blob(std::span< const uint8_t > bytes, const RestoreDiagnosticPolicy &policy={}) noexcept
Inspect a host-facing plugin state blob without mutating live plugin state.
bool deserialize(std::span< const uint8_t > bytes, state::StateStore &store, Processor &processor)
Restore a host-facing plugin state blob.
RestoreDiagnosticStatus
Definition plugin_state_io.hpp:29
@ unknown_format
Definition plugin_state_io.hpp:32
@ store_size_budget_exceeded
Definition plugin_state_io.hpp:40
@ payload_size_mismatch
Definition plugin_state_io.hpp:36
@ empty_blob
Definition plugin_state_io.hpp:31
@ empty_store_payload
Definition plugin_state_io.hpp:38
@ plugin_size_budget_exceeded
Definition plugin_state_io.hpp:41
@ unsupported_envelope_version
Definition plugin_state_io.hpp:34
@ total_size_budget_exceeded
Definition plugin_state_io.hpp:39
@ envelope_migration_unavailable
Definition plugin_state_io.hpp:35
@ truncated_envelope
Definition plugin_state_io.hpp:33
@ crc_mismatch
Definition plugin_state_io.hpp:37
const char * restore_diagnostic_status_name(RestoreDiagnosticStatus status) noexcept
std::vector< uint8_t > serialize(const state::StateStore &store, const Processor &processor)
Serialize the host-facing plugin state blob for a Processor.
What the product grants a device: the quota table indexed by capability tier and live thermal state.
Definition aax_editor.hpp:31
SequencerStateChannel is the audio-safe transport for a plugin's structured NON-parameter state: the ...
Definition audio_device_manager.hpp:48
uint64_t max_store_bytes
Definition plugin_state_io.hpp:49
uint64_t max_total_bytes
Definition plugin_state_io.hpp:48
uint64_t large_state_threshold_bytes
Definition plugin_state_io.hpp:51
uint64_t max_plugin_bytes
Definition plugin_state_io.hpp:50
Definition plugin_state_io.hpp:54
RestoreDiagnosticStatus status
Definition plugin_state_io.hpp:55
bool requires_plugin_restore
Definition plugin_state_io.hpp:62
bool ok() const noexcept
Definition plugin_state_io.hpp:66
uint64_t plugin_bytes
Definition plugin_state_io.hpp:60
RestoreBlobFormat format
Definition plugin_state_io.hpp:56
bool requires_envelope_migration
Definition plugin_state_io.hpp:61
bool large_state
Definition plugin_state_io.hpp:64
uint64_t total_bytes
Definition plugin_state_io.hpp:57
bool may_require_resource_relink
Definition plugin_state_io.hpp:63
uint32_t envelope_version
Definition plugin_state_io.hpp:58
uint64_t store_bytes
Definition plugin_state_io.hpp:59