use crate::{Buffer, DnsMessage, DnsMessageError, MutBuffer};
pub(crate) trait WriteBytes {
fn write<
const PTR_STORAGE: usize,
const DNS_SECTION: usize,
B: MutBuffer + Buffer,
>(&self, message: &mut DnsMessage<PTR_STORAGE, DNS_SECTION, B>) -> Result<usize, DnsMessageError>;
}
impl WriteBytes for u8 {
#[inline(always)]
fn write<
const PTR_STORAGE: usize,
const DNS_SECTION: usize,
B: MutBuffer + Buffer,
>(&self, message: &mut DnsMessage<PTR_STORAGE, DNS_SECTION, B>) -> Result<usize, DnsMessageError> {
message.write_bytes(&[*self])
}
}
impl WriteBytes for u16 {
#[inline(always)]
fn write<
const PTR_STORAGE: usize,
const DNS_SECTION: usize,
B: MutBuffer + Buffer,
>(&self, message: &mut DnsMessage<PTR_STORAGE, DNS_SECTION, B>) -> Result<usize, DnsMessageError> {
message.write_bytes(&self.to_be_bytes())
}
}
impl WriteBytes for u32 {
#[inline(always)]
fn write<
const PTR_STORAGE: usize,
const DNS_SECTION: usize,
B: MutBuffer + Buffer,
>(&self, message: &mut DnsMessage<PTR_STORAGE, DNS_SECTION, B>) -> Result<usize, DnsMessageError> {
message.write_bytes(&self.to_be_bytes())
}
}
impl WriteBytes for u64 {
#[inline(always)]
fn write<
const PTR_STORAGE: usize,
const DNS_SECTION: usize,
B: MutBuffer + Buffer,
>(&self, message: &mut DnsMessage<PTR_STORAGE, DNS_SECTION, B>) -> Result<usize, DnsMessageError> {
message.write_bytes(&self.to_be_bytes())
}
}
impl<const SIZE: usize> WriteBytes for [u8; SIZE] {
#[inline(always)]
fn write<
const PTR_STORAGE: usize,
const DNS_SECTION: usize,
B: MutBuffer + Buffer,
>(&self, message: &mut DnsMessage<PTR_STORAGE, DNS_SECTION, B>) -> Result<usize, DnsMessageError> {
message.write_bytes(self)
}
}