1
0
mirror of https://git.ngram.ca/OpenJam/rc-servers synced 2026-08-23 23:08:52 +00:00

Change single connection mode to CLI arg instead of forced in debug mode

This commit is contained in:
NGnius (Graham)
2025-03-16 09:30:45 -04:00
parent ec565e904b
commit 792585a031
18 changed files with 81 additions and 81 deletions

View File

@@ -1,3 +1,3 @@
#!/bin/bash
RUST_BACKTRACE=1 RUST_LOG=debug cargo run
RUST_BACKTRACE=1 RUST_LOG=debug cargo run -- -1

View File

@@ -11,9 +11,9 @@ pub struct CliArgs {
#[arg(long, default_value_t = {"127.0.0.1".to_string()})]
pub ip: String,
/// Socket read tries before giving up (0 to never give up)
#[arg(long, default_value_t = 5)]
pub retries: usize,
/// Handle one connection and then exit
#[arg(short = '1', long)]
pub once: bool,
}
impl CliArgs {

View File

@@ -18,26 +18,26 @@ async fn main() -> std::io::Result<()> {
let args = cli::CliArgs::get();
log::debug!("Got cli args {:?}", args);
let server = polariton_server::Server::new(operations::handler());
let server = std::sync::Arc::new(polariton_server::Server::new(operations::handler()));
let ip_addr: std::net::IpAddr = args.ip.parse().expect("Invalid IP address");
let listener = net::TcpListener::bind(std::net::SocketAddr::new(ip_addr, args.port)).await?;
#[cfg(not(debug_assertions))]
loop {
if args.once {
log::warn!("Handling first connection and then exiting");
let (socket, address) = listener.accept().await?;
tokio::spawn(process_socket(socket, address, &server));
}
#[cfg(debug_assertions)]
{
let (socket, address) = listener.accept().await?;
process_socket(socket, address, &server).await;
process_socket(socket, address, server).await;
Ok(())
} else {
loop {
let (socket, address) = listener.accept().await?;
tokio::spawn(process_socket(socket, address, server.clone()));
}
}
}
async fn process_socket(mut socket: net::TcpStream, address: std::net::SocketAddr, server: &polariton_server::Server<crate::UserTy, crate::data::custom::CustomType>) {
async fn process_socket(mut socket: net::TcpStream, address: std::net::SocketAddr, server: std::sync::Arc<polariton_server::Server<crate::UserTy, crate::data::custom::CustomType>>) {
log::debug!("Accepting connection from address {}", address);
let enc = match do_connect_handshake(&mut socket).await {
Some(x) => x,