Struct trust_dns_proto::serialize::binary::BinDecoder [−][src]
pub struct BinDecoder<'a> { /* fields omitted */ }
Expand description
This is non-destructive to the inner buffer, b/c for pointer types we need to perform a reverse seek to lookup names
A note on serialization, there was a thought to have this implement the Serde deserializer, but given that this is such a small subset of all the serialization which that performs this is a simpler implementation without the cruft, at least for serializing to/from the binary DNS protocols.
Implementations
Pop one byte from the buffer
Returns the number of bytes in the buffer
use trust_dns_proto::serialize::binary::BinDecoder;
let deadbeef = b"deadbeef";
let mut decoder = BinDecoder::new(deadbeef);
assert_eq!(decoder.len(), 8);
decoder.read_slice(7).unwrap();
assert_eq!(decoder.len(), 1);
Peed one byte forward, without moving the current index forward
This is a pretty efficient clone, as the buffer is never cloned, and only the index is set to the value passed in
Reads a String from the buffer
<character-string> is a single
length octet followed by that number of characters. <character-string>
is treated as binary information, and can be up to 256 characters in
length (including the length octet).
Returns
A String version of the character data
pub fn read_character_data_max(
&mut self,
max_len: Option<usize>
) -> ProtoResult<Restrict<&[u8]>>
pub fn read_character_data_max(
&mut self,
max_len: Option<usize>
) -> ProtoResult<Restrict<&[u8]>>
Reads to a maximum length of data, returns an error if this is exceeded
Reads a slice from a previous index to the current
Reads a byte from the buffer, equivalent to Self::pop()
Reads the next 2 bytes into u16
This performs a byte-by-byte manipulation, there which means endianness is implicitly handled (i.e. no network to little endian (intel), issues)
Return
Return the u16 from the buffer
Reads the next four bytes into i32.
This performs a byte-by-byte manipulation, there which means endianness is implicitly handled (i.e. no network to little endian (intel), issues)
Return
Return the i32 from the buffer