Skip to content

Commit a7f0161

Browse files
authored
refactor(s2n-events): Move OutputMode into OutputConfig (#2803)
1 parent 4203885 commit a7f0161

File tree

7 files changed

+73
-61
lines changed

7 files changed

+73
-61
lines changed

tools/event-generator/src/main.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33

44
use proc_macro2::TokenStream;
55
use quote::quote;
6-
use s2n_events::{Output, OutputMode, Result, parser, validation};
6+
use s2n_events::{GenerateConfig, Output, OutputMode, Result, parser, validation};
77

88
struct EventInfo<'a> {
99
input_path: &'a str,
1010
output_path: &'a str,
1111
crate_name: &'a str,
12-
output_mode: OutputMode,
12+
generate_config: GenerateConfig,
1313
s2n_quic_core_path: TokenStream,
1414
api: TokenStream,
1515
builder: TokenStream,
@@ -61,7 +61,9 @@ impl EventInfo<'_> {
6161
env!("CARGO_MANIFEST_DIR"),
6262
"/../../quic/s2n-quic-core/src/event"
6363
),
64-
output_mode: OutputMode::Mut,
64+
generate_config: GenerateConfig {
65+
mode: OutputMode::Mut,
66+
},
6567
s2n_quic_core_path: quote!(crate),
6668
api: quote!(),
6769
builder: quote!(),
@@ -108,7 +110,9 @@ impl EventInfo<'_> {
108110
env!("CARGO_MANIFEST_DIR"),
109111
"/../../dc/s2n-quic-dc/src/event"
110112
),
111-
output_mode: OutputMode::Ref,
113+
generate_config: GenerateConfig {
114+
mode: OutputMode::Ref,
115+
},
112116
s2n_quic_core_path: quote!(s2n_quic_core),
113117
api: quote! {
114118
pub use s2n_quic_core::event::api::{
@@ -157,7 +161,7 @@ fn main() -> Result<()> {
157161
let root = root.canonicalize()?;
158162

159163
let mut output = Output {
160-
mode: event_info.output_mode,
164+
config: event_info.generate_config,
161165
s2n_quic_core_path: event_info.s2n_quic_core_path,
162166
api: event_info.api,
163167
builders: event_info.builder,

tools/s2n-events/src/output_mode.rs renamed to tools/s2n-events/src/generate_config.rs

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,51 +27,58 @@ impl OutputMode {
2727
OutputMode::Mut => quote!(mut),
2828
}
2929
}
30+
}
3031

32+
#[derive(Debug, Default)]
33+
pub struct GenerateConfig {
34+
pub mode: OutputMode,
35+
}
36+
37+
impl GenerateConfig {
3138
pub fn counter_type(&self) -> TokenStream {
32-
match self {
39+
match self.mode {
3340
OutputMode::Ref => quote!(AtomicU64),
3441
OutputMode::Mut => quote!(u64),
3542
}
3643
}
3744

3845
pub fn counter_init(&self) -> TokenStream {
39-
match self {
46+
match self.mode {
4047
OutputMode::Ref => quote!(AtomicU64::new(0)),
4148
OutputMode::Mut => quote!(0),
4249
}
4350
}
4451

4552
pub fn counter_increment(&self) -> TokenStream {
46-
match self {
53+
match self.mode {
4754
OutputMode::Ref => quote!(.fetch_add(1, Ordering::Relaxed)),
4855
OutputMode::Mut => quote!(+= 1),
4956
}
5057
}
5158

5259
pub fn counter_increment_by(&self, value: TokenStream) -> TokenStream {
53-
match self {
60+
match self.mode {
5461
OutputMode::Ref => quote!(.fetch_add(#value, Ordering::Relaxed)),
5562
OutputMode::Mut => quote!(+= #value),
5663
}
5764
}
5865

5966
pub fn counter_load(&self) -> TokenStream {
60-
match self {
67+
match self.mode {
6168
OutputMode::Ref => quote!(.load(Ordering::Relaxed)),
6269
OutputMode::Mut => quote!(),
6370
}
6471
}
6572

6673
pub fn lock(&self) -> TokenStream {
67-
match self {
74+
match self.mode {
6875
OutputMode::Ref => quote!(.lock().unwrap()),
6976
OutputMode::Mut => quote!(),
7077
}
7178
}
7279

7380
pub fn imports(&self) -> TokenStream {
74-
match self {
81+
match self.mode {
7582
OutputMode::Ref => quote!(
7683
use core::sync::atomic::{AtomicU64, Ordering};
7784
),
@@ -80,7 +87,7 @@ impl OutputMode {
8087
}
8188

8289
pub fn mutex(&self) -> TokenStream {
83-
match self {
90+
match self.mode {
8491
OutputMode::Ref => quote!(
8592
use std::sync::Mutex;
8693
),
@@ -89,21 +96,21 @@ impl OutputMode {
8996
}
9097

9198
pub fn testing_output_type(&self) -> TokenStream {
92-
match self {
99+
match self.mode {
93100
OutputMode::Ref => quote!(Mutex<Vec<String>>),
94101
OutputMode::Mut => quote!(Vec<String>),
95102
}
96103
}
97104

98105
pub fn trait_constraints(&self) -> TokenStream {
99-
match self {
106+
match self.mode {
100107
OutputMode::Ref => quote!('static + Send + Sync),
101108
OutputMode::Mut => quote!('static + Send),
102109
}
103110
}
104111

105112
pub fn query_mut(&self) -> TokenStream {
106-
match self {
113+
match self.mode {
107114
OutputMode::Ref => quote!(),
108115
OutputMode::Mut => quote!(
109116
/// Used for querying and mutating the `Subscriber::ConnectionContext` on a Subscriber
@@ -119,7 +126,7 @@ impl OutputMode {
119126
}
120127

121128
pub fn query_mut_tuple(&self) -> TokenStream {
122-
match self {
129+
match self.mode {
123130
OutputMode::Ref => quote!(),
124131
OutputMode::Mut => quote!(
125132
#[inline]
@@ -137,7 +144,7 @@ impl OutputMode {
137144
}
138145

139146
pub fn supervisor(&self) -> TokenStream {
140-
match self {
147+
match self.mode {
141148
OutputMode::Ref => quote!(),
142149
OutputMode::Mut => quote!(
143150
pub mod supervisor {
@@ -207,7 +214,7 @@ impl OutputMode {
207214
}
208215

209216
pub fn supervisor_timeout(&self) -> TokenStream {
210-
match self {
217+
match self.mode {
211218
OutputMode::Ref => quote!(),
212219
OutputMode::Mut => quote!(
213220
/// The period at which `on_supervisor_timeout` is called
@@ -250,7 +257,7 @@ impl OutputMode {
250257
}
251258

252259
pub fn supervisor_timeout_tuple(&self) -> TokenStream {
253-
match self {
260+
match self.mode {
254261
OutputMode::Ref => quote!(),
255262
OutputMode::Mut => quote!(
256263
#[inline]
@@ -303,7 +310,7 @@ impl OutputMode {
303310
}
304311

305312
pub fn ref_subscriber(&self, inner: TokenStream) -> TokenStream {
306-
match self {
313+
match self.mode {
307314
OutputMode::Ref => quote!(
308315
impl<T: Subscriber> Subscriber for std::sync::Arc<T> {
309316
#inner

tools/s2n-events/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: Apache-2.0
33

4+
mod generate_config;
45
mod output;
5-
mod output_mode;
66

77
pub mod parser;
88
pub mod validation;
99

10+
pub use generate_config::{GenerateConfig, OutputMode};
1011
pub use output::Output;
11-
pub use output_mode::OutputMode;
1212

1313
pub type Error = Box<dyn std::error::Error + Send + Sync>;
1414
pub type Result<T, E = Error> = core::result::Result<T, E>;

tools/s2n-events/src/output.rs

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: Apache-2.0
33

4-
use crate::{parser::File, OutputMode};
4+
use crate::{parser::File, GenerateConfig};
55
use proc_macro2::TokenStream;
66
use quote::{quote, ToTokens};
77
use std::path::{Path, PathBuf};
@@ -31,7 +31,7 @@ pub struct Output {
3131
pub endpoint_publisher_testing: TokenStream,
3232
pub connection_publisher_testing: TokenStream,
3333
pub extra: TokenStream,
34-
pub mode: OutputMode,
34+
pub config: GenerateConfig,
3535
pub crate_name: &'static str,
3636
pub s2n_quic_core_path: TokenStream,
3737
pub top_level: TokenStream,
@@ -110,26 +110,27 @@ impl ToTokens for Output {
110110
endpoint_publisher_testing,
111111
connection_publisher_testing,
112112
extra,
113-
mode,
113+
config: _,
114114
s2n_quic_core_path,
115115
top_level,
116116
feature_alloc: _,
117117
crate_name,
118118
root: _,
119119
} = self;
120120

121-
let imports = self.mode.imports();
122-
let mutex = self.mode.mutex();
123-
let testing_output_type = self.mode.testing_output_type();
124-
let lock = self.mode.lock();
125-
let supervisor = self.mode.supervisor();
126-
let supervisor_timeout = self.mode.supervisor_timeout();
127-
let supervisor_timeout_tuple = self.mode.supervisor_timeout_tuple();
128-
let query_mut = self.mode.query_mut();
129-
let query_mut_tuple = self.mode.query_mut_tuple();
130-
let trait_constraints = self.mode.trait_constraints();
131-
132-
let ref_subscriber = self.mode.ref_subscriber(quote!(
121+
let mode = &self.config.mode;
122+
let imports = self.config.imports();
123+
let mutex = self.config.mutex();
124+
let testing_output_type = self.config.testing_output_type();
125+
let lock = self.config.lock();
126+
let supervisor = self.config.supervisor();
127+
let supervisor_timeout = self.config.supervisor_timeout();
128+
let supervisor_timeout_tuple = self.config.supervisor_timeout_tuple();
129+
let query_mut = self.config.query_mut();
130+
let query_mut_tuple = self.config.query_mut_tuple();
131+
let trait_constraints = self.config.trait_constraints();
132+
133+
let ref_subscriber = self.config.ref_subscriber(quote!(
133134
type ConnectionContext = T::ConnectionContext;
134135

135136
#[inline]

tools/s2n-events/src/output/metrics.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ pub fn emit(output: &Output, files: &[File]) -> TokenStream {
1717
s.attrs.subject.is_connection()
1818
});
1919

20-
let mode = &output.mode;
21-
22-
let imports = output.mode.imports();
23-
let receiver = output.mode.receiver();
24-
let counter_increment = output.mode.counter_increment();
25-
let counter_type = output.mode.counter_type();
26-
let counter_init = output.mode.counter_init();
27-
let counter_load = output.mode.counter_load();
20+
let mode = &output.config.mode;
21+
22+
let imports = output.config.imports();
23+
let receiver = mode.receiver();
24+
let counter_increment = output.config.counter_increment();
25+
let counter_type = output.config.counter_type();
26+
let counter_init = output.config.counter_init();
27+
let counter_load = output.config.counter_load();
2828

2929
let mut fields = quote!();
3030
let mut init = quote!();

tools/s2n-events/src/output/metrics/aggregate.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ pub fn emit(output: &Output, files: &[File]) -> TokenStream {
2020
.filter(|s| s.attrs.event_name.is_some())
2121
.filter(|s| s.attrs.allow_deprecated.is_empty());
2222

23-
let mode = &output.mode;
24-
let counter_type = &output.mode.counter_type();
25-
let counter_increment = &output.mode.counter_increment();
26-
let counter_init = &output.mode.counter_init();
27-
let counter_load = &output.mode.counter_load();
23+
let mode = &output.config.mode;
24+
let counter_type = &output.config.counter_type();
25+
let counter_increment = &output.config.counter_increment();
26+
let counter_init = &output.config.counter_init();
27+
let counter_load = &output.config.counter_load();
2828

29-
let receiver = output.mode.receiver();
29+
let receiver = mode.receiver();
3030
let s2n_quic_core_path = &output.s2n_quic_core_path;
3131

3232
let mut subscriber = quote!();
@@ -241,7 +241,7 @@ pub fn emit(output: &Output, files: &[File]) -> TokenStream {
241241
let ctx_name = Ident::new(&format!("ctr_{id}"), Span::call_site());
242242

243243
let value = quote!(event.#field_name.as_u64());
244-
let counter_increment = output.mode.counter_increment_by(value);
244+
let counter_increment = output.config.counter_increment_by(value);
245245

246246
context_fields.extend(quote!(
247247
#ctx_name: #counter_type,
@@ -333,7 +333,7 @@ pub fn emit(output: &Output, files: &[File]) -> TokenStream {
333333
let nominal_timers_probes = nominal_timers.probe();
334334
let nominal_timers_len = nominal_timers.len;
335335
let info_len = info.len;
336-
let mut imports = output.mode.imports();
336+
let mut imports = output.config.imports();
337337

338338
if !output.feature_alloc.is_empty() {
339339
imports.extend(quote!(

tools/s2n-events/src/parser.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,8 @@ impl Struct {
190190
let publisher_doc =
191191
format!("Publishes a `{ident_str}` event to the publisher's subscriber");
192192

193-
let counter_type = output.mode.counter_type();
194-
let counter_init = output.mode.counter_init();
193+
let counter_type = output.config.counter_type();
194+
let counter_init = output.config.counter_init();
195195

196196
// add a counter for testing structs
197197
output.testing_fields.extend(quote!(
@@ -201,9 +201,9 @@ impl Struct {
201201
#counter: #counter_init,
202202
));
203203

204-
let receiver = output.mode.receiver();
205-
let counter_increment = output.mode.counter_increment();
206-
let lock = output.mode.lock();
204+
let receiver = output.config.mode.receiver();
205+
let counter_increment = output.config.counter_increment();
206+
let lock = output.config.lock();
207207

208208
match attrs.subject {
209209
Subject::Endpoint => {
@@ -227,7 +227,7 @@ impl Struct {
227227
}
228228
));
229229

230-
if output.mode.is_ref() {
230+
if output.config.mode.is_ref() {
231231
output.ref_subscriber.extend(quote!(
232232
#[inline]
233233
#allow_deprecated
@@ -329,7 +329,7 @@ impl Struct {
329329
}
330330
));
331331

332-
if output.mode.is_ref() {
332+
if output.config.mode.is_ref() {
333333
output.ref_subscriber.extend(quote!(
334334
#[inline]
335335
#allow_deprecated

0 commit comments

Comments
 (0)