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: SeqNumber
The 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: PacketLocation
Message location and delivery order Represented by the first two bits in the second row of 4 bytes
in_order_delivery: bool
In order delivery, the third bit in the second row of 4 bytes
encryption: DataEncryption
row 2 bits 4+5, which key it’s encrypted with, if it is
retransmitted: bool
§message_number: MsgNumber
The 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: TimeStamp
The timestamp, relative to when the connection was created.
dest_sockid: SocketId
The dest socket id, used for UDP multiplexing
payload: Bytes
The 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 for DataPacket
impl PartialEq for DataPacket
impl Eq for DataPacket
impl StructuralPartialEq for DataPacket
Auto Trait Implementations§
impl !Freeze for DataPacket
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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.