Skip to content

Commit e2924a2

Browse files
committed
primitives - Config:
- use a module for Duration (de)serialize
1 parent 443ce40 commit e2924a2

File tree

1 file changed

+13
-39
lines changed

1 file changed

+13
-39
lines changed

primitives/src/config.rs

+13-39
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use crate::{
44
util::ApiUrl,
55
Address, BigNum, ChainOf, ValidatorId,
66
};
7-
use duration::{milliseconds_to_std_duration, std_duration_to_milliseconds};
87
use once_cell::sync::Lazy;
98
use serde::{Deserialize, Serialize};
109
use std::{collections::HashMap, num::NonZeroU8, time::Duration};
@@ -78,10 +77,7 @@ pub struct Config {
7877
/// finish before running a new tick in the Validator Worker.
7978
///
8079
/// In milliseconds
81-
#[serde(
82-
deserialize_with = "milliseconds_to_std_duration",
83-
serialize_with = "std_duration_to_milliseconds"
84-
)]
80+
#[serde(with = "std_duration_millis")]
8581
pub wait_time: Duration,
8682
/// The maximum allowed limit of [`ValidatorMessage`](crate::sentry::ValidatorMessage)s per page
8783
/// returned by Sentry's GET `/v5/channel/0xXXX.../validator-messages` route.
@@ -112,18 +108,12 @@ pub struct Config {
112108
/// - GET `/v5/analytics/for-admin`
113109
///
114110
/// In milliseconds
115-
#[serde(
116-
deserialize_with = "milliseconds_to_std_duration",
117-
serialize_with = "std_duration_to_milliseconds"
118-
)]
111+
#[serde(with = "std_duration_millis")]
119112
pub analytics_maxtime: Duration,
120113
/// The amount of time that should have passed before sending a new heartbeat.
121114
///
122115
/// In milliseconds
123-
#[serde(
124-
deserialize_with = "milliseconds_to_std_duration",
125-
serialize_with = "std_duration_to_milliseconds"
126-
)]
116+
#[serde(with = "std_duration_millis")]
127117
pub heartbeat_time: Duration,
128118
/// The pro miles below which the [`ApproveState`](crate::validator::ApproveState)
129119
/// becomes **unhealthy** in the [`Channel`](crate::Channel)'s Follower.
@@ -142,10 +132,7 @@ pub struct Config {
142132
/// to a validator.
143133
///
144134
/// In milliseconds
145-
#[serde(
146-
deserialize_with = "milliseconds_to_std_duration",
147-
serialize_with = "std_duration_to_milliseconds"
148-
)]
135+
#[serde(with = "std_duration_millis")]
149136
pub propagation_timeout: Duration,
150137
/// The Client timeout for `SentryApi`.
151138
///
@@ -155,29 +142,20 @@ pub struct Config {
155142
/// [`Config.propagation_timeout`](Config::propagation_timeout).
156143
///
157144
/// In milliseconds
158-
#[serde(
159-
deserialize_with = "milliseconds_to_std_duration",
160-
serialize_with = "std_duration_to_milliseconds"
161-
)]
145+
#[serde(with = "std_duration_millis")]
162146
pub fetch_timeout: Duration,
163147
/// The Client timeout for `SentryApi` when collecting all channels
164148
/// and Validators using the `/campaign/list` route.
165149
///
166150
/// In milliseconds
167-
#[serde(
168-
deserialize_with = "milliseconds_to_std_duration",
169-
serialize_with = "std_duration_to_milliseconds"
170-
)]
151+
#[serde(with = "std_duration_millis")]
171152
pub all_campaigns_timeout: Duration,
172153
/// The timeout for a single tick of a [`Channel`](crate::Channel) in
173154
/// the Validator Worker.
174155
/// This timeout is applied to both the leader and follower ticks.
175156
///
176157
/// In milliseconds
177-
#[serde(
178-
deserialize_with = "milliseconds_to_std_duration",
179-
serialize_with = "std_duration_to_milliseconds"
180-
)]
158+
#[serde(with = "std_duration_millis")]
181159
pub channel_tick_timeout: Duration,
182160
/// The default IP rate limit that will be imposed if
183161
/// [`Campaign.event_submission`](crate::Campaign::event_submission) is [`None`].
@@ -236,10 +214,7 @@ impl Config {
236214
#[derive(Serialize, Deserialize, Debug, Clone)]
237215
pub struct PlatformConfig {
238216
pub url: ApiUrl,
239-
#[serde(
240-
deserialize_with = "milliseconds_to_std_duration",
241-
serialize_with = "std_duration_to_milliseconds"
242-
)]
217+
#[serde(with = "std_duration_millis")]
243218
pub keep_alive_interval: Duration,
244219
}
245220

@@ -277,11 +252,13 @@ pub struct Limits {
277252
pub units_for_slot: limits::UnitsForSlot,
278253
}
279254

280-
pub mod duration {
255+
/// Module for [`Config`] (de)serialization of [`std::time::Duration`] from
256+
/// and to milliseconds.
257+
pub mod std_duration_millis {
281258
use serde::{Deserialize, Deserializer, Serializer};
282259
use std::time::Duration;
283260

284-
pub fn milliseconds_to_std_duration<'de, D>(deserializer: D) -> Result<Duration, D::Error>
261+
pub fn deserialize<'de, D>(deserializer: D) -> Result<Duration, D::Error>
285262
where
286263
D: Deserializer<'de>,
287264
{
@@ -298,10 +275,7 @@ pub mod duration {
298275
Ok(Duration::from_millis(milliseconds))
299276
}
300277

301-
pub fn std_duration_to_milliseconds<S>(
302-
duration: &Duration,
303-
serializer: S,
304-
) -> Result<S::Ok, S::Error>
278+
pub fn serialize<S>(duration: &Duration, serializer: S) -> Result<S::Ok, S::Error>
305279
where
306280
S: Serializer,
307281
{

0 commit comments

Comments
 (0)