pub struct PacketHeader {
pub version: u8,
pub flags: u8,
pub kind: PacketKind,
pub sequence: u32,
pub ack: u32,
pub ack_bits: u32,
pub payload_len: u16,
}Expand description
Fixed-size header that precedes every packet on the wire.
Wire layout (20 bytes):
[0..4] magic PEMP
[4] version u8
[5] flags u8 (bits: 0-1 compression, 2 reliable, 3 ordered, 4 fragmented, 5-7 reserved)
[6..8] kind u16 big-endian
[8..12] sequence u32 big-endian
[12..16] ack u32 big-endian
[16..20] ack_bits u32 big-endian
[20..22] payload_len u16 big-endianTotal header: 22 bytes.
Fields§
§version: u8§flags: u8§kind: PacketKind§sequence: u32§ack: u32§ack_bits: u32§payload_len: u16Implementations§
Source§impl PacketHeader
impl PacketHeader
pub const SIZE: usize = 22
Sourcepub const FLAG_RELIABLE: u8 = 0b0000_0100
pub const FLAG_RELIABLE: u8 = 0b0000_0100
Flag bit: payload is reliable (must be acked).
Sourcepub const FLAG_ORDERED: u8 = 0b0000_1000
pub const FLAG_ORDERED: u8 = 0b0000_1000
Flag bit: channel is ordered.
Sourcepub const FLAG_FRAGMENTED: u8 = 0b0001_0000
pub const FLAG_FRAGMENTED: u8 = 0b0001_0000
Flag bit: packet is a fragment of a larger message.
Sourcepub fn compression(&self) -> Result<CompressionHint, ProtocolError>
pub fn compression(&self) -> Result<CompressionHint, ProtocolError>
Extract compression hint from flags bits 0-1.
pub fn is_reliable(&self) -> bool
pub fn is_ordered(&self) -> bool
pub fn is_fragmented(&self) -> bool
Trait Implementations§
Source§impl Clone for PacketHeader
impl Clone for PacketHeader
Source§fn clone(&self) -> PacketHeader
fn clone(&self) -> PacketHeader
Returns a duplicate 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 PacketHeader
impl Debug for PacketHeader
Source§impl PartialEq for PacketHeader
impl PartialEq for PacketHeader
impl Eq for PacketHeader
impl StructuralPartialEq for PacketHeader
Auto Trait Implementations§
impl Freeze for PacketHeader
impl RefUnwindSafe for PacketHeader
impl Send for PacketHeader
impl Sync for PacketHeader
impl Unpin for PacketHeader
impl UnsafeUnpin for PacketHeader
impl UnwindSafe for PacketHeader
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<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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.