use std::any::Any;
use rocketmq_model::common::message::message_enum::MessageRequestMode;
pub trait MessageRequest: MessageRequestAny {
fn get_message_request_mode(&self) -> MessageRequestMode;
fn retained_bytes(&self) -> usize {
std::mem::size_of_val(self)
}
}
pub trait MessageRequestAny: Any {
fn as_any_mut(&mut self) -> &mut dyn Any;
fn as_any(&self) -> &dyn Any;
fn into_any(self: Box<Self>) -> Box<dyn Any + Send>;
}
impl<T: MessageRequest + Send> MessageRequestAny for T {
fn as_any_mut(&mut self) -> &mut dyn Any {
self
}
fn as_any(&self) -> &dyn Any {
self
}
fn into_any(self: Box<Self>) -> Box<dyn Any + Send> {
self
}
}