use alloc::sync::Arc;
use super::traits::{DynBuffer, WriteHandle};
pub(crate) struct RecordWriter<T: Clone + Send + 'static> {
buffer: Option<Arc<dyn DynBuffer<T>>>,
}
impl<T: Clone + Send + 'static> RecordWriter<T> {
pub(crate) fn new(buffer: Option<Arc<dyn DynBuffer<T>>>) -> Self {
Self { buffer }
}
}
impl<T: Clone + Send + 'static> WriteHandle<T> for RecordWriter<T> {
fn push(&self, value: T) {
if let Some(buf) = &self.buffer {
buf.push(value);
}
}
}