pub struct PvaPacket {
pub header: PvaHeader,
pub payload: Vec<u8>,
}Fields§
§header: PvaHeader§payload: Vec<u8>Implementations§
Source§impl PvaPacket
impl PvaPacket
Sourcepub fn new(raw: &[u8]) -> Self
pub fn new(raw: &[u8]) -> Self
Examples found in repository?
examples/decode_packet.rs (line 16)
3fn main() {
4 // A minimal PVA Connection Validation packet (little-endian):
5 // Header (8 bytes): magic=0xCA, version=2, flags=0x00 (LE, app, client), command=1
6 // Payload (9 bytes): buffer_size=16384(u32) + introspection_registry_size=0x7fff(u16) + qos=0(u16) + authz=""
7 let raw: &[u8] = &[
8 0xCA, 0x02, 0x00, 0x01, // header: magic, version, flags (LE), command 1
9 0x09, 0x00, 0x00, 0x00, // payload length = 9
10 0x00, 0x40, 0x00, 0x00, // buffer_size = 16384
11 0xFF, 0x7F, // introspection_registry_size = 32767
12 0x00, 0x00, // qos = 0
13 0x00, // authz = "" (empty string, size=0)
14 ];
15
16 let mut packet = PvaPacket::new(raw);
17
18 println!("Header:");
19 println!(" magic: 0x{:02X}", packet.header.magic);
20 println!(" version: {}", packet.header.version);
21 println!(" command: {}", packet.header.command);
22 println!(" payload: {} bytes", packet.header.payload_length);
23 println!(" endian: {}", if packet.header.flags.is_msb { "big" } else { "little" });
24
25 if let Some(cmd) = packet.decode_payload() {
26 match cmd {
27 PvaPacketCommand::ConnectionValidation(cv) => {
28 println!("\nConnectionValidation:");
29 println!(" buffer_size: {}", cv.buffer_size);
30 println!(" intro_reg: {}", cv.introspection_registry_size);
31 println!(" qos: {}", cv.qos);
32 println!(" authz: {:?}", cv.authz);
33 }
34 other => println!("Decoded: {other:?}"),
35 }
36 } else {
37 eprintln!("Failed to decode payload");
38 }
39}Sourcepub fn decode_payload(&mut self) -> Option<PvaPacketCommand>
pub fn decode_payload(&mut self) -> Option<PvaPacketCommand>
Examples found in repository?
examples/decode_packet.rs (line 25)
3fn main() {
4 // A minimal PVA Connection Validation packet (little-endian):
5 // Header (8 bytes): magic=0xCA, version=2, flags=0x00 (LE, app, client), command=1
6 // Payload (9 bytes): buffer_size=16384(u32) + introspection_registry_size=0x7fff(u16) + qos=0(u16) + authz=""
7 let raw: &[u8] = &[
8 0xCA, 0x02, 0x00, 0x01, // header: magic, version, flags (LE), command 1
9 0x09, 0x00, 0x00, 0x00, // payload length = 9
10 0x00, 0x40, 0x00, 0x00, // buffer_size = 16384
11 0xFF, 0x7F, // introspection_registry_size = 32767
12 0x00, 0x00, // qos = 0
13 0x00, // authz = "" (empty string, size=0)
14 ];
15
16 let mut packet = PvaPacket::new(raw);
17
18 println!("Header:");
19 println!(" magic: 0x{:02X}", packet.header.magic);
20 println!(" version: {}", packet.header.version);
21 println!(" command: {}", packet.header.command);
22 println!(" payload: {} bytes", packet.header.payload_length);
23 println!(" endian: {}", if packet.header.flags.is_msb { "big" } else { "little" });
24
25 if let Some(cmd) = packet.decode_payload() {
26 match cmd {
27 PvaPacketCommand::ConnectionValidation(cv) => {
28 println!("\nConnectionValidation:");
29 println!(" buffer_size: {}", cv.buffer_size);
30 println!(" intro_reg: {}", cv.introspection_registry_size);
31 println!(" qos: {}", cv.qos);
32 println!(" authz: {:?}", cv.authz);
33 }
34 other => println!("Decoded: {other:?}"),
35 }
36 } else {
37 eprintln!("Failed to decode payload");
38 }
39}pub fn is_valid(&self) -> bool
Trait Implementations§
Auto Trait Implementations§
impl Freeze for PvaPacket
impl RefUnwindSafe for PvaPacket
impl Send for PvaPacket
impl Sync for PvaPacket
impl Unpin for PvaPacket
impl UnsafeUnpin for PvaPacket
impl UnwindSafe for PvaPacket
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