aha_misc/tavern/
option.rs1use std::path::PathBuf;
4
5use clap::Args;
6
7#[derive(Debug, Clone, Copy)]
9pub enum Protocol {
10 Tcp,
12 Udp,
14}
15
16#[derive(Args, Debug)]
21pub struct NetworkClientOptions {
22 #[arg(long, default_value = "tcp")]
24 pub protocol: String,
25
26 #[arg(long, default_value = "127.0.0.1")]
28 pub host: String,
29
30 #[arg(long, default_value = "13337")]
32 pub port: u16,
33
34 #[arg(long, default_value = "100000")]
36 pub sleep: u64,
37
38 #[arg(long, default_value = "10")]
40 pub try_time: u64,
41}
42
43impl NetworkClientOptions {
44 pub fn protocol(&self) -> Protocol {
52 match self.protocol.as_str() {
53 "tcp" => Protocol::Tcp,
54 "udp" => Protocol::Udp,
55 _ => panic!("Invalid protocol specified"),
56 }
57 }
58
59 pub fn address(&self) -> String {
61 format!("{}:{}", self.host, self.port)
62 }
63}
64
65#[derive(Args, Debug)]
70pub struct SSLOptions {
71 #[arg(long = "cert-file")]
73 pub cert_file: Option<PathBuf>,
74
75 #[arg(long = "key-file")]
77 pub key_file: Option<PathBuf>,
78}
79
80impl SSLOptions {
81 pub fn cert_file(&self) -> Option<String> {
83 self.cert_file
84 .clone()
85 .map(|p| p.to_str().unwrap().to_string())
86 }
87
88 pub fn key_file(&self) -> Option<String> {
90 self.key_file
91 .clone()
92 .map(|p| p.to_str().unwrap().to_string())
93 }
94}