stand up TCPServer interfaces from config file
This commit is contained in:
parent
a127562b16
commit
99c9b543f2
1 changed files with 25 additions and 5 deletions
30
src/main.rs
30
src/main.rs
|
|
@ -1,8 +1,11 @@
|
|||
use tokio::fs;
|
||||
|
||||
|
||||
use serde::{Serialize, Deserialize};
|
||||
use clap::Parser;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
// RETICULUM INCLUDES
|
||||
use reticulum::iface::tcp_server::TcpServer;
|
||||
use reticulum::transport::{Transport, TransportConfig};
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
struct TcpServerConfig {
|
||||
|
|
@ -11,7 +14,7 @@ struct TcpServerConfig {
|
|||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
enum InterfaceConfig {
|
||||
TcpServer(TcpServerConfig)
|
||||
TcpServer(TcpServerConfig),
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
|
|
@ -19,7 +22,6 @@ struct Config {
|
|||
interfaces: Vec<InterfaceConfig>,
|
||||
}
|
||||
|
||||
|
||||
#[derive(Parser)]
|
||||
struct Cli {
|
||||
#[arg(short, long)]
|
||||
|
|
@ -34,10 +36,28 @@ async fn main() {
|
|||
|
||||
let cli = Cli::parse();
|
||||
|
||||
let config: Config = toml::from_str(&fs::read_to_string(cli.config_file).await.unwrap()).unwrap();
|
||||
let config: Config =
|
||||
toml::from_str(&fs::read_to_string(cli.config_file).await.unwrap()).unwrap();
|
||||
|
||||
println!("{config:?}");
|
||||
|
||||
// set up the reticulum transport
|
||||
let transport = Transport::new(TransportConfig::default());
|
||||
|
||||
// set up interfaces
|
||||
for iface_config in config.interfaces {
|
||||
match iface_config {
|
||||
InterfaceConfig::TcpServer(cfg) => {
|
||||
let _ = transport.iface_manager().lock().await.spawn(
|
||||
TcpServer::new(cfg.bind_addr, transport.iface_manager()),
|
||||
TcpServer::spawn,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// run until exit
|
||||
let _ = tokio::signal::ctrl_c().await;
|
||||
|
||||
log::info!("exit");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue