use scion_proto::{packet::ScionPacketRaw, wire_encoding::WireEncodeVec};
use sciparse::{core::view::View, packet::view::ScionPacketView};
use snap_dataplane::{dispatcher::Dispatcher, tunnel_gateway::dispatcher::TunnelGatewayDispatcher};
pub mod router_socket;
pub trait Receiver: Sync + Send {
fn receive_packet(&self, packet: ScionPacketRaw);
}
impl Receiver for TunnelGatewayDispatcher {
fn receive_packet(&self, packet: ScionPacketRaw) {
let bytes = packet.encode_to_bytes_vec().concat();
match ScionPacketView::from_slice(&bytes) {
Ok((view, _)) => self.try_dispatch(view),
Err(e) => {
tracing::debug!(error=?e, "TunnelGatewayDispatcher: failed to parse ScionPacketRaw as view");
}
}
}
}