Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
control_inspector_client.hpp
Go to the documentation of this file.
1#pragma once
2
7
8#include <chrono>
9#include <filesystem>
10#include <functional>
11#include <memory>
12#include <optional>
13#include <string>
14#include <string_view>
15
16namespace pulp::inspect {
17
32
37 public:
38 virtual ~InspectorControlSessionOpener() = default;
39
40 virtual std::optional<InspectorControlSession>
41 open(std::chrono::milliseconds timeout) = 0;
45 virtual std::optional<InspectorControlSession>
46 open_until(std::chrono::steady_clock::time_point deadline) {
47 const auto now = std::chrono::steady_clock::now();
48 if (now >= deadline)
49 return std::nullopt;
50 return open(std::chrono::ceil<std::chrono::milliseconds>(deadline - now));
51 }
52};
53
57std::filesystem::path
58installed_control_broker_executable(const std::filesystem::path& client_executable);
59
66std::unique_ptr<InspectorControlSessionOpener>
68 std::filesystem::path client_executable,
69 std::optional<std::string> exact_instance_id = std::nullopt,
70 std::string legacy_profile = "develop");
71
77 std::string params_json = "{}",
78 std::chrono::milliseconds timeout = std::chrono::seconds(3));
79
84request_control_inspector(std::string method, std::string params_json = "{}",
85 std::chrono::milliseconds timeout = std::chrono::seconds(3));
86
87namespace detail {
88
90 std::string instance_id;
91 std::string registration_id;
92 std::string publication_id;
93 std::string session_id;
94};
95
98std::optional<TraceControlInventorySelection> select_trace_control_instance(
99 std::string_view inventory_json,
100 std::optional<std::string_view> exact_instance_id = std::nullopt);
101std::string trace_control_grant_request_json(std::string_view instance_id);
102
104 std::function<std::chrono::steady_clock::time_point()>;
105
108 InspectorControlSessionOpener& opener, std::string method,
109 std::string params_json, std::chrono::milliseconds timeout,
111
112} // namespace detail
113
114} // namespace pulp::inspect
Injected enrollment/session boundary for canonical Inspector operations.
Definition control_inspector_client.hpp:36
virtual std::optional< InspectorControlSession > open(std::chrono::milliseconds timeout)=0
virtual std::optional< InspectorControlSession > open_until(std::chrono::steady_clock::time_point deadline)
Deadline-aware entry point.
Definition control_inspector_client.hpp:46
Definition resource_counters.hpp:35
std::function< std::chrono::steady_clock::time_point()> InspectorControlClock
Definition control_inspector_client.hpp:103
std::optional< TraceControlInventorySelection > select_trace_control_instance(std::string_view inventory_json, std::optional< std::string_view > exact_instance_id=std::nullopt)
Internal pure seams for testing least-authority discovery and grant construction without a live insta...
InspectorClientResult request_control_inspector_with_clock(InspectorControlSessionOpener &opener, std::string method, std::string params_json, std::chrono::milliseconds timeout, InspectorControlClock clock)
Internal deterministic-clock seam for deadline contract tests.
std::string trace_control_grant_request_json(std::string_view instance_id)
Definition agent_context.hpp:7
InspectorClientResult request_control_inspector(InspectorControlSessionOpener &opener, std::string method, std::string params_json="{}", std::chrono::milliseconds timeout=std::chrono::seconds(3))
Execute one already-supported trace Inspector method through the canonical capability-control carrier...
std::filesystem::path installed_control_broker_executable(const std::filesystem::path &client_executable)
Resolve the peer-verification anchor for a broker installed beside a CLI or MCP client.
std::unique_ptr< InspectorControlSessionOpener > make_installed_inspector_control_session_opener(std::filesystem::path client_executable, std::optional< std::string > exact_instance_id=std::nullopt, std::string legacy_profile="develop")
Build the installed-process opener used by CLI and MCP compatibility adapters.
Definition control_identity.hpp:28
Definition control_grants.hpp:18
Definition control_identity.hpp:36
Typed outcome for a one-shot canonical control request.
Definition client.hpp:19
Exact selector for one canonical control registration generation.
Definition client.hpp:11
Authority material returned by an enrollment-aware client integration.
Definition control_inspector_client.hpp:23
std::string instance_generation
Definition control_inspector_client.hpp:28
ControlClientId client_id
Definition control_inspector_client.hpp:25
std::unique_ptr< ControlClientTransport > transport
Definition control_inspector_client.hpp:24
ControlGrantId grant_id
Definition control_inspector_client.hpp:27
ControlRegistrationId registration_id
Definition control_inspector_client.hpp:26
std::uint64_t expected_state_generation
Definition control_inspector_client.hpp:30
InspectorClientTarget target
Definition control_inspector_client.hpp:29
Definition control_inspector_client.hpp:89
std::string session_id
Definition control_inspector_client.hpp:93
std::string instance_id
Definition control_inspector_client.hpp:90
std::string registration_id
Definition control_inspector_client.hpp:91
std::string publication_id
Definition control_inspector_client.hpp:92