use qubit_function::{
ArcConsumer,
Consumer,
};
use super::formatted_progress_reporter::FormattedProgressReporter;
use crate::{
model::ProgressEvent,
reporter::{
ProgressReporter,
format::JsonMetricSnapshotFormatter,
},
};
pub struct JsonProgressReporter<C = ArcConsumer<String>> {
inner: FormattedProgressReporter<JsonMetricSnapshotFormatter, C>,
}
impl<C> JsonProgressReporter<C> {
#[inline]
pub fn new(consumer: C) -> Self {
Self {
inner: FormattedProgressReporter::new(JsonMetricSnapshotFormatter::new(), consumer),
}
}
#[inline]
pub const fn inner(&self) -> &FormattedProgressReporter<JsonMetricSnapshotFormatter, C> {
&self.inner
}
}
impl<C> ProgressReporter for JsonProgressReporter<C>
where
C: Consumer<String> + Send + Sync,
{
#[inline]
fn report(&self, event: &ProgressEvent) {
self.inner.report(event);
}
}