Bounded shared-page cache with deterministic caller-driven servicing. More...
#include <sample_stream_service.hpp>
Public Member Functions | |
| SampleStreamCacheService () | |
| ~SampleStreamCacheService () | |
| SampleStreamCacheService (const SampleStreamCacheService &)=delete | |
| SampleStreamCacheService & | operator= (const SampleStreamCacheService &)=delete |
| bool | prepare (const SampleStreamCacheServiceConfig &config) |
| void | release () noexcept |
| bool | prepared () const noexcept |
| std::uint64_t | begin_audio_page_read () const noexcept |
| RT-safe page-lifetime barrier entry. | |
| void | complete_audio_page_read (std::uint64_t epoch) noexcept |
| RT-safe page-lifetime barrier completion. | |
| bool | update_audio_generations (std::uint64_t active_audio_generation, std::uint64_t completed_audio_generation) noexcept |
| Updates the generation currently allowed to hold page views and the last generation whose audio callback has completed. | |
| SampleStreamSourceAddResult | add_source (const SampleStreamCacheSourceConfig &config, FrameReader reader) |
| SampleStreamSourceRetireStatus | retire_source_after_asset_unpublish (SampleStreamSourceToken token) noexcept |
| Call only after the asset publisher has stopped issuing this source view. | |
| bool | discard_unpublished_source (SampleStreamSourceToken token) noexcept |
| Remove a source that never became reachable from an audio-thread asset. | |
| bool | retirement_watermark_reached (SampleStreamSourceToken token) const noexcept |
| bool | contains_source (SampleStreamSourceToken token) const noexcept |
| std::size_t | collect_retired_sources () noexcept |
| SampleStreamScheduleStatus | request_page (const SampleStreamPageDemand &demand) noexcept |
| std::size_t | cancel_requester (SampleStreamRequesterToken requester) noexcept |
| std::size_t | cancel_pending_source_demands (SampleStreamSourceToken source) noexcept |
| template<std::size_t Capacity> | |
| SampleStreamCommandDrainResult | drain_commands (SampleStreamCommandInbox< Capacity > &inbox) noexcept |
| Applies all currently queued commands in producer order. | |
| SampleStreamAsyncReserveResult | reserve_async_page () noexcept |
| bool | commit_async_dispatch (const SampleStreamAsyncReservation &reservation) noexcept |
| bool | async_reservation_has_interest (const SampleStreamAsyncReservation &reservation) const noexcept |
| SampleStreamAsyncCompletionStatus | cancel_async_reservation (const SampleStreamAsyncReservation &reservation) noexcept |
| SampleStreamAsyncCompletionStatus | publish_async_reservation (const SampleStreamAsyncReservation &reservation, BufferView< const float > decoded) noexcept |
| SampleStreamServiceStatus | service_once () noexcept |
| SampleStreamSchedulerStats | scheduler_stats () const noexcept |
| SampleStreamCacheServiceStats | stats () const noexcept |
Friends | |
| struct | SampleStreamCacheServiceTestAccess |
Bounded shared-page cache with deterministic caller-driven servicing.
All direct methods belong to one non-audio owner. Audio code reads returned windows and pushes fixed commands into SampleStreamCommandInbox; the owner applies those commands in FIFO order through drain_commands().
| pulp::audio::SampleStreamCacheService::SampleStreamCacheService | ( | ) |
| pulp::audio::SampleStreamCacheService::~SampleStreamCacheService | ( | ) |
|
delete |
| SampleStreamSourceAddResult pulp::audio::SampleStreamCacheService::add_source | ( | const SampleStreamCacheSourceConfig & | config, |
| FrameReader | reader ) |
|
noexcept |
|
noexcept |
RT-safe page-lifetime barrier entry.
Capture this before the callback performs any page lookup and return the value at callback completion. Audio callbacks must be single-threaded, non-overlapping, and complete in entry order; overlapping render callbacks are unsupported.
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
RT-safe page-lifetime barrier completion.
The callback must publish only the exact epoch captured by begin_audio_page_read(), after its last page access. Audio callbacks are single-threaded and complete in entry order.
|
noexcept |
|
noexcept |
Remove a source that never became reachable from an audio-thread asset.
The owner may use this only before retirement or async work begins.
|
inlinenoexcept |
Applies all currently queued commands in producer order.
Non-RT owner only; demand application may mutate the scheduler's pending vector.
|
delete |
| bool pulp::audio::SampleStreamCacheService::prepare | ( | const SampleStreamCacheServiceConfig & | config | ) |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
Call only after the asset publisher has stopped issuing this source view.
The current audio generation becomes the last generation allowed to hold a borrowed view; collection waits for that generation to complete.
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
Updates the generation currently allowed to hold page views and the last generation whose audio callback has completed.
Values are monotonic. A retired page is not writable again until completed reaches the generation that was active when the page was retired.
|
friend |