use super::http::HttpChannel;
use super::ws::WsChannel;
use crate::agent::AgentManager;
use std::sync::Arc;
use tokio::sync::RwLock;
pub struct ChannelManager {
agent_manager: Arc<RwLock<AgentManager>>,
http_channel: Arc<HttpChannel>,
ws_channel: Arc<WsChannel>,
}
impl ChannelManager {
pub fn new(agent_manager: Arc<RwLock<AgentManager>>) -> Self {
Self {
agent_manager: agent_manager.clone(),
http_channel: Arc::new(HttpChannel::new(agent_manager.clone())),
ws_channel: Arc::new(WsChannel::new(agent_manager)),
}
}
pub fn http(&self) -> Arc<HttpChannel> {
self.http_channel.clone()
}
pub fn ws(&self) -> Arc<WsChannel> {
self.ws_channel.clone()
}
pub fn agent_manager(&self) -> Arc<RwLock<AgentManager>> {
self.agent_manager.clone()
}
}