Struct trust_dns_proto::serialize::binary::BinEncoder [−][src]
pub struct BinEncoder<'a> { /* fields omitted */ }
Encode DNS messages and resource record types.
Methods
impl<'a> BinEncoder<'a>
[src]
impl<'a> BinEncoder<'a>
pub fn new(buf: &'a mut Vec<u8>) -> Self
[src]
pub fn new(buf: &'a mut Vec<u8>) -> Self
Create a new encoder with the Vec to fill
pub fn with_mode(buf: &'a mut Vec<u8>, mode: EncodeMode) -> Self
[src]
pub fn with_mode(buf: &'a mut Vec<u8>, mode: EncodeMode) -> Self
Specify the mode for encoding
Arguments
mode
- In Signing mode, canonical forms of all data are encoded, otherwise format matches the source form
pub fn with_offset(buf: &'a mut Vec<u8>, offset: u32, mode: EncodeMode) -> Self
[src]
pub fn with_offset(buf: &'a mut Vec<u8>, offset: u32, mode: EncodeMode) -> Self
Begins the encoder at the given offset
This is used for pointers. If this encoder is starting at some point further in the sequence of bytes, for the proper offset of the pointer, the offset accounts for that by using the offset to add to the pointer location being written.
Arguments
offset
- index at which to start writing into the buffer
pub fn set_max_size(&mut self, max: u16)
[src]
pub fn set_max_size(&mut self, max: u16)
Sets the maximum size of the buffer
DNS message lens must be smaller than u16::max_value due to hard limits in the protocol
this method will move to the constructor in a future release
pub fn into_bytes(self) -> &'a Vec<u8>
[src]
pub fn into_bytes(self) -> &'a Vec<u8>
Returns a reference to the internal buffer
pub fn len(&self) -> usize
[src]
pub fn len(&self) -> usize
Returns the length of the buffer
pub fn is_empty(&self) -> bool
[src]
pub fn is_empty(&self) -> bool
Returns true
if the buffer is empty
pub fn offset(&self) -> usize
[src]
pub fn offset(&self) -> usize
Returns the current offset into the buffer
pub fn set_offset(&mut self, offset: usize)
[src]
pub fn set_offset(&mut self, offset: usize)
sets the current offset to the new offset
pub fn mode(&self) -> EncodeMode
[src]
pub fn mode(&self) -> EncodeMode
Returns the current Encoding mode
pub fn set_canonical_names(&mut self, canonical_names: bool)
[src]
pub fn set_canonical_names(&mut self, canonical_names: bool)
If set to true, then names will be written into the buffer in canonical form
pub fn is_canonical_names(&self) -> bool
[src]
pub fn is_canonical_names(&self) -> bool
Returns true if then encoder is writing in canonical form
pub fn reserve(&mut self, _additional: usize) -> ProtoResult<()>
[src]
pub fn reserve(&mut self, _additional: usize) -> ProtoResult<()>
Reserve specified additional length in the internal buffer.
pub fn trim(&mut self)
[src]
pub fn trim(&mut self)
trims to the current offset
pub fn slice_of(&self, start: usize, end: usize) -> &[u8]
[src]
pub fn slice_of(&self, start: usize, end: usize) -> &[u8]
borrow a slice from the encoder
pub fn store_label_pointer(&mut self, start: usize, end: usize)
[src]
pub fn store_label_pointer(&mut self, start: usize, end: usize)
Stores a label pointer to an already written label
The location is the current position in the buffer implicitly, it is expected that the name will be written to the stream after the current index.
pub fn get_label_pointer(&self, start: usize, end: usize) -> Option<u16>
[src]
pub fn get_label_pointer(&self, start: usize, end: usize) -> Option<u16>
Looks up the index of an already written label
pub fn emit(&mut self, b: u8) -> ProtoResult<()>
[src]
pub fn emit(&mut self, b: u8) -> ProtoResult<()>
Emit one byte into the buffer
pub fn emit_character_data<S: AsRef<[u8]>>(
&mut self,
char_data: S
) -> ProtoResult<()>
[src]
pub fn emit_character_data<S: AsRef<[u8]>>(
&mut self,
char_data: S
) -> ProtoResult<()>
matches description from above.
use trust_dns_proto::serialize::binary::BinEncoder; let mut bytes: Vec<u8> = Vec::new(); { let mut encoder: BinEncoder = BinEncoder::new(&mut bytes); encoder.emit_character_data("abc"); } assert_eq!(bytes, vec![3,b'a',b'b',b'c']);
pub fn emit_u8(&mut self, data: u8) -> ProtoResult<()>
[src]
pub fn emit_u8(&mut self, data: u8) -> ProtoResult<()>
Emit one byte into the buffer
pub fn emit_u16(&mut self, data: u16) -> ProtoResult<()>
[src]
pub fn emit_u16(&mut self, data: u16) -> ProtoResult<()>
Writes a u16 in network byte order to the buffer
pub fn emit_i32(&mut self, data: i32) -> ProtoResult<()>
[src]
pub fn emit_i32(&mut self, data: i32) -> ProtoResult<()>
Writes an i32 in network byte order to the buffer
pub fn emit_u32(&mut self, data: u32) -> ProtoResult<()>
[src]
pub fn emit_u32(&mut self, data: u32) -> ProtoResult<()>
Writes an u32 in network byte order to the buffer
pub fn emit_vec(&mut self, data: &[u8]) -> ProtoResult<()>
[src]
pub fn emit_vec(&mut self, data: &[u8]) -> ProtoResult<()>
Writes the byte slice to the stream
pub fn emit_all<'e, I: Iterator<Item = &'e E>, E: 'e + BinEncodable>(
&mut self,
iter: I
) -> ProtoResult<()>
[src]
pub fn emit_all<'e, I: Iterator<Item = &'e E>, E: 'e + BinEncodable>(
&mut self,
iter: I
) -> ProtoResult<()>
Emits all the elements of an Iterator to the encoder
pub fn emit_all_refs<'r, 'e, I, E>(&mut self, iter: I) -> ProtoResult<()> where
'e: 'r,
I: Iterator<Item = &'r &'e E>,
E: 'r + 'e + BinEncodable,
[src]
pub fn emit_all_refs<'r, 'e, I, E>(&mut self, iter: I) -> ProtoResult<()> where
'e: 'r,
I: Iterator<Item = &'r &'e E>,
E: 'r + 'e + BinEncodable,
Emits all the elements of an Iterator to the encoder
pub fn place<T: EncodedSize>(&mut self) -> ProtoResult<Place<T>>
[src]
pub fn place<T: EncodedSize>(&mut self) -> ProtoResult<Place<T>>
capture a location to write back to
pub fn len_since_place<T: EncodedSize>(&self, place: &Place<T>) -> usize
[src]
pub fn len_since_place<T: EncodedSize>(&self, place: &Place<T>) -> usize
calculates the length of data written since the place was creating
pub fn emit_at<T: EncodedSize>(
&mut self,
place: Place<T>,
data: T
) -> ProtoResult<()>
[src]
pub fn emit_at<T: EncodedSize>(
&mut self,
place: Place<T>,
data: T
) -> ProtoResult<()>
write back to a previously captured location
Auto Trait Implementations
impl<'a> Send for BinEncoder<'a>
impl<'a> Send for BinEncoder<'a>
impl<'a> Sync for BinEncoder<'a>
impl<'a> Sync for BinEncoder<'a>