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
impl SessionWriter
Sourcepub fn new(config: SessionConfig) -> Result<Self>
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.
Sourcepub fn write_sample(
&mut self,
source: &str,
raw_bytes: &[u8],
conditioned_bytes: &[u8],
) -> Result<()>
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.
Sourcepub fn finish(self) -> Result<PathBuf>
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.
Sourcepub fn session_dir(&self) -> &Path
pub fn session_dir(&self) -> &Path
Get the session directory path.
Sourcepub fn total_samples(&self) -> u64
pub fn total_samples(&self) -> u64
Get total samples recorded so far.
Sourcepub fn samples_per_source(&self) -> &HashMap<String, u64>
pub fn samples_per_source(&self) -> &HashMap<String, u64>
Get per-source sample counts.