use crate::packet::ReceiveMetadata;
use crate::subscription::SubscriptionId;
use bytes::Bytes;
use std::net::IpAddr;
#[derive(Debug, Clone)]
pub struct RawPacket {
pub subscription_id: SubscriptionId,
pub datagram: Bytes,
pub source_ip: Option<IpAddr>,
pub group: Option<IpAddr>,
pub ip_protocol: Option<u8>,
pub metadata: ReceiveMetadata,
}
impl RawPacket {
pub fn datagram_len(&self) -> usize {
self.datagram.len()
}
pub fn datagram(&self) -> &[u8] {
&self.datagram
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn raw_packet_datagram_len_returns_correct_length() {
let packet = RawPacket {
subscription_id: SubscriptionId(1),
datagram: Bytes::from_static(&[0x45, 0, 0, 1]),
source_ip: None,
group: None,
ip_protocol: Some(17),
metadata: ReceiveMetadata::empty(),
};
assert_eq!(packet.datagram_len(), 4);
}
}