use async_trait::async_trait;
use crate::entities::Endpoint;
use crate::error::HarnessError;
use std::net::SocketAddr;
use super::Collector;
#[async_trait]
pub trait Server: Send + Sync + Clone {
async fn run<C, F>(
&self,
endpoints: Vec<Endpoint>,
collector: C,
on_ready: Option<F>,
) -> Result<C::Output, HarnessError>
where
C: Collector + 'static,
F: FnOnce(SocketAddr) + Send + 'static;
}