Skip to content

Commit f3e4bd8

Browse files
committed
Add command-line arguments to server binary
1 parent 620a81c commit f3e4bd8

3 files changed

Lines changed: 147 additions & 6 deletions

File tree

Cargo.lock

Lines changed: 127 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ jsonpath-rust = "0.7"
1515
tokio = { version = "1.49.0", features = ["full"] }
1616
async-trait = "0.1.89"
1717
futures = "0.3.31"
18+
clap = { version = "4.5.54", features = ["derive"] }
1819

1920
[dev-dependencies]
2021
tempfile = "3.10.1"

src/main.rs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use async_trait::async_trait;
2+
use clap::Parser;
23
use futures::stream;
34
use pgwire::api::Type;
45
use pgwire::api::auth::StartupHandler;
@@ -24,6 +25,19 @@ use crate::db::DB;
2425
use crate::parser as argus_parser;
2526
use crate::query::{Statement, execute_plan};
2627

28+
/// ArgusDB Server
29+
#[derive(Parser, Debug)]
30+
#[command(author, version, about, long_about = None)]
31+
struct Args {
32+
/// Host to bind to
33+
#[arg(short, long, default_value = "127.0.0.1")]
34+
host: String,
35+
36+
/// Port to bind to
37+
#[arg(short, long, default_value_t = 5432)]
38+
port: u16,
39+
}
40+
2741
pub struct ArgusHandler {
2842
db: Arc<Mutex<DB>>,
2943
}
@@ -142,22 +156,21 @@ impl PgWireServerHandlers for ArgusProcessor {
142156

143157
#[tokio::main]
144158
async fn main() {
159+
let args = Args::parse();
145160
let db = Arc::new(Mutex::new(DB::new("argus_data")));
146161
let handler = Arc::new(ArgusHandler::new(db));
147162
let processor = Arc::new(ArgusProcessor { handler });
148163

149-
let server_addr = "127.0.0.1:5432";
150-
let listener = TcpListener::bind(server_addr).await.unwrap();
164+
let server_addr = format!("{}:{}", args.host, args.port);
165+
let listener = TcpListener::bind(&server_addr).await.unwrap();
151166
println!("ArgusDB server listening on {}", server_addr);
152167

153168
loop {
154169
let (socket, _) = listener.accept().await.unwrap();
155170
let processor = processor.clone();
156171

157172
tokio::spawn(async move {
158-
process_socket(socket, None, processor)
159-
.await
160-
.expect("Failed to process socket");
173+
let _ = process_socket(socket, None, processor).await;
161174
});
162175
}
163-
}
176+
}

0 commit comments

Comments
 (0)