Skip to content

Commit faf7eba

Browse files
committed
Use better action match instead of adhoc if else
1 parent 9be3c63 commit faf7eba

File tree

4 files changed

+80
-81
lines changed

4 files changed

+80
-81
lines changed

pool-apps/pool/src/lib/channel_manager/mod.rs

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ use jd_server_sv2::job_declarator::JobDeclarator;
4545
use crate::{
4646
config::PoolConfig,
4747
downstream::Downstream,
48-
error::{self, PoolError, PoolErrorKind, PoolResult},
48+
error::{self, Action, PoolError, PoolErrorKind, PoolResult},
4949
utils::DownstreamMessage,
5050
};
5151

@@ -394,34 +394,34 @@ impl ChannelManager {
394394
res = cm_template.handle_template_provider_message() => {
395395
if let Err(e) = res {
396396
error!(error = ?e, "Error handling Template Receiver message");
397-
if e.is_shutdown() {
398-
cancellation_token.cancel();
399-
break;
400-
}
401-
402-
if e.is_disconnect() {
403-
cm_downstreams.remove_downstream(e.downstream_id());
404-
}
405-
406-
if e.is_log() {
407-
warn!("Log-only error from channel manager: {:?}", e.kind);
397+
match e.action {
398+
Action::Shutdown => {
399+
cancellation_token.cancel();
400+
break;
401+
}
402+
Action::Disconnect(downstream_id) => {
403+
cm_downstreams.remove_downstream(downstream_id);
404+
}
405+
Action::Log => {
406+
warn!("Log-only error from channel manager: {:?}", e.kind);
407+
}
408408
}
409409
}
410410
}
411411
res = cm_downstreams.handle_downstream_mining_message() => {
412412
if let Err(e) = res {
413413
error!(error = ?e, "Error handling Downstreams message");
414-
if e.is_shutdown() {
415-
cancellation_token.cancel();
416-
break;
417-
}
418-
419-
if e.is_disconnect() {
420-
cm_downstreams.remove_downstream(e.downstream_id());
421-
}
422-
423-
if e.is_log() {
424-
warn!("Log-only error from channel manager: {:?}", e.kind);
414+
match e.action {
415+
Action::Shutdown => {
416+
cancellation_token.cancel();
417+
break;
418+
}
419+
Action::Disconnect(downstream_id) => {
420+
cm_downstreams.remove_downstream(downstream_id);
421+
}
422+
Action::Log => {
423+
warn!("Log-only error from channel manager: {:?}", e.kind);
424+
}
425425
}
426426
}
427427
}

pool-apps/pool/src/lib/downstream/mod.rs

Lines changed: 38 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ use stratum_apps::{
3232
use tracing::{debug, error, warn};
3333

3434
use crate::{
35-
error::{self, PoolError, PoolErrorKind, PoolResult},
35+
error::{self, Action, PoolError, PoolErrorKind, PoolResult},
3636
io_task::spawn_io_tasks,
3737
utils::PayoutMode,
3838
};
@@ -175,14 +175,20 @@ impl Downstream {
175175
// before we break the TCP connection
176176
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
177177

178-
if e.is_disconnect() {
179-
self.downstream_connection_token.cancel();
180-
}
181-
182-
if e.is_shutdown() {
183-
cancellation_token.cancel();
178+
match e.action {
179+
Action::Shutdown => {
180+
cancellation_token.cancel();
181+
}
182+
Action::Disconnect(_) => {
183+
self.downstream_connection_token.cancel();
184+
}
185+
Action::Log => {
186+
warn!(
187+
"Log-only error from downstream {}: {:?}",
188+
self.downstream_id, e.kind
189+
);
190+
}
184191
}
185-
186192
return;
187193
}
188194

@@ -199,36 +205,36 @@ impl Downstream {
199205
res = self_clone_1.handle_downstream_message() => {
200206
if let Err(e) = res {
201207
error!(?e, "Error handling downstream message for {downstream_id}");
202-
if e.is_shutdown() {
203-
cancellation_token.cancel();
204-
break;
205-
}
206-
207-
if e.is_disconnect() {
208-
self_clone_1.downstream_connection_token.cancel();
209-
break;
210-
}
211-
212-
if e.is_log() {
213-
warn!("Log-only error from downstream {downstream_id}: {:?}", e.kind);
208+
match e.action {
209+
Action::Shutdown => {
210+
cancellation_token.cancel();
211+
break;
212+
}
213+
Action::Log => {
214+
warn!("Log-only error from downstream {downstream_id}: {:?}", e.kind);
215+
}
216+
Action::Disconnect(_) => {
217+
self_clone_1.downstream_connection_token.cancel();
218+
break;
219+
}
214220
}
215221
}
216222
}
217223
res = self_clone_2.handle_channel_manager_message() => {
218224
if let Err(e) = res {
219225
error!(?e, "Error handling channel manager message for {downstream_id}");
220-
if e.is_shutdown() {
221-
cancellation_token.cancel();
222-
break;
223-
}
224-
225-
if e.is_disconnect() {
226-
self_clone_1.downstream_connection_token.cancel();
227-
break;
228-
}
229-
230-
if e.is_log() {
231-
warn!("Log-only error from downstream {downstream_id}: {:?}", e.kind);
226+
match e.action {
227+
Action::Shutdown => {
228+
cancellation_token.cancel();
229+
break;
230+
}
231+
Action::Log => {
232+
warn!("Log-only error from downstream {downstream_id}: {:?}", e.kind);
233+
}
234+
Action::Disconnect(_) => {
235+
self_clone_1.downstream_connection_token.cancel();
236+
break;
237+
}
232238
}
233239
}
234240
}

pool-apps/pool/src/lib/error.rs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -66,18 +66,6 @@ impl<O> PoolError<O> {
6666
_owner: PhantomData,
6767
}
6868
}
69-
70-
pub fn is_log(&self) -> bool {
71-
matches!(self.action, Action::Log)
72-
}
73-
74-
pub fn is_disconnect(&self) -> bool {
75-
matches!(self.action, Action::Disconnect(_))
76-
}
77-
78-
pub fn is_shutdown(&self) -> bool {
79-
matches!(self.action, Action::Shutdown)
80-
}
8169
}
8270

8371
impl<O> PoolError<O>
@@ -91,13 +79,6 @@ where
9179
_owner: PhantomData,
9280
}
9381
}
94-
95-
pub fn downstream_id(&self) -> DownstreamId {
96-
match self.action {
97-
Action::Disconnect(downstream_id) => downstream_id,
98-
_ => 0,
99-
}
100-
}
10182
}
10283

10384
impl<O> PoolError<O>

pool-apps/pool/src/lib/template_receiver/sv2_tp/mod.rs

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use tokio::net::TcpStream;
2020
use tracing::{debug, error, info, warn};
2121

2222
use crate::{
23-
error::{self, PoolError, PoolErrorKind, PoolResult},
23+
error::{self, Action, PoolError, PoolErrorKind, PoolResult},
2424
io_task::spawn_io_tasks,
2525
utils::get_setup_connection_message_tp,
2626
};
@@ -161,18 +161,30 @@ impl Sv2Tp {
161161
res = self_clone_1.handle_template_provider_message() => {
162162
if let Err(e) = res {
163163
error!("TemplateReceiver template provider handler failed: {e:?}");
164-
if e.is_shutdown() {
165-
cancellation_token.cancel();
166-
break;
164+
match e.action {
165+
Action::Shutdown => {
166+
cancellation_token.cancel();
167+
break;
168+
}
169+
Action::Log => {
170+
warn!("Log-only error from Template Provider: {:?}", e.kind);
171+
}
172+
_ => {}
167173
}
168174
}
169175
}
170176
res = self_clone_2.handle_channel_manager_message() => {
171177
if let Err(e) = res {
172178
error!("TemplateReceiver channel manager handler failed: {e:?}");
173-
if e.is_shutdown() {
174-
cancellation_token.cancel();
175-
break;
179+
match e.action {
180+
Action::Shutdown => {
181+
cancellation_token.cancel();
182+
break;
183+
}
184+
Action::Log => {
185+
warn!("Log-only error from Template Provider: {:?}", e.kind);
186+
}
187+
_ => {}
176188
}
177189
}
178190
},

0 commit comments

Comments
 (0)