Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
state_migration.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <functional>
5#include <optional>
6#include <span>
7#include <vector>
8
9namespace pulp::state {
10
17public:
19 std::function<bool(std::span<const uint8_t> source,
20 std::vector<uint8_t>& destination)>;
21
22 bool register_migration(uint32_t from_version,
23 uint32_t to_version,
24 MigrationFn migration);
25
26 [[nodiscard]] bool has_migration_from(uint32_t from_version) const;
27
28 [[nodiscard]] std::optional<std::vector<uint8_t>>
29 migrate(std::span<const uint8_t> source, uint32_t target_version) const;
30
31private:
32 struct Entry {
33 uint32_t from_version = 0;
34 uint32_t to_version = 0;
35 MigrationFn migration;
36 };
37
38 const Entry* find(uint32_t from_version) const;
39
40 std::vector<Entry> migrations_;
41};
42
43[[nodiscard]] std::optional<uint32_t>
44serialized_state_version(std::span<const uint8_t> source);
45
46} // namespace pulp::state
Offline migration support for serialized StateStore payloads.
Definition state_migration.hpp:16
std::function< bool(std::span< const uint8_t > source, std::vector< uint8_t > &destination)> MigrationFn
Definition state_migration.hpp:18
std::optional< std::vector< uint8_t > > migrate(std::span< const uint8_t > source, uint32_t target_version) const
bool register_migration(uint32_t from_version, uint32_t to_version, MigrationFn migration)
bool has_migration_from(uint32_t from_version) const
SequencerStateChannel is the audio-safe transport for a plugin's structured NON-parameter state: the ...
Definition audio_device_manager.hpp:48
std::optional< uint32_t > serialized_state_version(std::span< const uint8_t > source)