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

Single-owner background scheduler for shared sample-cache page fills. More...

#include <sample_stream_scheduler.hpp>

Public Member Functions

bool prepare (std::size_t capacity)
void reset () noexcept
bool prepared () const noexcept
SampleStreamScheduleStatus submit_or_refresh (SampleStreamPageRequest request) noexcept
template<std::size_t Capacity>
std::size_t drain (SampleStreamRequestInbox< Capacity > &inbox) noexcept
std::optional< SampleStreamPageRequest > most_urgent () const noexcept
template<typename Predicate>
std::optional< SampleStreamPageRequest > most_urgent_if (Predicate &&predicate) const noexcept
bool has_page_interest (const SampleStreamPageRequest &request) const noexcept
std::size_t complete_page (const SampleStreamPageRequest &request) noexcept
std::optional< SampleStreamPageRequest > pop_most_urgent () noexcept
std::size_t cancel_source_generation (std::uint64_t source_id, std::uint64_t source_generation) noexcept
std::size_t cancel_requester (std::uint64_t requester_id, std::uint64_t requester_generation) noexcept
SampleStreamSchedulerStats stats () const noexcept

Detailed Description

Single-owner background scheduler for shared sample-cache page fills.

prepare(), submit_or_refresh(), cancellation, and pop_most_urgent() belong to one scheduler thread. Audio code only pushes trivially-owned requests into a prepared SampleStreamRequestInbox.

Member Function Documentation

◆ cancel_requester()

std::size_t pulp::audio::SampleStreamScheduler::cancel_requester ( std::uint64_t requester_id,
std::uint64_t requester_generation )
inlinenoexcept

◆ cancel_source_generation()

std::size_t pulp::audio::SampleStreamScheduler::cancel_source_generation ( std::uint64_t source_id,
std::uint64_t source_generation )
inlinenoexcept

◆ complete_page()

std::size_t pulp::audio::SampleStreamScheduler::complete_page ( const SampleStreamPageRequest & request)
inlinenoexcept

◆ drain()

template<std::size_t Capacity>
std::size_t pulp::audio::SampleStreamScheduler::drain ( SampleStreamRequestInbox< Capacity > & inbox)
inlinenoexcept

◆ has_page_interest()

bool pulp::audio::SampleStreamScheduler::has_page_interest ( const SampleStreamPageRequest & request) const
inlinenoexcept

◆ most_urgent()

std::optional< SampleStreamPageRequest > pulp::audio::SampleStreamScheduler::most_urgent ( ) const
inlinenoexcept

◆ most_urgent_if()

template<typename Predicate>
std::optional< SampleStreamPageRequest > pulp::audio::SampleStreamScheduler::most_urgent_if ( Predicate && predicate) const
inlinenoexcept

◆ pop_most_urgent()

std::optional< SampleStreamPageRequest > pulp::audio::SampleStreamScheduler::pop_most_urgent ( )
inlinenoexcept

◆ prepare()

bool pulp::audio::SampleStreamScheduler::prepare ( std::size_t capacity)
inline

◆ prepared()

bool pulp::audio::SampleStreamScheduler::prepared ( ) const
inlinenoexcept

◆ reset()

void pulp::audio::SampleStreamScheduler::reset ( )
inlinenoexcept

◆ stats()

SampleStreamSchedulerStats pulp::audio::SampleStreamScheduler::stats ( ) const
inlinenoexcept

◆ submit_or_refresh()

SampleStreamScheduleStatus pulp::audio::SampleStreamScheduler::submit_or_refresh ( SampleStreamPageRequest request)
inlinenoexcept

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