pub struct SessionRecorder<W> { /* private fields */ }Expand description
Records session events to a JSONL output.
The recorder is thread-safe and can be used as an EventBus observer. It writes each event as a JSON line immediately for crash resilience.
§Example
use ralph_core::SessionRecorder;
use ralph_proto::Event;
let mut output = Vec::new();
let recorder = SessionRecorder::new(&mut output);
// Record a bus event
let event = Event::new("task.start", "Begin implementation");
recorder.record_bus_event(&event);
// Flush and check output
drop(recorder);
let output_str = String::from_utf8_lossy(&output);
assert!(output_str.contains("bus.publish"));Implementations§
Source§impl<W: Write> SessionRecorder<W>
impl<W: Write> SessionRecorder<W>
Sourcepub fn record_bus_event(&self, event: &Event)
pub fn record_bus_event(&self, event: &Event)
Records an EventBus event.
Sourcepub fn record_ux_event(&self, ux_event: &UxEvent)
pub fn record_ux_event(&self, ux_event: &UxEvent)
Records a UX event.
Sourcepub fn record_ux_events(&self, events: &[UxEvent])
pub fn record_ux_events(&self, events: &[UxEvent])
Records multiple UX events.
Sourcepub fn record_meta(&self, record: Record)
pub fn record_meta(&self, record: Record)
Records a metadata event.
Sourcepub fn ux_write_count(&self) -> u32
pub fn ux_write_count(&self) -> u32
Returns the number of UX write events recorded.
Source§impl<W: Write + Send + 'static> SessionRecorder<W>
impl<W: Write + Send + 'static> SessionRecorder<W>
Sourcepub fn make_observer(recorder: Arc<Self>) -> impl Fn(&Event) + Send + 'static
pub fn make_observer(recorder: Arc<Self>) -> impl Fn(&Event) + Send + 'static
Creates an observer closure suitable for EventBus::set_observer.
The returned closure holds a reference to this recorder and calls
record_bus_event for each event received.
§Example
ⓘ
let recorder = Arc::new(SessionRecorder::new(file));
let observer = SessionRecorder::make_observer(Arc::clone(&recorder));
event_bus.set_observer(observer);Auto Trait Implementations§
impl<W> !Freeze for SessionRecorder<W>
impl<W> RefUnwindSafe for SessionRecorder<W>
impl<W> Send for SessionRecorder<W>where
W: Send,
impl<W> Sync for SessionRecorder<W>where
W: Send,
impl<W> Unpin for SessionRecorder<W>where
W: Unpin,
impl<W> UnsafeUnpin for SessionRecorder<W>where
W: UnsafeUnpin,
impl<W> UnwindSafe for SessionRecorder<W>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more