use sciparse::address::ip_socket_addr::ScionSocketIpAddr;
#[async_trait::async_trait]
pub trait GenericScionUdpSocket: Send + Sync + 'static {
async fn send_to(
&self,
payload: &[u8],
destination: ScionSocketIpAddr,
) -> Result<(), BoxedSocketError>;
async fn recv_from(
&self,
buf: &mut [u8],
) -> Result<(usize, ScionSocketIpAddr), BoxedSocketError>;
fn local_addr(&self) -> ScionSocketIpAddr;
}
pub trait SocketError: std::error::Error + Send + Sync + 'static {}
impl<T: std::error::Error + Send + Sync + 'static> SocketError for T {}
pub type BoxedSocketError = Box<dyn SocketError>;