use std::sync::Mutex;
use dashmap::DashMap;
use tokio::sync::{mpsc, watch};
use crate::http::events::TransportEvent;
use crate::http::server::ServeHandle;
use super::stats::PathInfo;
pub(in crate::endpoint) struct SessionRuntime {
pub(in crate::endpoint) serve_handle: Mutex<Option<ServeHandle>>,
pub(in crate::endpoint) serve_done_rx: Mutex<Option<watch::Receiver<bool>>>,
pub(in crate::endpoint) closed_tx: watch::Sender<bool>,
pub(in crate::endpoint) closed_rx: watch::Receiver<bool>,
pub(in crate::endpoint) event_tx: mpsc::Sender<TransportEvent>,
pub(in crate::endpoint) event_rx: Mutex<Option<mpsc::Receiver<TransportEvent>>>,
pub(in crate::endpoint) path_subs: DashMap<String, mpsc::UnboundedSender<PathInfo>>,
}