synaptic_callbacks/
lib.rs1mod composite;
2mod stdout;
3mod tracing_cb;
4
5pub use composite::CompositeCallback;
6pub use stdout::StdOutCallbackHandler;
7pub use tracing_cb::TracingCallback;
8
9use std::sync::Arc;
10
11use async_trait::async_trait;
12use synaptic_core::{CallbackHandler, RunEvent, SynapticError};
13use tokio::sync::RwLock;
14
15#[derive(Default, Clone)]
17pub struct RecordingCallback {
18 events: Arc<RwLock<Vec<RunEvent>>>,
19}
20
21impl RecordingCallback {
22 pub fn new() -> Self {
23 Self::default()
24 }
25
26 pub async fn events(&self) -> Vec<RunEvent> {
27 self.events.read().await.clone()
28 }
29}
30
31#[async_trait]
32impl CallbackHandler for RecordingCallback {
33 async fn on_event(&self, event: RunEvent) -> Result<(), SynapticError> {
34 self.events.write().await.push(event);
35 Ok(())
36 }
37}