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                      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

(from https://tools.ietf.org/html/draft-gg-udt-03)

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: boolmessage_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

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Performs the conversion.

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Compare self to key and return true if they are equal.

Performs the conversion.

Performs the conversion.

Should always be Self

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.