use crate::{error::Error, shared::SseSessionRegistry, types::Message};
use dashmap::DashMap;
use std::sync::Arc;
use tokio::sync::{mpsc, oneshot};
pub(crate) type RequestMap = Arc<DashMap<crate::types::RequestId, oneshot::Sender<Message>>>;
#[derive(Clone, Debug)]
pub struct HttpContext {
pub(crate) addr: Arc<str>,
pub(crate) endpoint: Arc<str>,
pub(crate) pending: RequestMap,
pub(crate) sse_registry: Arc<SseSessionRegistry>,
pub(crate) inbound_tx: mpsc::Sender<Result<Message, Error>>,
pub(crate) sse_live_queue_capacity: usize,
pub(crate) sse_log_queue_capacity: usize,
}
impl HttpContext {
pub fn addr(&self) -> &str {
&self.addr
}
pub fn endpoint(&self) -> &str {
&self.endpoint
}
}