use std::path::PathBuf;
use std::sync::Arc;
use arcbox_api::{SetupState, SharedRuntime};
use arcbox_constants::paths::HostLayout;
use tokio_util::sync::CancellationToken;
use crate::startup::DaemonLock;
pub struct EarlyContext {
pub layout: HostLayout,
pub shared_runtime: SharedRuntime,
pub setup_state: Arc<SetupState>,
pub shutdown: CancellationToken,
pub dns_domain: String,
pub dns_port: u16,
pub docker_integration: bool,
pub vm_args: VmArgs,
}
pub struct DaemonContext {
pub layout: HostLayout,
#[allow(dead_code)] pub daemon_lock: DaemonLock,
pub shared_runtime: SharedRuntime,
pub setup_state: Arc<SetupState>,
pub shutdown: CancellationToken,
pub dns_domain: String,
pub dns_port: u16,
pub docker_integration: bool,
pub vm_args: VmArgs,
}
pub struct VmArgs {
pub guest_docker_vsock_port: Option<u32>,
pub kernel: Option<PathBuf>,
}
pub struct ServiceHandles {
pub dns: tokio::task::JoinHandle<()>,
pub docker: tokio::task::JoinHandle<()>,
pub grpc: tokio::task::JoinHandle<()>,
pub kubernetes_proxy: Option<tokio::task::JoinHandle<()>>,
}