Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
control_connection_admission.hpp
Go to the documentation of this file.
1#pragma once
2
4
5#include <chrono>
6#include <cstddef>
7#include <cstdint>
8#include <functional>
9#include <memory>
10#include <optional>
11#include <string>
12#include <string_view>
13#include <variant>
14
15namespace pulp::inspect {
16
17inline constexpr std::size_t kControlMaximumConnectionAdmissions = 1024;
18inline constexpr auto kControlMaximumConnectionAdmissionTtl = std::chrono::seconds(30);
19
25
31
33 std::variant<ControlClientConnectionPrincipal, ControlHostConnectionPrincipal>;
34
41
48
50 std::string admission_id;
51 std::chrono::steady_clock::time_point expires_at;
52};
53
58
60 std::size_t maximum_admissions = 64;
61 std::chrono::milliseconds admission_ttl = std::chrono::seconds(5);
62};
63
72 public:
73 using Clock = std::function<std::chrono::steady_clock::time_point()>;
74
77 Clock clock = [] { return std::chrono::steady_clock::now(); });
79
82
85 std::optional<ControlConnectionAdmission> consume(std::string_view admission_id);
87 std::size_t size() const;
88
89 private:
90 struct Impl;
91 std::unique_ptr<Impl> impl_;
92};
93
94} // namespace pulp::inspect
ControlConnectionAdmissionStore(const ControlConnectionAdmissionStore &)=delete
ControlConnectionAdmissionResult issue(ControlPeerExpectation expected_peer, ControlConnectionPrincipal principal)
std::function< std::chrono::steady_clock::time_point()> Clock
Definition control_connection_admission.hpp:73
ControlConnectionAdmissionStore(ControlConnectionAdmissionStoreConfig config={}, Clock clock=[] { return std::chrono::steady_clock::now();})
ControlConnectionAdmissionStore & operator=(const ControlConnectionAdmissionStore &)=delete
std::optional< ControlConnectionAdmission > consume(std::string_view admission_id)
Definition agent_context.hpp:7
constexpr std::size_t kControlMaximumConnectionAdmissions
Definition control_connection_admission.hpp:17
constexpr auto kControlMaximumConnectionAdmissionTtl
Definition control_connection_admission.hpp:18
ControlConnectionAdmissionStatus
Definition control_connection_admission.hpp:42
@ Issued
Definition control_connection_admission.hpp:43
@ EntropyUnavailable
Definition control_connection_admission.hpp:46
@ InvalidRequest
Definition control_connection_admission.hpp:44
std::variant< ControlClientConnectionPrincipal, ControlHostConnectionPrincipal > ControlConnectionPrincipal
Definition control_connection_admission.hpp:32
@ ResourceExhausted
Definition control_admission.hpp:26
@ InvalidRequest
Definition control_admission.hpp:17
Definition control_connection_admission.hpp:20
ControlClientId client_id
Definition control_connection_admission.hpp:21
friend bool operator==(const ControlClientConnectionPrincipal &, const ControlClientConnectionPrincipal &)=default
Definition control_identity.hpp:28
Definition control_connection_admission.hpp:54
ControlConnectionAdmissionStatus status
Definition control_connection_admission.hpp:55
std::optional< ControlConnectionAdmissionTicket > ticket
Definition control_connection_admission.hpp:56
Definition control_connection_admission.hpp:59
std::size_t maximum_admissions
Definition control_connection_admission.hpp:60
std::chrono::milliseconds admission_ttl
Definition control_connection_admission.hpp:61
Definition control_connection_admission.hpp:49
std::string admission_id
Definition control_connection_admission.hpp:50
std::chrono::steady_clock::time_point expires_at
Definition control_connection_admission.hpp:51
Definition control_connection_admission.hpp:35
ControlPeerExpectation expected_peer
Definition control_connection_admission.hpp:37
ControlConnectionPrincipal principal
Definition control_connection_admission.hpp:38
std::string admission_id
Definition control_connection_admission.hpp:36
std::chrono::steady_clock::time_point expires_at
Definition control_connection_admission.hpp:39
Definition control_connection_admission.hpp:26
friend bool operator==(const ControlHostConnectionPrincipal &, const ControlHostConnectionPrincipal &)=default
ControlRegistrationId registration_id
Definition control_connection_admission.hpp:27
Exact broker-owned peer expectation.
Definition control_peer.hpp:12
Definition control_identity.hpp:36