Message

Struct Message 

Source
pub struct Message<'arrays, 'innards> { /* private fields */ }
Expand description

The message for a DNS query.

Implementations§

Source§

impl<'arrays, 'innards> Message<'arrays, 'innards>

Source

pub fn new( id: u16, flags: Flags, questions: &'arrays mut [Question<'innards>], answers: &'arrays mut [ResourceRecord<'innards>], authorities: &'arrays mut [ResourceRecord<'innards>], additional: &'arrays mut [ResourceRecord<'innards>], ) -> Message<'arrays, 'innards>

Create a new message from a set of buffers for each section.

§Panics

This function panics if the number of questions, answers, authorities, or additional records is greater than u16::MAX.

Source

pub fn id(&self) -> u16

Get the ID of this message.

Source

pub fn id_mut(&mut self) -> &mut u16

Get a mutable reference to the ID of this message.

Source

pub fn header(&self) -> Header

Get the header of this message.

Source

pub fn flags(&self) -> Flags

Get the flags for this message.

Source

pub fn flags_mut(&mut self) -> &mut Flags

Get a mutable reference to the flags for this message.

Source

pub fn questions(&self) -> &[Question<'innards>]

Get the questions in this message.

Source

pub fn questions_mut(&mut self) -> &mut [Question<'innards>]

Get a mutable reference to the questions in this message.

Source

pub fn answers(&self) -> &[ResourceRecord<'innards>]

Get the answers in this message.

Source

pub fn answers_mut(&mut self) -> &mut [ResourceRecord<'innards>]

Get a mutable reference to the answers in this message.

Source

pub fn authorities(&self) -> &[ResourceRecord<'innards>]

Get the authorities in this message.

Source

pub fn authorities_mut(&mut self) -> &mut [ResourceRecord<'innards>]

Get a mutable reference to the authorities in this message.

Source

pub fn additional(&self) -> &[ResourceRecord<'innards>]

Get the additional records in this message.

Source

pub fn additional_mut(&mut self) -> &mut [ResourceRecord<'innards>]

Get a mutable reference to the additional records in this message.

Source

pub fn space_needed(&self) -> usize

Get the buffer space needed to serialize this message.

Source

pub fn write(&self, buffer: &mut [u8]) -> Result<usize, Error>

Write this message to a buffer.

Returns the number of bytes written.

§Errors

This function may raise Error::NameTooLong if a Label is too long to be serialized.

§Panics

This function panics if the buffer is not large enough to hold the serialized message. This panic can be avoided by ensuring the buffer contains at least [space_needed] bytes.

Source

pub fn read( buffer: &'innards [u8], questions: &'arrays mut [Question<'innards>], answers: &'arrays mut [ResourceRecord<'innards>], authorities: &'arrays mut [ResourceRecord<'innards>], additional: &'arrays mut [ResourceRecord<'innards>], ) -> Result<Message<'arrays, 'innards>, Error>

Read a message from a buffer.

§Errors

This function may raise one of the following errors:

  • Error::NotEnoughReadBytes if the buffer is not large enough to hold the entire structure. You may need to read more data before calling this function again.
  • Error::NotEnoughWriteSpace if the buffers provided are not large enough to hold the entire structure. You may need to allocate larger buffers before calling this function.
  • Error::InvalidUtf8 if a domain name contains invalid UTF-8.
  • Error::NameTooLong if a domain name is too long to be deserialized.
  • Error::InvalidCode if a domain name contains an invalid label code.

Trait Implementations§

Source§

impl Debug for Message<'_, '_>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'arrays, 'innards> Default for Message<'arrays, 'innards>

Source§

fn default() -> Message<'arrays, 'innards>

Returns the “default value” for a type. Read more
Source§

impl<'innards> Deserialize<'innards> for Message<'_, 'innards>

Source§

fn deserialize( &mut self, cursor: Cursor<'innards>, ) -> Result<Cursor<'innards>, Error>

Deserialize this object from a series of bytes.
Source§

impl<'arrays, 'innards> Hash for Message<'arrays, 'innards>

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<'arrays, 'innards> Ord for Message<'arrays, 'innards>

Source§

fn cmp(&self, other: &Message<'arrays, 'innards>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<'arrays, 'innards> PartialEq for Message<'arrays, 'innards>

Source§

fn eq(&self, other: &Message<'arrays, 'innards>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'arrays, 'innards> PartialOrd for Message<'arrays, 'innards>

Source§

fn partial_cmp(&self, other: &Message<'arrays, 'innards>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<'innards> Serialize<'innards> for Message<'_, 'innards>

Source§

fn serialized_len(&self) -> usize

The number of bytes needed to serialize this object.
Source§

fn serialize(&self, bytes: &mut [u8]) -> Result<usize, Error>

Serialize this object into a series of bytes.
Source§

impl<'arrays, 'innards> Eq for Message<'arrays, 'innards>

Source§

impl<'arrays, 'innards> StructuralPartialEq for Message<'arrays, 'innards>

Auto Trait Implementations§

§

impl<'arrays, 'innards> Freeze for Message<'arrays, 'innards>

§

impl<'arrays, 'innards> RefUnwindSafe for Message<'arrays, 'innards>

§

impl<'arrays, 'innards> Send for Message<'arrays, 'innards>

§

impl<'arrays, 'innards> Sync for Message<'arrays, 'innards>

§

impl<'arrays, 'innards> Unpin for Message<'arrays, 'innards>

§

impl<'arrays, 'innards> !UnwindSafe for Message<'arrays, 'innards>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.