Skip to content

Commit 04c34a7

Browse files
committed
master: refactor default config values
1 parent 4b09e36 commit 04c34a7

File tree

1 file changed

+21
-86
lines changed

1 file changed

+21
-86
lines changed

master/src/config.rs

Lines changed: 21 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ use thiserror::Error;
1010
use xash3d_protocol::{admin, filter::Version};
1111

1212
pub const DEFAULT_MASTER_SERVER_IP: IpAddr = IpAddr::V4(Ipv4Addr::UNSPECIFIED);
13-
1413
pub const DEFAULT_MASTER_SERVER_PORT: u16 = 27010;
14+
1515
pub const DEFAULT_CHALLENGE_TIMEOUT: u32 = 10;
1616
pub const DEFAULT_SERVER_TIMEOUT: u32 = 300;
1717
pub const DEFAULT_ADMIN_TIMEOUT: u32 = 10;
@@ -20,6 +20,9 @@ pub const DEFAULT_MAX_SERVERS_PER_IP: u16 = 14;
2020

2121
pub const DEFAULT_HASH_LEN: usize = admin::HASH_LEN;
2222

23+
pub const DEFAULT_SERVER_MIN_VERSION: Version = Version::with_patch(0, 19, 2);
24+
pub const DEFAULT_CLIENT_MIN_VERSION: Version = Version::new(0, 19);
25+
2326
// Disabled if zero.
2427
pub const DEFAULT_MIN_ENGINE_BUILDNUM: u32 = 0;
2528

@@ -30,19 +33,6 @@ pub const DEFAULT_MIN_ENGINE_BUILDNUM: u32 = 0;
3033
// Disabled if zero.
3134
pub const DEFAULT_MIN_OLD_ENGINE_BUILDNUM: u32 = 3500;
3235

33-
macro_rules! impl_helpers {
34-
($($f:ident: $t:ty),+$(,)?) => (
35-
$(const fn $f<const N: $t>() -> $t { N })+
36-
);
37-
}
38-
39-
impl_helpers! {
40-
default_bool: bool,
41-
default_u16: u16,
42-
default_u32: u32,
43-
default_usize: usize,
44-
}
45-
4636
#[derive(Debug, Error)]
4737
pub enum Error {
4838
#[error(transparent)]
@@ -54,45 +44,40 @@ pub enum Error {
5444
#[derive(Clone, Default, Deserialize, Debug)]
5545
#[serde(deny_unknown_fields)]
5646
#[serde(rename_all = "kebab-case")]
47+
#[serde(default)]
5748
pub struct Config {
58-
#[serde(default)]
5949
pub log: LogConfig,
6050
#[serde(flatten)]
6151
pub master: MasterConfig,
62-
#[serde(default)]
6352
pub stat: StatConfig,
6453
}
6554

6655
#[derive(Clone, Default, Deserialize, Debug)]
6756
#[serde(deny_unknown_fields)]
6857
#[serde(rename_all = "kebab-case")]
58+
#[serde(default)]
6959
pub struct MasterConfig {
70-
#[serde(default)]
7160
pub server: ServerConfig,
72-
#[serde(default)]
7361
pub client: ClientConfig,
74-
#[serde(default)]
7562
pub hash: HashConfig,
7663
#[serde(rename = "admin")]
77-
#[serde(default)]
7864
pub admin_list: Box<[AdminConfig]>,
7965
}
8066

8167
#[derive(Clone, Deserialize, Debug)]
8268
#[serde(deny_unknown_fields)]
8369
#[serde(rename_all = "kebab-case")]
70+
#[serde(default)]
8471
pub struct LogConfig {
85-
#[serde(default = "default_log_level")]
8672
#[serde(deserialize_with = "deserialize_log_level")]
8773
pub level: LevelFilter,
88-
#[serde(default = "default_bool::<true>")]
8974
pub time: bool,
9075
}
9176

9277
impl Default for LogConfig {
9378
fn default() -> Self {
9479
Self {
95-
level: default_log_level(),
80+
level: LevelFilter::Info,
9681
time: true,
9782
}
9883
}
@@ -101,27 +86,23 @@ impl Default for LogConfig {
10186
#[derive(Clone, Deserialize, Debug)]
10287
#[serde(deny_unknown_fields)]
10388
#[serde(rename_all = "kebab-case")]
89+
#[serde(default)]
10490
pub struct ServerConfig {
105-
#[serde(default = "default_server_ip")]
10691
pub ip: IpAddr,
107-
#[serde(default = "default_u16::<DEFAULT_MASTER_SERVER_PORT>")]
10892
pub port: u16,
109-
#[serde(default = "default_u16::<DEFAULT_MAX_SERVERS_PER_IP>")]
11093
pub max_servers_per_ip: u16,
111-
#[serde(default = "default_server_version")]
11294
#[serde(deserialize_with = "deserialize_version")]
11395
pub min_version: Version,
114-
#[serde(default)]
11596
pub timeout: TimeoutConfig,
11697
}
11798

11899
impl Default for ServerConfig {
119100
fn default() -> Self {
120101
Self {
121-
ip: default_server_ip(),
102+
ip: DEFAULT_MASTER_SERVER_IP,
122103
port: DEFAULT_MASTER_SERVER_PORT,
123104
max_servers_per_ip: DEFAULT_MAX_SERVERS_PER_IP,
124-
min_version: default_server_version(),
105+
min_version: DEFAULT_SERVER_MIN_VERSION,
125106
timeout: Default::default(),
126107
}
127108
}
@@ -130,12 +111,10 @@ impl Default for ServerConfig {
130111
#[derive(Clone, Deserialize, Debug)]
131112
#[serde(deny_unknown_fields)]
132113
#[serde(rename_all = "kebab-case")]
114+
#[serde(default)]
133115
pub struct TimeoutConfig {
134-
#[serde(default = "default_u32::<DEFAULT_CHALLENGE_TIMEOUT>")]
135116
pub challenge: u32,
136-
#[serde(default = "default_u32::<DEFAULT_SERVER_TIMEOUT>")]
137117
pub server: u32,
138-
#[serde(default = "default_u32::<DEFAULT_ADMIN_TIMEOUT>")]
139118
pub admin: u32,
140119
}
141120

@@ -152,30 +131,25 @@ impl Default for TimeoutConfig {
152131
#[derive(Clone, Deserialize, Debug)]
153132
#[serde(deny_unknown_fields)]
154133
#[serde(rename_all = "kebab-case")]
134+
#[serde(default)]
155135
pub struct ClientConfig {
156-
#[serde(default = "default_client_version")]
157136
#[serde(deserialize_with = "deserialize_version")]
158137
pub min_version: Version,
159-
#[serde(default = "default_u32::<DEFAULT_MIN_ENGINE_BUILDNUM>")]
160138
pub min_engine_buildnum: u32,
161-
#[serde(default = "default_u32::<DEFAULT_MIN_OLD_ENGINE_BUILDNUM>")]
162139
pub min_old_engine_buildnum: u32,
163-
#[serde(default = "default_client_update_map")]
164140
pub update_map: Box<str>,
165-
#[serde(default = "default_client_update_title")]
166141
pub update_title: Box<str>,
167-
#[serde(default)]
168142
pub update_addr: Option<Box<str>>,
169143
}
170144

171145
impl Default for ClientConfig {
172146
fn default() -> Self {
173147
Self {
174-
min_version: default_client_version(),
148+
min_version: DEFAULT_CLIENT_MIN_VERSION,
175149
min_engine_buildnum: DEFAULT_MIN_ENGINE_BUILDNUM,
176150
min_old_engine_buildnum: DEFAULT_MIN_OLD_ENGINE_BUILDNUM,
177-
update_map: default_client_update_map(),
178-
update_title: default_client_update_title(),
151+
update_map: Box::from("Update please"),
152+
update_title: Box::from("https://github.com/FWGS/xash3d-fwgs"),
179153
update_addr: None,
180154
}
181155
}
@@ -184,21 +158,19 @@ impl Default for ClientConfig {
184158
#[derive(Clone, Deserialize, Debug)]
185159
#[serde(deny_unknown_fields)]
186160
#[serde(rename_all = "kebab-case")]
161+
#[serde(default)]
187162
pub struct HashConfig {
188-
#[serde(default = "default_usize::<DEFAULT_HASH_LEN>")]
189163
pub len: usize,
190-
#[serde(default = "default_hash_key")]
191164
pub key: Box<str>,
192-
#[serde(default = "default_hash_personal")]
193165
pub personal: Box<str>,
194166
}
195167

196168
impl Default for HashConfig {
197169
fn default() -> Self {
198170
Self {
199171
len: DEFAULT_HASH_LEN,
200-
key: default_hash_key(),
201-
personal: default_hash_personal(),
172+
key: Box::from(admin::HASH_KEY),
173+
personal: Box::from(admin::HASH_PERSONAL),
202174
}
203175
}
204176
}
@@ -214,58 +186,21 @@ pub struct AdminConfig {
214186
#[derive(Clone, Deserialize, Debug)]
215187
#[serde(deny_unknown_fields)]
216188
#[serde(rename_all = "kebab-case")]
189+
#[serde(default)]
217190
pub struct StatConfig {
218-
#[serde(default = "default_u32::<0>")]
219191
pub interval: u32,
220-
#[serde(default = "default_stats_format")]
221192
pub format: Box<str>,
222193
}
223194

224195
impl Default for StatConfig {
225196
fn default() -> Self {
226197
Self {
227198
interval: 0,
228-
format: default_stats_format(),
199+
format: Box::from("stats: %s servers, %a add/s, %d del/s, %q query/s, %e error/s"),
229200
}
230201
}
231202
}
232203

233-
fn default_log_level() -> LevelFilter {
234-
LevelFilter::Info
235-
}
236-
237-
fn default_server_ip() -> IpAddr {
238-
DEFAULT_MASTER_SERVER_IP
239-
}
240-
241-
fn default_client_version() -> Version {
242-
Version::new(0, 19)
243-
}
244-
245-
fn default_server_version() -> Version {
246-
Version::with_patch(0, 19, 2)
247-
}
248-
249-
fn default_client_update_map() -> Box<str> {
250-
Box::from("Update please")
251-
}
252-
253-
fn default_client_update_title() -> Box<str> {
254-
Box::from("https://github.com/FWGS/xash3d-fwgs")
255-
}
256-
257-
fn default_hash_key() -> Box<str> {
258-
Box::from(admin::HASH_KEY)
259-
}
260-
261-
fn default_hash_personal() -> Box<str> {
262-
Box::from(admin::HASH_PERSONAL)
263-
}
264-
265-
fn default_stats_format() -> Box<str> {
266-
Box::from("stats: %s servers, %a add/s, %d del/s, %q query/s, %e error/s")
267-
}
268-
269204
fn deserialize_log_level<'de, D>(de: D) -> Result<LevelFilter, D::Error>
270205
where
271206
D: Deserializer<'de>,

0 commit comments

Comments
 (0)