use crate::v4::error::Result;
use serde::{Deserialize, Serialize};
#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct MaxMessage(u16);
impl MaxMessage {
pub fn new(size: u16) -> Result<Self> {
if size < 576 {
return Err("Maximum message size must be at least 576");
}
Ok(Self(size))
}
#[inline]
pub fn extend_into(&self, bytes: &mut Vec<u8>, tag: u8) {
bytes.push(tag); bytes.push(2); bytes.extend_from_slice(&self.0.to_be_bytes()); }
}
impl From<&[u8]> for MaxMessage {
fn from(value: &[u8]) -> Self {
let bytes: [u8; 2] = value.try_into().unwrap();
Self(u16::from_be_bytes(bytes))
}
}