use crate::application::doctor::finding::{Axis, Finding};
use crate::domain::error::WireResult;
use crate::infrastructure::storage::SqliteStorage;
pub struct ProbeCtx<'a> {
pub storage: &'a SqliteStorage,
pub persona_filter: Option<String>,
}
#[derive(Default)]
pub struct FindingSink {
items: Vec<Finding>,
}
impl FindingSink {
pub fn new() -> Self {
Self { items: Vec::new() }
}
pub fn push(&mut self, f: Finding) {
self.items.push(f);
}
pub fn into_vec(self) -> Vec<Finding> {
self.items
}
}
pub trait Probe: Send + Sync {
fn axis(&self) -> Axis;
fn scan(&self, ctx: &ProbeCtx, sink: &mut FindingSink) -> WireResult<()>;
}