use ave_actors::ActorError;
use ave_network::CommandHelper as Command;
use tokio::sync::mpsc::Sender;
use tracing::error;
use super::NetworkMessage;
#[derive(Debug, Clone)]
pub struct NetworkSender {
command_sender: Sender<Command<NetworkMessage>>,
}
impl NetworkSender {
pub const fn new(command_sender: Sender<Command<NetworkMessage>>) -> Self {
Self { command_sender }
}
pub async fn send_command(
&self,
command: Command<NetworkMessage>,
) -> Result<(), ActorError> {
self.command_sender.send(command).await.map_err(|e| {
error!(
error = %e,
"Failed to send command to network worker"
);
ActorError::Functional {
description: e.to_string(),
}
})
}
pub fn sender(&self) -> Sender<Command<NetworkMessage>> {
self.command_sender.clone()
}
}