@@ -7,9 +7,7 @@ use crate::{
7
7
} ;
8
8
use stratum_common:: roles_logic_sv2:: {
9
9
channels_sv2:: client:: extended:: ExtendedChannel ,
10
- handlers_sv2:: {
11
- HandleMiningMessagesFromServerAsync , HandlerError as Error , SupportedChannelTypes ,
12
- } ,
10
+ handlers_sv2:: { HandleMiningMessagesFromServerAsync , SupportedChannelTypes } ,
13
11
mining_sv2:: {
14
12
CloseChannel , ExtendedExtranonce , Extranonce , NewExtendedMiningJob , NewMiningJob ,
15
13
OpenExtendedMiningChannelSuccess , OpenMiningChannelError , OpenStandardMiningChannelSuccess ,
@@ -26,6 +24,8 @@ use stratum_common::roles_logic_sv2::{
26
24
use tracing:: { error, info, warn} ;
27
25
28
26
impl HandleMiningMessagesFromServerAsync for ChannelManager {
27
+ type Error = TproxyError ;
28
+
29
29
fn get_channel_type_for_server ( & self ) -> SupportedChannelTypes {
30
30
SupportedChannelTypes :: Extended
31
31
}
@@ -37,17 +37,17 @@ impl HandleMiningMessagesFromServerAsync for ChannelManager {
37
37
async fn handle_open_standard_mining_channel_success (
38
38
& mut self ,
39
39
m : OpenStandardMiningChannelSuccess < ' _ > ,
40
- ) -> Result < ( ) , Error > {
40
+ ) -> Result < ( ) , Self :: Error > {
41
41
warn ! ( "Received: {}" , m) ;
42
- Err ( Error :: UnexpectedMessage (
42
+ Err ( Self :: Error :: UnexpectedMessage (
43
43
MESSAGE_TYPE_OPEN_STANDARD_MINING_CHANNEL_SUCCESS ,
44
44
) )
45
45
}
46
46
47
47
async fn handle_open_extended_mining_channel_success (
48
48
& mut self ,
49
49
m : OpenExtendedMiningChannelSuccess < ' _ > ,
50
- ) -> Result < ( ) , Error > {
50
+ ) -> Result < ( ) , Self :: Error > {
51
51
// Check if we have the pending channel data, return error if not
52
52
let ( user_identity, nominal_hashrate, downstream_extranonce_len) = self
53
53
. channel_manager_data
@@ -56,11 +56,11 @@ impl HandleMiningMessagesFromServerAsync for ChannelManager {
56
56
} )
57
57
. map_err ( |e| {
58
58
error ! ( "Failed to lock channel manager data: {:?}" , e) ;
59
- Error :: from ( TproxyError :: PoisonLock )
59
+ TproxyError :: PoisonLock
60
60
} ) ?
61
61
. ok_or_else ( || {
62
62
error ! ( "No pending channel found for request_id: {}" , m. request_id) ;
63
- Error :: from ( TproxyError :: PendingChannelNotFound ( m. request_id ) )
63
+ TproxyError :: PendingChannelNotFound ( m. request_id )
64
64
} ) ?;
65
65
66
66
let success = self
@@ -162,7 +162,7 @@ impl HandleMiningMessagesFromServerAsync for ChannelManager {
162
162
} )
163
163
. map_err ( |e| {
164
164
error ! ( "Failed to lock channel manager data: {:?}" , e) ;
165
- Error :: from ( TproxyError :: PoisonLock )
165
+ TproxyError :: PoisonLock
166
166
} ) ?;
167
167
168
168
self . channel_state
@@ -171,7 +171,7 @@ impl HandleMiningMessagesFromServerAsync for ChannelManager {
171
171
. await
172
172
. map_err ( |e| {
173
173
error ! ( "Failed to send OpenExtendedMiningChannelSuccess: {:?}" , e) ;
174
- Error :: from ( TproxyError :: ChannelErrorSender )
174
+ TproxyError :: ChannelErrorSender
175
175
} ) ?;
176
176
177
177
Ok ( ( ) )
@@ -180,20 +180,20 @@ impl HandleMiningMessagesFromServerAsync for ChannelManager {
180
180
async fn handle_open_mining_channel_error (
181
181
& mut self ,
182
182
m : OpenMiningChannelError < ' _ > ,
183
- ) -> Result < ( ) , Error > {
183
+ ) -> Result < ( ) , Self :: Error > {
184
184
warn ! ( "Received: {}" , m) ;
185
185
todo ! ( "OpenMiningChannelError not handled yet" ) ;
186
186
}
187
187
188
188
async fn handle_update_channel_error (
189
189
& mut self ,
190
190
m : UpdateChannelError < ' _ > ,
191
- ) -> Result < ( ) , Error > {
191
+ ) -> Result < ( ) , Self :: Error > {
192
192
warn ! ( "Received: {}" , m) ;
193
193
Ok ( ( ) )
194
194
}
195
195
196
- async fn handle_close_channel ( & mut self , m : CloseChannel < ' _ > ) -> Result < ( ) , Error > {
196
+ async fn handle_close_channel ( & mut self , m : CloseChannel < ' _ > ) -> Result < ( ) , Self :: Error > {
197
197
info ! ( "Received: {}" , m) ;
198
198
_ = self . channel_manager_data . safe_lock ( |channel_data_manager| {
199
199
if channel_data_manager. mode == ChannelMode :: Aggregated {
@@ -210,23 +210,29 @@ impl HandleMiningMessagesFromServerAsync for ChannelManager {
210
210
async fn handle_set_extranonce_prefix (
211
211
& mut self ,
212
212
m : SetExtranoncePrefix < ' _ > ,
213
- ) -> Result < ( ) , Error > {
213
+ ) -> Result < ( ) , Self :: Error > {
214
214
warn ! ( "Received: {}" , m) ;
215
215
warn ! ( "⚠️ Cannot process SetExtranoncePrefix since set_extranonce is not supported for majority of sv1 clients. Ignoring." ) ;
216
216
Ok ( ( ) )
217
217
}
218
218
219
- async fn handle_submit_shares_success ( & mut self , m : SubmitSharesSuccess ) -> Result < ( ) , Error > {
219
+ async fn handle_submit_shares_success (
220
+ & mut self ,
221
+ m : SubmitSharesSuccess ,
222
+ ) -> Result < ( ) , Self :: Error > {
220
223
info ! ( "Received: {} ✅" , m) ;
221
224
Ok ( ( ) )
222
225
}
223
226
224
- async fn handle_submit_shares_error ( & mut self , m : SubmitSharesError < ' _ > ) -> Result < ( ) , Error > {
227
+ async fn handle_submit_shares_error (
228
+ & mut self ,
229
+ m : SubmitSharesError < ' _ > ,
230
+ ) -> Result < ( ) , Self :: Error > {
225
231
warn ! ( "Received: {} ❌" , m. channel_id) ;
226
232
Ok ( ( ) )
227
233
}
228
234
229
- async fn handle_new_mining_job ( & mut self , m : NewMiningJob < ' _ > ) -> Result < ( ) , Error > {
235
+ async fn handle_new_mining_job ( & mut self , m : NewMiningJob < ' _ > ) -> Result < ( ) , Self :: Error > {
230
236
warn ! ( "Received: {}" , m) ;
231
237
warn ! ( "⚠️ Cannot process NewMiningJob since Translator Proxy supports only extended mining jobs. Ignoring." ) ;
232
238
Ok ( ( ) )
@@ -235,7 +241,7 @@ impl HandleMiningMessagesFromServerAsync for ChannelManager {
235
241
async fn handle_new_extended_mining_job (
236
242
& mut self ,
237
243
m : NewExtendedMiningJob < ' _ > ,
238
- ) -> Result < ( ) , Error > {
244
+ ) -> Result < ( ) , Self :: Error > {
239
245
info ! ( "Received: {}" , m) ;
240
246
let mut m_static = m. clone ( ) . into_static ( ) ;
241
247
_ = self . channel_manager_data . safe_lock ( |channel_manage_data| {
@@ -274,13 +280,13 @@ impl HandleMiningMessagesFromServerAsync for ChannelManager {
274
280
. await
275
281
. map_err ( |e| {
276
282
error ! ( "Failed to send immediate NewExtendedMiningJob: {:?}" , e) ;
277
- Error :: from ( TproxyError :: ChannelErrorSender )
283
+ TproxyError :: ChannelErrorSender
278
284
} ) ?;
279
285
}
280
286
Ok ( ( ) )
281
287
}
282
288
283
- async fn handle_set_new_prev_hash ( & mut self , m : SetNewPrevHash < ' _ > ) -> Result < ( ) , Error > {
289
+ async fn handle_set_new_prev_hash ( & mut self , m : SetNewPrevHash < ' _ > ) -> Result < ( ) , Self :: Error > {
284
290
info ! ( "Received: {}" , m) ;
285
291
let m_static = m. clone ( ) . into_static ( ) ;
286
292
_ = self . channel_manager_data . safe_lock ( |channel_manager_data| {
@@ -314,7 +320,7 @@ impl HandleMiningMessagesFromServerAsync for ChannelManager {
314
320
. await
315
321
. map_err ( |e| {
316
322
error ! ( "Failed to send SetNewPrevHash: {:?}" , e) ;
317
- Error :: from ( TproxyError :: ChannelErrorSender )
323
+ TproxyError :: ChannelErrorSender
318
324
} ) ?;
319
325
320
326
let mode = self
@@ -347,7 +353,7 @@ impl HandleMiningMessagesFromServerAsync for ChannelManager {
347
353
. await
348
354
. map_err ( |e| {
349
355
error ! ( "Failed to send NewExtendedMiningJob: {:?}" , e) ;
350
- Error :: from ( TproxyError :: ChannelErrorSender )
356
+ TproxyError :: ChannelErrorSender
351
357
} ) ?;
352
358
}
353
359
Ok ( ( ) )
@@ -356,26 +362,26 @@ impl HandleMiningMessagesFromServerAsync for ChannelManager {
356
362
async fn handle_set_custom_mining_job_success (
357
363
& mut self ,
358
364
m : SetCustomMiningJobSuccess ,
359
- ) -> Result < ( ) , Error > {
365
+ ) -> Result < ( ) , Self :: Error > {
360
366
warn ! ( "Received: {}" , m) ;
361
367
warn ! ( "⚠️ Cannot process SetCustomMiningJobSuccess since Translator Proxy does not support custom mining jobs. Ignoring." ) ;
362
- Err ( Error :: UnexpectedMessage (
368
+ Err ( Self :: Error :: UnexpectedMessage (
363
369
MESSAGE_TYPE_SET_CUSTOM_MINING_JOB_SUCCESS ,
364
370
) )
365
371
}
366
372
367
373
async fn handle_set_custom_mining_job_error (
368
374
& mut self ,
369
375
m : SetCustomMiningJobError < ' _ > ,
370
- ) -> Result < ( ) , Error > {
376
+ ) -> Result < ( ) , Self :: Error > {
371
377
warn ! ( "Received: {}" , m) ;
372
378
warn ! ( "⚠️ Cannot process SetCustomMiningJobError since Translator Proxy does not support custom mining jobs. Ignoring." ) ;
373
- Err ( Error :: UnexpectedMessage (
379
+ Err ( Self :: Error :: UnexpectedMessage (
374
380
MESSAGE_TYPE_SET_CUSTOM_MINING_JOB_ERROR ,
375
381
) )
376
382
}
377
383
378
- async fn handle_set_target ( & mut self , m : SetTarget < ' _ > ) -> Result < ( ) , Error > {
384
+ async fn handle_set_target ( & mut self , m : SetTarget < ' _ > ) -> Result < ( ) , Self :: Error > {
379
385
info ! ( "Received: {}" , m) ;
380
386
381
387
// Update the channel targets in the channel manager
@@ -409,15 +415,20 @@ impl HandleMiningMessagesFromServerAsync for ChannelManager {
409
415
. await
410
416
. map_err ( |e| {
411
417
error ! ( "Failed to forward SetTarget message to SV1Server: {:?}" , e) ;
412
- Error :: from ( TproxyError :: ChannelErrorSender )
418
+ TproxyError :: ChannelErrorSender
413
419
} ) ?;
414
420
415
421
Ok ( ( ) )
416
422
}
417
423
418
- async fn handle_set_group_channel ( & mut self , m : SetGroupChannel < ' _ > ) -> Result < ( ) , Error > {
424
+ async fn handle_set_group_channel (
425
+ & mut self ,
426
+ m : SetGroupChannel < ' _ > ,
427
+ ) -> Result < ( ) , Self :: Error > {
419
428
warn ! ( "Received: {}" , m) ;
420
429
warn ! ( "⚠️ Cannot process SetGroupChannel since Translator Proxy does not support group channels. Ignoring." ) ;
421
- Err ( Error :: UnexpectedMessage ( MESSAGE_TYPE_SET_GROUP_CHANNEL ) )
430
+ Err ( Self :: Error :: UnexpectedMessage (
431
+ MESSAGE_TYPE_SET_GROUP_CHANNEL ,
432
+ ) )
422
433
}
423
434
}
0 commit comments