Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
control_host_bootstrap.hpp
Go to the documentation of this file.
1#pragma once
2
4
5#include <chrono>
6#include <cstddef>
7#include <cstdint>
8#include <filesystem>
9#include <memory>
10#include <optional>
11#include <span>
12#include <string>
13#include <string_view>
14#include <vector>
15
16namespace pulp::inspect {
17
22
23inline constexpr std::uint32_t kControlHostBootstrapVersion = 1;
24inline constexpr std::string_view kControlHostBootstrapSchema = "dev.pulp.control/host-bootstrap@1";
25inline constexpr std::size_t kControlHostBootstrapMaximumBytes = 16u * 1024u;
26
37
42
69
71 public:
73 explicit ControlHostBootstrapBytes(std::vector<std::uint8_t> bytes);
79
80 bool empty() const noexcept {
81 return bytes_.empty();
82 }
83 std::span<const std::uint8_t> bytes() const noexcept {
84 return bytes_;
85 }
86 void clear() noexcept;
87
88 private:
89 std::vector<std::uint8_t> bytes_;
90};
91
93
95 std::span<const std::uint8_t> bytes,
96 std::chrono::system_clock::time_point now = std::chrono::system_clock::now(),
97 ControlHostBootstrapDiagnostics* diagnostics = nullptr);
98
99#ifdef _WIN32
100using ControlHostBootstrapHandle = void*;
101#else
103#endif
104
107std::optional<ControlHostBootstrapRecord> read_control_host_bootstrap(
108 ControlHostBootstrapHandle handle, std::chrono::milliseconds timeout = std::chrono::seconds(3),
109 std::chrono::system_clock::time_point now = std::chrono::system_clock::now(),
110 ControlHostBootstrapDiagnostics* diagnostics = nullptr);
111
115
116} // namespace pulp::inspect
Definition control_host_bootstrap.hpp:70
ControlHostBootstrapBytes(const ControlHostBootstrapBytes &)=delete
std::span< const std::uint8_t > bytes() const noexcept
Definition control_host_bootstrap.hpp:83
ControlHostBootstrapBytes(std::vector< std::uint8_t > bytes)
ControlHostBootstrapBytes(ControlHostBootstrapBytes &&) noexcept
ControlHostBootstrapBytes & operator=(const ControlHostBootstrapBytes &)=delete
bool empty() const noexcept
Definition control_host_bootstrap.hpp:80
One-shot inherited authority material.
Definition control_host_bootstrap.hpp:46
ControlHostBootstrapRecord(const ControlHostBootstrapRecord &)=delete
std::uint32_t version
Definition control_host_bootstrap.hpp:49
std::string admission_id
Exactly one credential form is valid: admission plus registration, or enrollment alone.
Definition control_host_bootstrap.hpp:55
std::string schema
Definition control_host_bootstrap.hpp:48
std::string enrollment_id
Definition control_host_bootstrap.hpp:57
ControlPeerExpectation expected_broker
Definition control_host_bootstrap.hpp:51
ControlRegistrationId registration_id
Definition control_host_bootstrap.hpp:56
std::int64_t expires_at_unix_ms
Definition control_host_bootstrap.hpp:58
ControlHostBootstrapRecord(ControlHostBootstrapRecord &&) noexcept
ControlHostBootstrapRecord & operator=(const ControlHostBootstrapRecord &)=delete
std::filesystem::path endpoint_path
Definition control_host_bootstrap.hpp:50
Definition agent_context.hpp:7
ControlHostBootstrapHandle inherited_control_host_bootstrap_handle() noexcept
Claims the private inherited standard-input handle.
ControlHostBootstrapBytes encode_control_host_bootstrap(const ControlHostBootstrapRecord &record)
constexpr std::size_t kControlHostBootstrapMaximumBytes
Definition control_host_bootstrap.hpp:25
std::optional< ControlHostBootstrapRecord > decode_control_host_bootstrap(std::span< const std::uint8_t > bytes, std::chrono::system_clock::time_point now=std::chrono::system_clock::now(), ControlHostBootstrapDiagnostics *diagnostics=nullptr)
constexpr std::string_view kControlHostBootstrapSchema
Definition control_host_bootstrap.hpp:24
@ Expired
Definition audit.hpp:68
@ Accepted
Definition audit.hpp:65
int ControlHostBootstrapHandle
Definition control_host_bootstrap.hpp:102
ControlHostBootstrapStatus
Definition control_host_bootstrap.hpp:27
@ UnsupportedVersion
Definition control_host_bootstrap.hpp:33
@ Truncated
Definition control_host_bootstrap.hpp:30
@ Oversize
Definition control_host_bootstrap.hpp:31
@ ReadFailed
Definition control_host_bootstrap.hpp:35
@ InvalidRecord
Definition control_host_bootstrap.hpp:32
@ Absent
Definition control_host_bootstrap.hpp:29
std::optional< ControlHostBootstrapRecord > read_control_host_bootstrap(ControlHostBootstrapHandle handle, std::chrono::milliseconds timeout=std::chrono::seconds(3), std::chrono::system_clock::time_point now=std::chrono::system_clock::now(), ControlHostBootstrapDiagnostics *diagnostics=nullptr)
Reads one bounded document to EOF, closes the inherited handle, and wipes the temporary encoded bytes...
constexpr std::uint32_t kControlHostBootstrapVersion
Transport primitives for a record already minted by broker-owned enrollment.
Definition control_host_bootstrap.hpp:23
STL namespace.
Definition control_host_bootstrap.hpp:38
std::string explanation
Definition control_host_bootstrap.hpp:40
ControlHostBootstrapStatus status
Definition control_host_bootstrap.hpp:39
Exact broker-owned peer expectation.
Definition control_peer.hpp:12
Definition control_identity.hpp:36