use scion_sdk_token_validator::validator::Token;
use serde::Deserialize;
use snap_dataplane::{dispatcher::Dispatcher, tunnel_gateway::dispatcher::TunnelGatewayDispatcher};
use crate::network::local::receivers::Receiver;
pub struct TunnelGatewayReceiver<T>
where
T: for<'de> Deserialize<'de> + Token,
{
dispatcher: TunnelGatewayDispatcher<T>,
}
impl<T> TunnelGatewayReceiver<T>
where
T: for<'de> Deserialize<'de> + Token,
{
pub fn new(dispatcher: TunnelGatewayDispatcher<T>) -> Self {
Self { dispatcher }
}
}
impl<T> Receiver for TunnelGatewayReceiver<T>
where
T: for<'de> Deserialize<'de> + Token,
{
fn receive_packet(&self, packet: scion_proto::packet::ScionPacketRaw) {
self.dispatcher.try_dispatch(packet);
}
}