Raven Engine v0.1
Loading...
Searching...
No Matches
Raven::DeferredDeletionQueue Class Reference

Manages deferred execution of destruction callbacks. More...

#include <DeferredDeletionQueue.h>

Public Types

using DeletionFn = FixedFunction<void()>
 Move-only callable representing a deletion.
using PredicateFn = FixedFunction<bool()>
 Move-only callable returning a boolean condition.

Public Member Functions

 DeferredDeletionQueue (u32 framesInFlight=3) noexcept
 Construct a deferred deletion queue.
 ~DeferredDeletionQueue () noexcept
 Destructs the queue and flushes all pending deletions.
 DeferredDeletionQueue (const DeferredDeletionQueue &)=delete
DeferredDeletionQueueoperator= (const DeferredDeletionQueue &)=delete
void EnqueueAfterFrames (DeletionFn fn, uint32_t delay=0) noexcept
 Enqueue a deletion to occur after delay frames.
void EnqueueWhen (PredicateFn predicate, DeletionFn fn) noexcept
 Enqueue a deletion that occurs when a predicate returns true.
void OnFrameEnd () noexcept
 Advance the frame counter and execute ready deletions.
void Process () noexcept
 Process only predicate-based deletions.
void Flush () noexcept
 Immediately execute all pending deletions and clear the queue.
u32 FramesInFlight () const noexcept

Detailed Description

Manages deferred execution of destruction callbacks.

Designed primarily for GPU resources, but can manage any deferred cleanup. Provides frame-based delays and predicate-based conditional deletion.

Member Typedef Documentation

◆ DeletionFn

Move-only callable representing a deletion.

◆ PredicateFn

Move-only callable returning a boolean condition.

Constructor & Destructor Documentation

◆ DeferredDeletionQueue() [1/2]

Raven::DeferredDeletionQueue::DeferredDeletionQueue ( u32 framesInFlight = 3)
inlineexplicitnoexcept

Construct a deferred deletion queue.

Parameters
framesInFlightNumber of frames in flight to account for.

Internally allocates a ring buffer of size framesInFlight + 1. framesInFlight must be at least 1.

◆ ~DeferredDeletionQueue()

Raven::DeferredDeletionQueue::~DeferredDeletionQueue ( )
inlinenoexcept

Destructs the queue and flushes all pending deletions.

◆ DeferredDeletionQueue() [2/2]

Raven::DeferredDeletionQueue::DeferredDeletionQueue ( const DeferredDeletionQueue & )
delete

Member Function Documentation

◆ EnqueueAfterFrames()

void Raven::DeferredDeletionQueue::EnqueueAfterFrames ( DeletionFn fn,
uint32_t delay = 0 )
inlinenoexcept

Enqueue a deletion to occur after delay frames.

Parameters
fnDeletion callable.
delayNumber of frames to wait (0 -> next OnFrameEnd).

Typically used for GPU resources to ensure they outlive all frames in flight.

◆ EnqueueWhen()

void Raven::DeferredDeletionQueue::EnqueueWhen ( PredicateFn predicate,
DeletionFn fn )
inlinenoexcept

Enqueue a deletion that occurs when a predicate returns true.

Parameters
predicateCondition callable, polled each frame.
fnDeletion callable executed once predicate returns true.

◆ Flush()

void Raven::DeferredDeletionQueue::Flush ( )
inlinenoexcept

Immediately execute all pending deletions and clear the queue.

Typically used at shutdown to ensure no resource leaks.

◆ FramesInFlight()

u32 Raven::DeferredDeletionQueue::FramesInFlight ( ) const
inlinenoexcept
Returns
Number of frames in flight tracked by this queue.

◆ OnFrameEnd()

void Raven::DeferredDeletionQueue::OnFrameEnd ( )
inlinenoexcept

Advance the frame counter and execute ready deletions.

Call once per frame at a safe point (e.g., after GPU submission). Processes frame-delayed deletions and predicate-based deletions.

◆ operator=()

DeferredDeletionQueue & Raven::DeferredDeletionQueue::operator= ( const DeferredDeletionQueue & )
delete

◆ Process()

void Raven::DeferredDeletionQueue::Process ( )
inlinenoexcept

Process only predicate-based deletions.

Can be called independently if frame advancement is separate.


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