Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
control_host_ui_executor.hpp
Go to the documentation of this file.
1#pragma once
2
6
7#include <chrono>
8#include <cstddef>
9#include <cstdint>
10#include <functional>
11#include <memory>
12#include <optional>
13#include <string>
14#include <string_view>
15#include <variant>
16
17namespace pulp::inspect {
18
21
22inline constexpr std::size_t kControlCaptureMaximumBytes = 16u * 1024u * 1024u;
23inline constexpr std::size_t kControlRuntimeEvalMaximumResultBytes = 256u * 1024u;
24inline constexpr std::size_t kControlUiMaximumTargetBytes = 256;
25inline constexpr std::size_t kControlUiMaximumViewGenerationBytes = 128;
26inline constexpr std::size_t kControlUiMaximumKeyBytes = 64;
27inline constexpr std::size_t kControlUiMaximumTextBytes = 4096;
28inline constexpr double kControlUiMaximumCoordinate = 1'000'000.0;
29
34 std::string instance_id;
36 std::string view_generation;
37 std::string node_id;
38};
39
44 std::string authority_id;
45
47 const ControlUiAuthorityOwner&) = default;
48};
49
55 std::function<bool()> authority_live;
56 std::function<std::shared_ptr<void>(std::function<void()>)> subscribe_authority_end;
57};
58
60 std::function<std::optional<ControlUiProjectedAuthority>(const ControlAdmissionPlan&)>;
61
63 enum class Phase : std::uint8_t { Down, Move, Up };
65 double x = 0.0;
66 double y = 0.0;
67 std::uint8_t button = 0;
68};
69
71 enum class Phase : std::uint8_t { Down, Up };
73 std::string key;
74 bool repeat = false;
75};
76
78 bool focused = false;
79};
80
82 std::string text;
83};
84
87
94
100 public:
101 virtual ~ControlHostUiTargetAdapter() = default;
104 const ControlUiAuthorityOwner& owner,
105 const ControlUiInput& input) = 0;
109 virtual void release_controller(
110 const std::optional<ControlUiAuthorityOwner>& owner) noexcept = 0;
111};
112
119
121 std::function<std::optional<std::string>(std::string_view result_json)>;
122
125 std::shared_ptr<InspectorMainThreadRpc> main_thread_rpc;
126 std::shared_ptr<InspectorCaptureSource> capture_source;
127 std::shared_ptr<ControlHostUiTargetAdapter> target_adapter;
133 std::string view_generation;
134 std::shared_ptr<RuntimeEvaluator> runtime_evaluator;
139 std::chrono::milliseconds capture_lifetime = std::chrono::minutes(15);
140};
141
146 public:
147 static std::unique_ptr<ControlHostUiExecutor> create(ControlHostUiExecutorConfig config);
149
152
154 bool ready() const;
160 bool disconnect() noexcept;
161
162 private:
163 struct State;
164 explicit ControlHostUiExecutor(std::shared_ptr<State> state);
165 std::shared_ptr<State> state_;
166};
167
169std::string_view control_ui_input_disposition() noexcept;
170
171} // namespace pulp::inspect
ControlOperationExecutor executor() const
static std::unique_ptr< ControlHostUiExecutor > create(ControlHostUiExecutorConfig config)
ControlHostUiExecutor & operator=(const ControlHostUiExecutor &)=delete
bool release_controller_scope() noexcept
Fence retained pointer/focus state at controller-lease end while keeping this exact-instance executor...
bool disconnect() noexcept
Fence controller cleanup on the registered main thread.
ControlHostUiExecutor(const ControlHostUiExecutor &)=delete
Pulp-owned composition seam for an ordinary Standalone view tree.
Definition control_host_ui_executor.hpp:99
virtual InspectorCapture capture_node_png(const ControlUiExactTarget &target)=0
virtual void release_controller(const std::optional< ControlUiAuthorityOwner > &owner) noexcept=0
Close any pointer/focus bracket retained by the current controller.
virtual ControlUiApplyStatus dispatch_input(const ControlUiExactTarget &target, const ControlUiAuthorityOwner &owner, const ControlUiInput &input)=0
Bounded response-after-apply handoff from an inspector transport thread to the registered host main t...
Definition main_thread_rpc.hpp:23
Host-injected arbitrary-execution boundary.
Definition runtime_evaluator.hpp:41
Definition agent_context.hpp:7
std::function< std::optional< ControlUiProjectedAuthority >(const ControlAdmissionPlan &)> ControlUiAuthorityResolver
Definition control_host_ui_executor.hpp:59
constexpr std::size_t kControlUiMaximumKeyBytes
Definition control_host_ui_executor.hpp:26
constexpr std::size_t kControlUiMaximumViewGenerationBytes
Definition control_host_ui_executor.hpp:25
ControlUiApplyStatus
Definition control_host_ui_executor.hpp:88
@ StaleGeneration
Definition control_host_ui_executor.hpp:91
@ InvalidEvent
Definition control_host_ui_executor.hpp:92
@ TargetUnavailable
Definition control_host_ui_executor.hpp:90
constexpr std::size_t kControlRuntimeEvalMaximumResultBytes
Definition control_host_ui_executor.hpp:23
constexpr double kControlUiMaximumCoordinate
Definition control_host_ui_executor.hpp:28
std::string_view control_ui_input_disposition() noexcept
Stable registry/documentation disposition for the UI-input contract.
std::variant< ControlUiPointerInput, ControlUiKeyboardInput, ControlUiFocusInput, ControlUiTextInput > ControlUiInput
Definition control_host_ui_executor.hpp:85
constexpr std::size_t kControlUiMaximumTextBytes
Definition control_host_ui_executor.hpp:27
constexpr std::size_t kControlCaptureMaximumBytes
Definition control_host_ui_executor.hpp:22
constexpr std::size_t kControlUiMaximumTargetBytes
Definition control_host_ui_executor.hpp:24
std::function< std::optional< std::string >(std::string_view result_json)> ControlRuntimeEvalRedactor
Definition control_host_ui_executor.hpp:120
std::function< ControlExecutionOutcome( const ControlAdmissionPlan &, const ControlRequestEnvelope &, const ControlExecutionContext &)> ControlOperationExecutor
Trusted in-process adapter contract.
Definition control_execution.hpp:56
@ State
Definition capabilities.hpp:44
SequencerStateChannel is the audio-safe transport for a plugin's structured NON-parameter state: the ...
Definition audio_device_manager.hpp:48
STL namespace.
Immutable authority snapshot minted by ControlBroker after all seven permission terms pass.
Definition control_admission.hpp:58
Definition control_host_ui_executor.hpp:113
ControlRegistration registration
Exact broker-validated registration plus the manifest whose digest was retained in it.
Definition control_host_ui_executor.hpp:116
ControlManifest manifest
Definition control_host_ui_executor.hpp:117
Definition control_host_ui_executor.hpp:123
std::size_t maximum_capture_bytes
Definition control_host_ui_executor.hpp:137
ControlRuntimeEvalRedactor redact_runtime_eval_result
Required with runtime_evaluator. Returning nullopt fails closed.
Definition control_host_ui_executor.hpp:136
std::string view_generation
Opaque generation minted whenever the Standalone attaches a replacement root view.
Definition control_host_ui_executor.hpp:133
ControlHostUiBinding binding
Definition control_host_ui_executor.hpp:124
std::shared_ptr< ControlHostUiTargetAdapter > target_adapter
Definition control_host_ui_executor.hpp:127
std::shared_ptr< InspectorCaptureSource > capture_source
Definition control_host_ui_executor.hpp:126
std::chrono::milliseconds capture_lifetime
Definition control_host_ui_executor.hpp:139
std::shared_ptr< RuntimeEvaluator > runtime_evaluator
Definition control_host_ui_executor.hpp:134
std::shared_ptr< InspectorMainThreadRpc > main_thread_rpc
Definition control_host_ui_executor.hpp:125
ControlUiAuthorityResolver resolve_authority
Required with target_adapter.
Definition control_host_ui_executor.hpp:130
std::size_t maximum_eval_result_bytes
Definition control_host_ui_executor.hpp:138
Definition control_manifest.hpp:67
Definition control_identity.hpp:190
Broker-owned opaque authority owner for UI state retained between receipts.
Definition control_host_ui_executor.hpp:43
friend bool operator==(const ControlUiAuthorityOwner &, const ControlUiAuthorityOwner &)=default
std::string authority_id
Definition control_host_ui_executor.hpp:44
A node name is never authority by itself.
Definition control_host_ui_executor.hpp:33
std::string instance_generation
Definition control_host_ui_executor.hpp:35
std::string instance_id
Definition control_host_ui_executor.hpp:34
std::string node_id
Definition control_host_ui_executor.hpp:37
std::string view_generation
Definition control_host_ui_executor.hpp:36
Definition control_host_ui_executor.hpp:77
bool focused
Definition control_host_ui_executor.hpp:78
Definition control_host_ui_executor.hpp:70
Phase
Definition control_host_ui_executor.hpp:71
@ Down
Definition control_host_ui_executor.hpp:71
@ Up
Definition control_host_ui_executor.hpp:71
std::string key
Definition control_host_ui_executor.hpp:73
Phase phase
Definition control_host_ui_executor.hpp:72
bool repeat
Definition control_host_ui_executor.hpp:74
Definition control_host_ui_executor.hpp:62
double x
Definition control_host_ui_executor.hpp:65
Phase
Definition control_host_ui_executor.hpp:63
@ Down
Definition control_host_ui_executor.hpp:63
@ Up
Definition control_host_ui_executor.hpp:63
@ Move
Definition control_host_ui_executor.hpp:63
Phase phase
Definition control_host_ui_executor.hpp:64
double y
Definition control_host_ui_executor.hpp:66
std::uint8_t button
Definition control_host_ui_executor.hpp:67
Live broker authority projected to the exact enrolled host.
Definition control_host_ui_executor.hpp:53
ControlUiAuthorityOwner owner
Definition control_host_ui_executor.hpp:54
std::function< std::shared_ptr< void >(std::function< void()>)> subscribe_authority_end
Definition control_host_ui_executor.hpp:56
std::function< bool()> authority_live
Definition control_host_ui_executor.hpp:55
Definition control_host_ui_executor.hpp:81
std::string text
Definition control_host_ui_executor.hpp:82
Definition capture_source.hpp:9