Skip to main content

TraceBuffer

Struct TraceBuffer 

Source
pub struct TraceBuffer { /* private fields */ }
Expand description

Ring buffer for trace events with Andon Cord policy.

Per Dunlap (2002): “A trace with missing input events is worse than no trace at all.”

Implementations§

Source§

impl TraceBuffer

Source

pub fn new(capacity: usize, policy: BufferPolicy) -> Self

Create a new trace buffer with specified capacity and policy.

Source

pub fn soft_andon(capacity: usize) -> Self

Create a Soft Andon buffer (visual indicator on overflow).

Source

pub fn debug(capacity: usize) -> Self

Create a debug buffer (Andon Cord enabled).

Source

pub fn production(capacity: usize) -> Self

Create a production buffer (drop oldest on overflow).

Source

pub fn push(&mut self, record: FrameRecord) -> Result<(), TraceError>

Push a frame record to the buffer.

In AndonCord mode, this will return Err(BufferFull) if the buffer is full. In DropOldest mode, this will drop the oldest frame to make room. In SoftAndon mode, this will drop oldest but update AndonState for visual feedback.

§Errors

Returns TraceError::BufferFull if the buffer is full and using AndonCord policy.

Source

pub const fn andon_state(&self) -> AndonState

Get current Andon state for visual feedback (v1.3).

Source

pub fn try_push(&mut self, record: FrameRecord) -> Result<(), TraceError>

Try to push without blocking.

§Errors

Returns TraceError::BufferFull if the buffer is full and using AndonCord policy.

Source

pub fn pop(&mut self) -> Option<FrameRecord>

Pop the oldest frame record from the buffer.

Source

pub fn drain(&mut self, count: usize) -> Vec<FrameRecord>

Drain up to count frames from the buffer.

Source

pub const fn len(&self) -> usize

Get current buffer length.

Source

pub const fn is_empty(&self) -> bool

Check if buffer is empty.

Source

pub const fn is_full(&self) -> bool

Check if buffer is full.

Source

pub const fn capacity(&self) -> usize

Get buffer capacity.

Source

pub const fn frames_dropped(&self) -> u64

Get number of dropped frames (only relevant in DropOldest mode).

Source

pub const fn policy(&self) -> BufferPolicy

Get buffer policy.

Source

pub fn clear(&mut self)

Clear the buffer.

Source

pub fn iter(&self) -> impl Iterator<Item = &FrameRecord>

Iterate over all frames in the buffer (oldest to newest).

Trait Implementations§

Source§

impl Debug for TraceBuffer

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V