use std::net::SocketAddr;
use crate::types::ProxyInfo;
pub trait HeaderValidator: Send + Sync + 'static {
fn validate(
&self,
header: &ProxyInfo,
peer_addr: SocketAddr,
) -> Result<(), Box<dyn std::error::Error + Send + Sync>>;
}
impl<F> HeaderValidator for F
where
F: Fn(&ProxyInfo, SocketAddr) -> Result<(), Box<dyn std::error::Error + Send + Sync>>
+ Send
+ Sync
+ 'static,
{
fn validate(
&self,
header: &ProxyInfo,
peer_addr: SocketAddr,
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
self(header, peer_addr)
}
}