pub mod client;
pub mod server;
use std::net::SocketAddr;
use std::sync::Arc;
use tokio::task::JoinHandle;
use self::server::signals::Halted;
use crate::common::AppData;
use crate::config::Tsl;
use crate::web::api;
pub enum Version {
V1,
}
pub struct Running {
pub socket_addr: SocketAddr,
pub halt_task: tokio::sync::oneshot::Sender<Halted>,
pub task: JoinHandle<Result<(), std::io::Error>>,
}
#[must_use]
pub async fn start(
app_data: Arc<AppData>,
config_bind_address: SocketAddr,
opt_tsl: Option<Tsl>,
implementation: &Version,
) -> api::Running {
match implementation {
Version::V1 => server::start(app_data, config_bind_address, opt_tsl).await,
}
}