use crate::{
SpopFrame,
frame::{FrameFlags, FramePayload, FrameType, Metadata},
types::TypedData,
};
use std::{borrow::Cow, collections::HashMap};
#[derive(Debug)]
pub struct AgentDisconnect {
pub status_code: u32,
pub message: String,
}
impl SpopFrame for AgentDisconnect {
fn frame_type(&self) -> &FrameType {
&FrameType::AgentDisconnect
}
fn metadata(&self) -> Cow<'_, Metadata> {
Cow::Owned(Metadata {
flags: FrameFlags::new(true, false), stream_id: 0,
frame_id: 0,
})
}
fn payload(&self) -> FramePayload<'_> {
let mut map = HashMap::new();
map.insert(
"status-code".to_string(),
TypedData::UInt32(self.status_code),
);
map.insert(
"message".to_string(),
TypedData::String(self.message.clone()),
);
FramePayload::KVList(map)
}
}