Struct srt_protocol::packet::DataPacket
source · pub struct DataPacket {
pub seq_number: SeqNumber,
pub message_loc: PacketLocation,
pub in_order_delivery: bool,
pub encryption: DataEncryption,
pub retransmitted: bool,
pub message_number: MsgNumber,
pub timestamp: TimeStamp,
pub dest_sockid: SocketId,
pub payload: Bytes,
}Expand description
A UDT packet carrying data
ⓘ
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0| Packet Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|FF |O|K K|R| Message Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time Stamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Socket ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Fields§
§seq_number: SeqNumberThe sequence number is packet based, so if packet n has
sequence number i, the next would have i + 1
Represented by a 31 bit unsigned integer, so
Sequence number is wrapped after it recahed 2^31 - 1
message_loc: PacketLocationMessage location and delivery order Represented by the first two bits in the second row of 4 bytes
in_order_delivery: boolIn order delivery, the third bit in the second row of 4 bytes
encryption: DataEncryptionrow 2 bits 4+5, which key it’s encrypted with, if it is
retransmitted: bool§message_number: MsgNumberThe message number, is the ID of the message being passed Represented by the final 26 bits of the third row It’s only 26 bits long, so it’s wrapped after 2^26 - 1
timestamp: TimeStampThe timestamp, relative to when the connection was created.
dest_sockid: SocketIdThe dest socket id, used for UDP multiplexing
payload: BytesThe rest of the packet, the payload
Implementations§
source§impl DataPacket
impl DataPacket
pub const HEADER_SIZE: usize = 44usize
source§impl DataPacket
impl DataPacket
Trait Implementations§
source§impl Clone for DataPacket
impl Clone for DataPacket
source§fn clone(&self) -> DataPacket
fn clone(&self) -> DataPacket
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moresource§impl Debug for DataPacket
impl Debug for DataPacket
source§impl From<DataPacket> for Packet
impl From<DataPacket> for Packet
source§fn from(dp: DataPacket) -> Self
fn from(dp: DataPacket) -> Self
Converts to this type from the input type.
source§impl PartialEq<DataPacket> for DataPacket
impl PartialEq<DataPacket> for DataPacket
source§fn eq(&self, other: &DataPacket) -> bool
fn eq(&self, other: &DataPacket) -> bool
This method tests for
self and other values to be equal, and is used
by ==.impl Eq for DataPacket
impl StructuralEq for DataPacket
impl StructuralPartialEq for DataPacket
Auto Trait Implementations§
impl RefUnwindSafe for DataPacket
impl Send for DataPacket
impl Sync for DataPacket
impl Unpin for DataPacket
impl UnwindSafe for DataPacket
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.