Skip to main content

SessionWriter

Struct SessionWriter 

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

Handles incremental file I/O for a recording session.

Implements Drop to flush buffers and write a best-effort session.json if finish() was never called (e.g., due to a panic or early exit).

Implementations§

Source§

impl SessionWriter

Source

pub fn new(config: SessionConfig) -> Result<Self>

Create a new session writer, creating the session directory and files.

§Errors

Returns an error if the session directory or any output files cannot be created.

Source

pub fn write_sample( &mut self, source: &str, raw_bytes: &[u8], conditioned_bytes: &[u8], ) -> Result<()>

Record a single sample from a source.

Buffers are flushed periodically (every [FLUSH_INTERVAL] samples) rather than on every call, for performance. Data is still safe against process crashes because Drop flushes and writes session.json.

§Errors

Returns an error if writing to any of the output files fails.

Source

pub fn finish(self) -> Result<PathBuf>

Finalize the session, writing session.json. Call this on graceful shutdown.

§Errors

Returns an error if flushing buffers or writing session.json fails.

Source

pub fn session_dir(&self) -> &Path

Get the session directory path.

Source

pub fn total_samples(&self) -> u64

Get total samples recorded so far.

Source

pub fn elapsed(&self) -> Duration

Get elapsed time since recording started.

Source

pub fn samples_per_source(&self) -> &HashMap<String, u64>

Get per-source sample counts.

Trait Implementations§

Source§

impl Drop for SessionWriter

Source§

fn drop(&mut self)

Executes the destructor for this 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> 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> Same for T

Source§

type Output = T

Should always be Self
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