Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
control_client.hpp
Go to the documentation of this file.
1#pragma once
2
5
6#include <chrono>
7#include <cstddef>
8#include <cstdint>
9#include <optional>
10#include <string>
11#include <string_view>
12
13namespace pulp::inspect {
14
16 std::optional<std::string> encoded_response;
17 std::string error_code;
18 std::string explanation;
19
20 bool succeeded() const {
21 return encoded_response.has_value();
22 }
23};
24
34 public:
35 virtual ~ControlClientTransport() = default;
36
37 virtual ControlTransportDispatchResult dispatch(std::string_view encoded_envelope,
38 std::chrono::milliseconds timeout) = 0;
39 virtual ControlArtifactReadResult read_artifact(std::string_view artifact_id,
40 std::uint64_t offset, std::size_t maximum_bytes,
41 std::chrono::milliseconds timeout) = 0;
42};
43
44template <typename Response> struct ControlDispatchResult {
45 std::optional<Response> response;
46 std::string error_code;
47 std::string explanation;
48
49 bool succeeded() const {
50 return response.has_value();
51 }
52};
53
56
63 public:
67
68 ControlClient(const ControlClient&) = delete;
70
73 std::chrono::milliseconds timeout = std::chrono::seconds(3));
75 std::chrono::milliseconds timeout = std::chrono::seconds(3));
77 std::chrono::milliseconds timeout = std::chrono::seconds(3));
79 read_artifact(std::string_view artifact_id, std::uint64_t offset, std::size_t maximum_bytes,
80 std::chrono::milliseconds timeout = std::chrono::seconds(3));
81
82 private:
83 struct DispatchResult {
84 std::optional<ControlEnvelope> response;
85 std::string error_code;
86 std::string explanation;
87 };
88
89 DispatchResult dispatch(const ControlEnvelope& envelope, std::chrono::milliseconds timeout);
90 ControlClientTransport* transport_ = nullptr;
91};
92
93} // namespace pulp::inspect
One authenticated, connection-bound capability-control session.
Definition control_client.hpp:33
virtual ControlTransportDispatchResult dispatch(std::string_view encoded_envelope, std::chrono::milliseconds timeout)=0
virtual ControlArtifactReadResult read_artifact(std::string_view artifact_id, std::uint64_t offset, std::size_t maximum_bytes, std::chrono::milliseconds timeout)=0
ControlClientReceiptResult request(const ControlRequestEnvelope &request, std::chrono::milliseconds timeout=std::chrono::seconds(3))
ControlClientReceiptResult cancel(const ControlCancelEnvelope &cancellation, std::chrono::milliseconds timeout=std::chrono::seconds(3))
ControlClientNegotiationResult negotiate(const ControlNegotiationOffer &offer, std::chrono::milliseconds timeout=std::chrono::seconds(3))
ControlClient(ControlClientTransport &transport)
The connection-bound transport must outlive this client.
ControlArtifactReadResult read_artifact(std::string_view artifact_id, std::uint64_t offset, std::size_t maximum_bytes, std::chrono::milliseconds timeout=std::chrono::seconds(3))
ControlClient(const ControlClient &)=delete
ControlClient & operator=(const ControlClient &)=delete
Definition agent_context.hpp:7
ControlDispatchResult< ControlNegotiationResult > ControlClientNegotiationResult
Definition control_client.hpp:54
ControlDispatchResult< ControlReceiptEnvelope > ControlClientReceiptResult
Definition control_client.hpp:55
Definition control_artifacts.hpp:146
Definition control_protocol.hpp:100
Definition control_client.hpp:44
bool succeeded() const
Definition control_client.hpp:49
std::string error_code
Definition control_client.hpp:46
std::optional< ControlNegotiationResult > response
Definition control_client.hpp:45
std::string explanation
Definition control_client.hpp:47
Definition control_protocol.hpp:481
Definition control_protocol.hpp:53
Definition control_protocol.hpp:84
Definition control_client.hpp:15
std::string explanation
Definition control_client.hpp:18
bool succeeded() const
Definition control_client.hpp:20
std::optional< std::string > encoded_response
Definition control_client.hpp:16
std::string error_code
Definition control_client.hpp:17