Skip to main content

LogSink

Struct LogSink 

Source
pub struct LogSink(/* private fields */);
Expand description

A shared, bounded ring-buffer sink for LogEntry items.

Wraps Arc<Mutex<VecDeque<LogEntry>>> and enforces a maximum capacity of 20 entries. Oldest entries are evicted when the cap is exceeded.

LogSink can be cloned cheaply (clones the Arc, not the buffer). It is intended to be passed to the Lua bridge so that log output from both print() and alc.log() is routed into the session’s ring buffer.

Implementations§

Source§

impl LogSink

Source

pub fn new() -> Self

Create a new, empty LogSink.

Source

pub fn push(&self, entry: LogEntry)

Push a new entry into the ring buffer, evicting the oldest if necessary.

§Arguments
§Errors

If the internal mutex is poisoned (only possible on OOM-induced panic), the entry is silently dropped. This is the approved “observation/recording” policy — log capture failure must not interrupt execution.

Source

pub fn to_json(&self) -> Value

Snapshot the current ring-buffer contents as a JSON array.

§Returns

A serde_json::Value::Array of serialized LogEntry objects, in chronological order (oldest first). Returns an empty array if the mutex is poisoned.

Source

pub fn entries(&self) -> Vec<LogEntry>

Snapshot the current ring-buffer contents as a Vec<LogEntry>.

Useful for programmatic access (e.g. in SessionStatus::snapshot). Returns an empty vec if the mutex is poisoned.

Trait Implementations§

Source§

impl Clone for LogSink

Source§

fn clone(&self) -> LogSink

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LogSink

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for LogSink

Source§

fn default() -> Self

Returns the “default value” for a type. 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.