Skip to main content

ccs_proxy/
state.rs

1use crate::capture::CaptureEvent;
2use crate::provider::ProviderKind;
3use crate::session::SessionId;
4use crate::store::Store;
5use std::sync::Arc;
6use tokio::sync::broadcast;
7use url::Url;
8
9#[derive(Clone)]
10pub struct AppState {
11    pub store: Arc<dyn Store>,
12    pub events: broadcast::Sender<CaptureEvent>,
13    pub provider: ProviderKind,
14    pub upstream: Url,
15    pub session_id: SessionId,
16    pub started_at: chrono::DateTime<chrono::Utc>,
17    pub redact: bool,
18}
19
20impl AppState {
21    pub fn new(
22        store: Arc<dyn Store>,
23        provider: ProviderKind,
24        upstream: Url,
25        session_id: SessionId,
26        redact: bool,
27    ) -> Self {
28        let (tx, _) = broadcast::channel(1024);
29        Self {
30            store,
31            events: tx,
32            provider,
33            upstream,
34            session_id,
35            started_at: chrono::Utc::now(),
36            redact,
37        }
38    }
39}