Skip to content

Commit df155fb

Browse files
author
pseusys
committed
format + clippy
1 parent be98890 commit df155fb

13 files changed

Lines changed: 91 additions & 58 deletions

File tree

typhoon/benches/roundtrip.rs

Lines changed: 16 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ use tokio::runtime::Runtime;
1111
use typhoon::bytes::StaticByteBuffer;
1212
use typhoon::certificate::ServerKeyPair;
1313
use typhoon::defaults::{DefaultClientConnectionHandler, DefaultExecutor, DefaultServerConnectionHandler};
14-
use typhoon::flow::config::{FakeBodyMode, FakeHeaderConfig};
1514
use typhoon::flow::FlowConfig;
15+
use typhoon::flow::config::{FakeBodyMode, FakeHeaderConfig};
1616
use typhoon::settings::SettingsBuilder;
1717
use typhoon::socket::{ClientSocketBuilder, ListenerBuilder, ServerFlowConfiguration};
1818

@@ -60,35 +60,23 @@ fn bench_batch(c: &mut Criterion) {
6060
let key_pair = load_or_generate_key();
6161
let certificate = key_pair.to_client_certificate(vec![addr]);
6262

63-
let listener = Arc::new(rt.block_on(async {
64-
ListenerBuilder::<StaticByteBuffer, DefaultExecutor, DefaultServerConnectionHandler>::new(key_pair, DefaultServerConnectionHandler)
65-
.add_flow(ServerFlowConfiguration::with_address(FlowConfig::random(&settings), addr))
66-
.with_settings(settings.clone())
67-
.build()
68-
.await
69-
.expect("listener")
70-
}));
63+
let listener = Arc::new(rt.block_on(async { ListenerBuilder::<StaticByteBuffer, DefaultExecutor, DefaultServerConnectionHandler>::new(key_pair, DefaultServerConnectionHandler).add_flow(ServerFlowConfiguration::with_address(FlowConfig::random(&settings), addr)).with_settings(settings.clone()).build().await.expect("listener") }));
7164
rt.block_on(async { listener.start().await });
7265

7366
let listener_echo = listener.clone();
7467
rt.spawn(async move {
7568
let client = listener_echo.accept().await.expect("accept");
7669
loop {
7770
match client.receive_bytes().await {
78-
Ok(data) => { let _ = client.send_bytes(&data).await; }
71+
Ok(data) => {
72+
let _ = client.send_bytes(&data).await;
73+
}
7974
Err(_) => break,
8075
}
8176
}
8277
});
8378

84-
let socket = rt.block_on(async {
85-
ClientSocketBuilder::<StaticByteBuffer, DefaultExecutor, DefaultClientConnectionHandler>::new(certificate, DefaultClientConnectionHandler)
86-
.with_flow_config(addr, FlowConfig::random(&settings))
87-
.with_settings(settings.clone())
88-
.build()
89-
.await
90-
.expect("socket")
91-
});
79+
let socket = rt.block_on(async { ClientSocketBuilder::<StaticByteBuffer, DefaultExecutor, DefaultClientConnectionHandler>::new(certificate, DefaultClientConnectionHandler).with_flow_config(addr, FlowConfig::random(&settings)).with_settings(settings.clone()).build().await.expect("socket") });
9280

9381
let payload: Vec<u8> = (0..BATCH_PAYLOAD).map(|i| (i % 256) as u8).collect();
9482
let mut group = c.benchmark_group("batch");
@@ -120,39 +108,31 @@ fn bench_single(c: &mut Criterion) {
120108
// service: true — data packets carry no fake body; random body only on health-check packets.
121109
// max_length = 128 keeps max_data_payload above SINGLE_PAYLOAD_MAX for all feature sets.
122110
let flow_config = FlowConfig::new(
123-
FakeBodyMode::Random { min_length: 0, max_length: 128, service: true },
111+
FakeBodyMode::Random {
112+
min_length: 0,
113+
max_length: 128,
114+
service: true,
115+
},
124116
FakeHeaderConfig::random(&settings),
125117
);
126118

127-
let listener = Arc::new(rt.block_on(async {
128-
ListenerBuilder::<StaticByteBuffer, DefaultExecutor, DefaultServerConnectionHandler>::new(key_pair, DefaultServerConnectionHandler)
129-
.add_flow(ServerFlowConfiguration::with_address(flow_config.clone(), addr))
130-
.with_settings(settings.clone())
131-
.build()
132-
.await
133-
.expect("listener")
134-
}));
119+
let listener = Arc::new(rt.block_on(async { ListenerBuilder::<StaticByteBuffer, DefaultExecutor, DefaultServerConnectionHandler>::new(key_pair, DefaultServerConnectionHandler).add_flow(ServerFlowConfiguration::with_address(flow_config.clone(), addr)).with_settings(settings.clone()).build().await.expect("listener") }));
135120
rt.block_on(async { listener.start().await });
136121

137122
let listener_echo = listener.clone();
138123
rt.spawn(async move {
139124
let client = listener_echo.accept().await.expect("accept");
140125
loop {
141126
match client.receive_bytes().await {
142-
Ok(data) => { let _ = client.send_bytes(&data).await; }
127+
Ok(data) => {
128+
let _ = client.send_bytes(&data).await;
129+
}
143130
Err(_) => break,
144131
}
145132
}
146133
});
147134

148-
let socket = Arc::new(rt.block_on(async {
149-
ClientSocketBuilder::<StaticByteBuffer, DefaultExecutor, DefaultClientConnectionHandler>::new(certificate, DefaultClientConnectionHandler)
150-
.with_flow_config(addr, flow_config)
151-
.with_settings(settings.clone())
152-
.build()
153-
.await
154-
.expect("socket")
155-
}));
135+
let socket = Arc::new(rt.block_on(async { ClientSocketBuilder::<StaticByteBuffer, DefaultExecutor, DefaultClientConnectionHandler>::new(certificate, DefaultClientConnectionHandler).with_flow_config(addr, flow_config).with_settings(settings.clone()).build().await.expect("socket") }));
156136

157137
let mut group = c.benchmark_group("single");
158138
group.bench_function("rtt", |b| {

typhoon/example/heavy_traffic.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ use tokio::time::sleep;
2020
use typhoon::bytes::StaticByteBuffer;
2121
use typhoon::certificate::ServerKeyPair;
2222
use typhoon::defaults::{AsyncExecutor, DefaultClientConnectionHandler, DefaultExecutor, DefaultServerConnectionHandler, decoy_factory};
23-
use typhoon::flow::decoy::{NoisyDecoyProvider, SmoothDecoyProvider, SparseDecoyProvider};
2423
use typhoon::flow::FlowConfig;
24+
use typhoon::flow::decoy::{NoisyDecoyProvider, SmoothDecoyProvider, SparseDecoyProvider};
2525
use typhoon::settings::SettingsBuilder;
2626
use typhoon::socket::{ClientSocketBuilder, ListenerBuilder, ServerFlowConfiguration};
2727

@@ -64,7 +64,16 @@ async fn run() {
6464
let key_pair = ServerKeyPair::generate();
6565
let certificate = key_pair.to_client_certificate(vec![flow1_addr, flow2_addr]);
6666

67-
let listener: Arc<_> = Arc::new(ListenerBuilder::<StaticByteBuffer, DefaultExecutor, DefaultServerConnectionHandler>::new(key_pair, DefaultServerConnectionHandler).add_flow(ServerFlowConfiguration::with_address(FlowConfig::random(&*settings), flow1_addr).with_decoy::<NoisyDecoyProvider<StaticByteBuffer, DefaultExecutor>>()).add_flow(ServerFlowConfiguration::with_address(FlowConfig::random(&*settings), flow2_addr).with_decoy::<SmoothDecoyProvider<StaticByteBuffer, DefaultExecutor>>()).add_flow(ServerFlowConfiguration::with_address(FlowConfig::random(&*settings), flow3_addr).with_decoy::<SparseDecoyProvider<StaticByteBuffer, DefaultExecutor>>()).with_settings(settings.clone()).build().await.expect("listener should build"));
67+
let listener: Arc<_> = Arc::new(
68+
ListenerBuilder::<StaticByteBuffer, DefaultExecutor, DefaultServerConnectionHandler>::new(key_pair, DefaultServerConnectionHandler)
69+
.add_flow(ServerFlowConfiguration::with_address(FlowConfig::random(&*settings), flow1_addr).with_decoy::<NoisyDecoyProvider<StaticByteBuffer, DefaultExecutor>>())
70+
.add_flow(ServerFlowConfiguration::with_address(FlowConfig::random(&*settings), flow2_addr).with_decoy::<SmoothDecoyProvider<StaticByteBuffer, DefaultExecutor>>())
71+
.add_flow(ServerFlowConfiguration::with_address(FlowConfig::random(&*settings), flow3_addr).with_decoy::<SparseDecoyProvider<StaticByteBuffer, DefaultExecutor>>())
72+
.with_settings(settings.clone())
73+
.build()
74+
.await
75+
.expect("listener should build"),
76+
);
6877
listener.start().await;
6978
println!("Server: listening on {flow1_addr}, {flow2_addr}, {flow3_addr} (client uses first two)");
7079

typhoon/src/capture.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,13 @@ impl CaptureContext {
4444
#[cfg(feature = "capture")]
4545
#[inline]
4646
pub(crate) fn new(flow_addr: SocketAddr) -> Self {
47-
Self { flow_addr }
47+
Self {
48+
flow_addr,
49+
}
4850
}
4951

5052
#[cfg(not(feature = "capture"))]
51-
#[inline(always)]
53+
#[inline]
5254
pub(crate) fn new(_: SocketAddr) -> Self {
5355
Self
5456
}
@@ -72,6 +74,7 @@ impl CaptureContext {
7274
);
7375
}
7476

77+
#[allow(clippy::unused_self)]
7578
#[cfg(not(feature = "capture"))]
7679
#[inline(always)]
7780
pub(crate) fn record_send<F>(&self, _: F)

typhoon/src/flow/client.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,7 @@ impl<T: IdentityType + Clone + 'static, AE: AsyncExecutor + 'static> ClientFlowM
3535
let manager_ref = Arc::new_cyclic(|m: &Weak<ClientFlowManager<T, AE>>| {
3636
let mgr: Weak<dyn DecoyFlowSender> = m.clone();
3737
let decoy = factory(mgr, settings.clone(), identity);
38-
record_flow_config(addr, "c2s", || {
39-
(config.fake_body_mode.description(), config.fake_header_mode.len(), decoy.name())
40-
});
38+
record_flow_config(addr, "c2s", || (config.fake_body_mode.description(), config.fake_header_mode.len(), decoy.name()));
4139
ClientFlowManager {
4240
decoy_provider: Mutex::new(decoy),
4341
send_internal: Mutex::new(FlowSendInternal {

typhoon/src/flow/common.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,13 @@ impl<CP: FlowCryptoProvider> FlowSendInternal<CP> {
113113
get_rng().fill(&mut full_packet.rebuffer_both(fake_header_len, full_packet_len));
114114

115115
self.capture.record_send(|| {
116-
let kind = if packet_flags.is_discardable() { "Decoy" } else if packet_flags.is_service() { "Service" } else { "Data" };
116+
let kind = if packet_flags.is_discardable() {
117+
"Decoy"
118+
} else if packet_flags.is_service() {
119+
"Service"
120+
} else {
121+
"Data"
122+
};
117123
(kind, full_tailor_len, CP::tailor_overhead(), fake_header_len, data_len, full_packet_len - fake_header_len)
118124
});
119125

typhoon/src/flow/config.rs

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,14 @@ impl FakeBodyMode {
4242
pub(crate) fn description(&self) -> String {
4343
match self {
4444
FakeBodyMode::Empty => "Empty".to_string(),
45-
FakeBodyMode::Random { min_length, max_length, service } => format!("Random({min_length}..{max_length},svc={service})"),
46-
FakeBodyMode::Constant { packet_length } => format!("Constant({packet_length})"),
45+
FakeBodyMode::Random {
46+
min_length,
47+
max_length,
48+
service,
49+
} => format!("Random({min_length}..{max_length},svc={service})"),
50+
FakeBodyMode::Constant {
51+
packet_length,
52+
} => format!("Constant({packet_length})"),
4753
}
4854
}
4955

@@ -205,18 +211,33 @@ impl FakeHeaderConfig {
205211
if rng.r#gen::<f64>() < header_prob {
206212
let min_len = settings.get(&keys::FAKE_HEADER_LENGTH_MIN) as usize;
207213
let max_len = settings.get(&keys::FAKE_HEADER_LENGTH_MAX) as usize;
208-
let len = if min_len >= max_len { max_len } else { rng.gen_range(min_len..=max_len) };
214+
let len = if min_len >= max_len {
215+
max_len
216+
} else {
217+
rng.gen_range(min_len..=max_len)
218+
};
209219
let fields = (0..len)
210220
.map(|_| {
211221
FieldTypeHolder::U8(match rng.gen_range(0u8..5) {
212222
0 => FieldType::Random,
213-
1 => FieldType::Constant { value: rng.r#gen::<u8>() },
214-
2 => FieldType::Volatile { value: rng.r#gen::<u8>(), change_probability: rng.gen_range(0.01..=0.20) },
223+
1 => FieldType::Constant {
224+
value: rng.r#gen::<u8>(),
225+
},
226+
2 => FieldType::Volatile {
227+
value: rng.r#gen::<u8>(),
228+
change_probability: rng.gen_range(0.01..=0.20),
229+
},
215230
3 => {
216231
let switch_timeout = rng.gen_range(1_000u64..=30_000);
217-
FieldType::Switching { value: rng.r#gen::<u8>(), next_switch: unix_timestamp_ms() + switch_timeout as u128, switch_timeout }
232+
FieldType::Switching {
233+
value: rng.r#gen::<u8>(),
234+
next_switch: unix_timestamp_ms() + switch_timeout as u128,
235+
switch_timeout,
236+
}
218237
}
219-
4 => FieldType::Incremental { value: rng.r#gen::<u8>() },
238+
4 => FieldType::Incremental {
239+
value: rng.r#gen::<u8>(),
240+
},
220241
_ => unreachable!(),
221242
})
222243
})

typhoon/src/flow/decoy/heavy.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,9 @@ impl<T: IdentityType + Clone, AE: AsyncExecutor> HeavyDecoyProvider<T, AE> {
100100
#[async_trait]
101101
impl<T: IdentityType + Clone + 'static, AE: AsyncExecutor + 'static> DecoyProvider for HeavyDecoyProvider<T, AE> {
102102
#[inline]
103-
fn name(&self) -> &'static str { "HeavyDecoyProvider" }
103+
fn name(&self) -> &'static str {
104+
"HeavyDecoyProvider"
105+
}
104106

105107
async fn start(&mut self) {
106108
let executor = {

typhoon/src/flow/decoy/noisy.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,9 @@ impl<T: IdentityType + Clone, AE: AsyncExecutor> NoisyDecoyProvider<T, AE> {
9898
#[async_trait]
9999
impl<T: IdentityType + Clone + 'static, AE: AsyncExecutor + 'static> DecoyProvider for NoisyDecoyProvider<T, AE> {
100100
#[inline]
101-
fn name(&self) -> &'static str { "NoisyDecoyProvider" }
101+
fn name(&self) -> &'static str {
102+
"NoisyDecoyProvider"
103+
}
102104

103105
async fn start(&mut self) {
104106
let executor = {

typhoon/src/flow/decoy/simple.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ pub struct SimpleDecoyProvider;
1515
#[async_trait]
1616
impl DecoyProvider for SimpleDecoyProvider {
1717
#[inline]
18-
fn name(&self) -> &'static str { "SimpleDecoyProvider" }
18+
fn name(&self) -> &'static str {
19+
"SimpleDecoyProvider"
20+
}
1921

2022
async fn start(&mut self) {}
2123

typhoon/src/flow/decoy/smooth.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,9 @@ impl<T: IdentityType + Clone, AE: AsyncExecutor> SmoothDecoyProvider<T, AE> {
102102
#[async_trait]
103103
impl<T: IdentityType + Clone + 'static, AE: AsyncExecutor + 'static> DecoyProvider for SmoothDecoyProvider<T, AE> {
104104
#[inline]
105-
fn name(&self) -> &'static str { "SmoothDecoyProvider" }
105+
fn name(&self) -> &'static str {
106+
"SmoothDecoyProvider"
107+
}
106108

107109
async fn start(&mut self) {
108110
let executor = {

0 commit comments

Comments
 (0)