use zerocopy::{FromBytes, Immutable, IntoBytes, KnownLayout, Unaligned};
use crate::{
Nonce,
frame::{Body, FrameType},
};
#[derive(
Debug, Copy, Clone, PartialEq, KnownLayout, Immutable, IntoBytes, FromBytes, Unaligned,
)]
#[repr(C, packed)]
pub struct ServerInfo {
pub nonce: Nonce,
}
impl Body for ServerInfo {
const FRAME_TYPE: FrameType = FrameType::ServerInfo;
}
#[derive(Debug, Copy, Clone, Default, serde::Deserialize)]
#[serde(rename_all = "camelCase", default)]
pub struct ServerInfoPayload {
pub version: i32,
pub token_bucket_bytes_per_second: Option<i32>,
pub token_bucket_bytes_burst: Option<i32>,
}
impl ServerInfoPayload {
pub fn token_bucket_bytes_per_second(&self) -> Option<usize> {
self.token_bucket_bytes_per_second.map(|v| v as usize)
}
pub fn token_bucket_bytes_burst(&self) -> Option<usize> {
self.token_bucket_bytes_burst.map(|v| v as usize)
}
pub fn version(&self) -> usize {
self.version as usize
}
}