use crate::FlowStats;
use crate::analysis::L7Summary;
use crate::detect::{FlowRisk, IocMatch, RiskSeverity};
#[derive(Debug, Clone)]
#[non_exhaustive]
pub struct AnalyzedFlow<K> {
pub key: K,
pub stats: FlowStats,
pub l7: L7Summary,
pub risk: FlowRisk,
pub ioc_hits: Vec<IocMatch>,
}
impl<K> AnalyzedFlow<K> {
pub fn is_clean(&self) -> bool {
self.risk.is_empty() && self.ioc_hits.is_empty()
}
pub fn severity(&self) -> Option<RiskSeverity> {
self.risk.max_severity()
}
pub fn score(&self) -> u16 {
self.risk.score()
}
pub fn has_ioc(&self) -> bool {
!self.ioc_hits.is_empty()
}
}