Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::inspect::ControlTelemetryTap Class Reference

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

Detailed Description

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.

Member Typedef Documentation

◆ Classifier

◆ Clock

using pulp::inspect::ControlTelemetryTap::Clock = std::function<std::chrono::steady_clock::time_point()>

Constructor & Destructor Documentation

◆ ControlTelemetryTap() [1/3]

pulp::inspect::ControlTelemetryTap::ControlTelemetryTap ( ControlTelemetryTapConfig config,
Clock clock = {} )
explicit

◆ ~ControlTelemetryTap()

pulp::inspect::ControlTelemetryTap::~ControlTelemetryTap ( )

◆ ControlTelemetryTap() [2/3]

pulp::inspect::ControlTelemetryTap::ControlTelemetryTap ( ControlTelemetryTap && )
noexcept

◆ ControlTelemetryTap() [3/3]

pulp::inspect::ControlTelemetryTap::ControlTelemetryTap ( const ControlTelemetryTap & )
delete

Member Function Documentation

◆ attach()

bool pulp::inspect::ControlTelemetryTap::attach ( view::ValueChannelTelemetryAttachment attachment,
Classifier classifier = {} )

◆ detach()

void pulp::inspect::ControlTelemetryTap::detach ( )
noexcept

◆ effective_rate_hz()

double pulp::inspect::ControlTelemetryTap::effective_rate_hz ( double requested_rate_hz) const
noexcept

◆ end_authority()

std::size_t pulp::inspect::ControlTelemetryTap::end_authority ( const ControlTelemetryAuthority & authority)
noexcept

◆ operator=() [1/2]

ControlTelemetryTap & pulp::inspect::ControlTelemetryTap::operator= ( const ControlTelemetryTap & )
delete

◆ operator=() [2/2]

ControlTelemetryTap & pulp::inspect::ControlTelemetryTap::operator= ( ControlTelemetryTap && )
noexcept

◆ poll()

void pulp::inspect::ControlTelemetryTap::poll ( )

◆ subscribe()

std::optional< std::string > pulp::inspect::ControlTelemetryTap::subscribe ( const ControlTelemetryAuthority & authority,
ControlTelemetrySubscriptionRequest request )

◆ subscription_count()

std::size_t pulp::inspect::ControlTelemetryTap::subscription_count ( ) const
noexcept

◆ try_pop()

std::optional< ControlTelemetryFrame > pulp::inspect::ControlTelemetryTap::try_pop ( std::string_view subscription_id,
const ControlTelemetryAuthority & authority )

◆ unsubscribe()

bool pulp::inspect::ControlTelemetryTap::unsubscribe ( std::string_view subscription_id,
const ControlTelemetryAuthority & authority )

The documentation for this class was generated from the following file: