use std::any::TypeId;
use std::sync::Arc;
use tracing::*;
use crate::traits::ActonMessage;
#[derive(Debug, Clone)]
pub struct BrokerRequest {
pub message: Arc<dyn ActonMessage + Send + Sync + 'static>,
pub message_type_name: String,
pub message_type_id: TypeId,
}
impl BrokerRequest {
pub fn new<M: ActonMessage + Send + Sync + 'static>(message: M) -> Self {
let message_type_name = std::any::type_name_of_val(&message).to_string();
let message_type_id = message.type_id();
let message = Arc::new(message);
trace!(
message_type_name = message_type_name,
"BroadcastEnvelope::new() message_type_id: {:?}",
message_type_id
);
Self {
message,
message_type_id,
message_type_name,
}
}
}