use crate::HostConfig;
use origin_app::Application;
use std::sync::Arc;
use tokio_util::sync::CancellationToken;
#[derive(Debug)]
pub struct OriginState {
application: Arc<Application>,
config: HostConfig,
scheduler: CancellationToken,
}
impl OriginState {
pub(crate) fn new(
application: Application,
config: HostConfig,
scheduler: CancellationToken,
) -> Self {
Self {
application: Arc::new(application),
config,
scheduler,
}
}
pub fn shutdown(&self) {
self.scheduler.cancel();
}
pub fn application(&self) -> Arc<Application> {
self.application.clone()
}
pub fn config(&self) -> &HostConfig {
&self.config
}
}