use std::sync::Arc;
use axum::extract::FromRef;
use super::manage::ConfiguredHarnesses;
use super::share::Shares;
use super::tasks::ResponseStore;
use crate::state::SharedState;
#[derive(Clone)]
pub struct UhpState {
pub shared: SharedState,
pub store: Arc<ResponseStore>,
pub configured: Arc<ConfiguredHarnesses>,
pub shares: Arc<Shares>,
}
impl UhpState {
pub fn new(shared: SharedState) -> Self {
Self {
shared,
store: Arc::new(ResponseStore::default()),
configured: Arc::new(ConfiguredHarnesses::default()),
shares: Arc::new(Shares::default()),
}
}
}
impl FromRef<UhpState> for SharedState {
fn from_ref(state: &UhpState) -> Self {
state.shared.clone()
}
}