use async_channel::{Receiver, Sender};
use stratum_apps::utils::types::Sv2Frame;
use tracing::debug;
#[derive(Debug, Clone)]
pub struct UpstreamChannelState {
pub upstream_receiver: Receiver<Sv2Frame>,
pub upstream_sender: Sender<Sv2Frame>,
pub channel_manager_sender: Sender<Sv2Frame>,
pub channel_manager_receiver: Receiver<Sv2Frame>,
}
#[cfg_attr(not(test), hotpath::measure_all)]
impl UpstreamChannelState {
pub fn new(
upstream_receiver: Receiver<Sv2Frame>,
upstream_sender: Sender<Sv2Frame>,
channel_manager_sender: Sender<Sv2Frame>,
channel_manager_receiver: Receiver<Sv2Frame>,
) -> Self {
Self {
upstream_receiver,
upstream_sender,
channel_manager_sender,
channel_manager_receiver,
}
}
pub fn drop(&self) {
debug!("Closing all upstream channels");
self.upstream_receiver.close();
self.upstream_receiver.close();
}
}