Canonical transport-free, bounded fan-out telemetry tap. More...
#include <control_telemetry_tap.hpp>
Public Types | |
| using | Clock = std::function<std::chrono::steady_clock::time_point()> |
| using | Classifier = std::function<ControlTelemetrySensitivity(std::string_view)> |
Public Member Functions | |
| ControlTelemetryTap (ControlTelemetryTapConfig config, Clock clock={}) | |
| ~ControlTelemetryTap () | |
| ControlTelemetryTap (ControlTelemetryTap &&) noexcept | |
| ControlTelemetryTap & | operator= (ControlTelemetryTap &&) noexcept |
| ControlTelemetryTap (const ControlTelemetryTap &)=delete | |
| ControlTelemetryTap & | operator= (const ControlTelemetryTap &)=delete |
| bool | attach (view::ValueChannelTelemetryAttachment attachment, Classifier classifier={}) |
| void | detach () noexcept |
| std::optional< std::string > | subscribe (const ControlTelemetryAuthority &authority, ControlTelemetrySubscriptionRequest request) |
| bool | unsubscribe (std::string_view subscription_id, const ControlTelemetryAuthority &authority) |
| std::size_t | end_authority (const ControlTelemetryAuthority &authority) noexcept |
| void | poll () |
| std::optional< ControlTelemetryFrame > | try_pop (std::string_view subscription_id, const ControlTelemetryAuthority &authority) |
| double | effective_rate_hz (double requested_rate_hz) const noexcept |
| std::size_t | subscription_count () const noexcept |
Canonical transport-free, bounded fan-out telemetry tap.
It owns the one ValueChannelTelemetryAttachment reader and copies each sampled publication into bounded per-subscription queues. Slow consumers lose oldest frames and receive exact loss accounting; they can never block producer/render/audio. All methods are serialized by the broker control thread; poll() performs the bounded copies and allocations away from producer/render/audio threads.
| using pulp::inspect::ControlTelemetryTap::Classifier = std::function<ControlTelemetrySensitivity(std::string_view)> |
| using pulp::inspect::ControlTelemetryTap::Clock = std::function<std::chrono::steady_clock::time_point()> |
|
explicit |
| pulp::inspect::ControlTelemetryTap::~ControlTelemetryTap | ( | ) |
|
noexcept |
|
delete |
| bool pulp::inspect::ControlTelemetryTap::attach | ( | view::ValueChannelTelemetryAttachment | attachment, |
| Classifier | classifier = {} ) |
|
noexcept |
|
noexcept |
|
noexcept |
|
delete |
|
noexcept |
| void pulp::inspect::ControlTelemetryTap::poll | ( | ) |
| std::optional< std::string > pulp::inspect::ControlTelemetryTap::subscribe | ( | const ControlTelemetryAuthority & | authority, |
| ControlTelemetrySubscriptionRequest | request ) |
|
noexcept |
| std::optional< ControlTelemetryFrame > pulp::inspect::ControlTelemetryTap::try_pop | ( | std::string_view | subscription_id, |
| const ControlTelemetryAuthority & | authority ) |
| bool pulp::inspect::ControlTelemetryTap::unsubscribe | ( | std::string_view | subscription_id, |
| const ControlTelemetryAuthority & | authority ) |