1use clap::{Args, Parser};
2use clap_verbosity_flag::Verbosity;
3use std::{net::SocketAddr, path::PathBuf};
4
5#[derive(Parser, Debug)]
6#[command(version, about)]
7pub struct UserArgs {
8 #[clap(short = 'a', long = "bind-addr", default_value = "127.0.0.1:7001")]
10 pub bind_addr: SocketAddr,
11
12 #[clap(flatten)]
13 pub cert: CertGroup,
14
15 #[clap(flatten)]
16 pub log: LogArgs,
17
18 #[clap(long = "stateless-retry")]
20 pub stateless_retry: bool,
21
22 #[clap(long = "keylog")]
24 pub keylog: bool,
25
26 #[clap(long = "max-idle-timeout", default_value_t = 15000, value_parser = clap::value_parser!(u32))]
28 pub max_idle_timeout: u32,
29
30 #[clap(flatten)]
32 pub verbose: Verbosity,
33}
34
35#[derive(Args, Debug)]
36pub struct CertGroup {
37 #[clap(long, default_value = "certs/server/ca.der")]
39 pub ca: PathBuf,
40 #[clap(
42 short = 'k',
43 long = "key",
44 default_value = "certs/server/localhost.key.der"
45 )]
46 pub key: PathBuf,
47 #[clap(
49 short = 'c',
50 long = "cert",
51 default_value = "certs/server/localhost.der"
52 )]
53 pub cert: PathBuf,
54}
55
56#[derive(Args, Debug)]
57pub struct LogArgs {
58 #[clap(long, default_value = "logs/")]
60 pub log_segments_directory: PathBuf,
61
62 #[clap(long, default_value_t = 300_000)]
64 pub log_cleaner_interval: u64,
65
66 #[clap(long, default_value_t = 100_000)]
68 pub log_maximum_entries: u32,
69
70 #[clap(long)]
72 pub flush_policy_num_writes: Option<u64>,
73
74 #[clap(long, default_value_t = 3000)]
76 pub flush_policy_interval: u64,
77
78 #[clap(long, default_value_t = 25)]
80 pub subscriber_polling_interval: u64,
81}