#[cfg(feature = "capture-v1")]
use std::collections::HashMap;
#[cfg(feature = "capture-v1")]
use uuid::Uuid;
#[cfg(feature = "capture-v1")]
use crate::event_v1::{EventResult, EventStatus};
#[derive(Debug, Clone, Default)]
#[non_exhaustive]
pub struct CaptureSummary {
submitted: usize,
#[cfg(feature = "capture-v1")]
results: HashMap<Uuid, EventResult>,
}
impl CaptureSummary {
#[cfg(feature = "capture-v1")]
pub(crate) fn from_results(submitted: usize, results: HashMap<Uuid, EventResult>) -> Self {
Self { submitted, results }
}
#[cfg(not(feature = "capture-v1"))]
pub(crate) fn delivered(submitted: usize) -> Self {
Self { submitted }
}
pub fn submitted(&self) -> usize {
self.submitted
}
pub fn not_persisted(&self) -> usize {
#[cfg(feature = "capture-v1")]
{
let persisted = self
.results
.values()
.filter(|r| matches!(r.result, EventStatus::Ok | EventStatus::Warning))
.count();
self.submitted.saturating_sub(persisted)
}
#[cfg(not(feature = "capture-v1"))]
{
0
}
}
pub fn all_persisted(&self) -> bool {
self.not_persisted() == 0
}
#[cfg(feature = "capture-v1")]
pub fn event_results(&self) -> &HashMap<Uuid, EventResult> {
&self.results
}
}