@@ -13,71 +13,67 @@ impl ServerMonitoring for ChannelManager {
1313 let mut extended_channels = Vec :: new ( ) ;
1414 let standard_channels = Vec :: new ( ) ; // tProxy only uses extended channels
1515
16- self . channel_manager_data
17- . safe_lock ( |d| {
18- match tproxy_mode ( ) {
19- TproxyMode :: Aggregated => {
16+ match tproxy_mode ( ) {
17+ TproxyMode :: Aggregated => {
18+ self . upstream_extended_channel
19+ . super_safe_lock ( |upstream_channel| {
2020 // In Aggregated mode: one shared upstream channel to the server
21- if let Some ( upstream_channel) = & d. upstream_extended_channel {
22- if let Ok ( channel_lock) = upstream_channel. read ( ) {
23- let channel_id = channel_lock. get_channel_id ( ) ;
24- let target = channel_lock. get_target ( ) ;
25- let extranonce_prefix = channel_lock. get_extranonce_prefix ( ) ;
26- let user_identity = channel_lock. get_user_identity ( ) ;
27- let share_accounting = channel_lock. get_share_accounting ( ) ;
21+ if let Some ( upstream_channel) = upstream_channel. as_mut ( ) {
22+ let channel_id = upstream_channel. get_channel_id ( ) ;
23+ let target = upstream_channel. get_target ( ) ;
24+ let extranonce_prefix = upstream_channel. get_extranonce_prefix ( ) ;
25+ let user_identity = upstream_channel. get_user_identity ( ) ;
26+ let share_accounting = upstream_channel. get_share_accounting ( ) ;
2827
29- extended_channels. push ( ServerExtendedChannelInfo {
30- channel_id,
31- user_identity : user_identity. clone ( ) ,
32- nominal_hashrate : channel_lock. get_nominal_hashrate ( ) ,
33- target_hex : hex:: encode ( target. to_be_bytes ( ) ) ,
34- extranonce_prefix_hex : hex:: encode ( extranonce_prefix) ,
35- full_extranonce_size : channel_lock. get_full_extranonce_size ( ) ,
36- rollable_extranonce_size : channel_lock
37- . get_rollable_extranonce_size ( ) ,
38- version_rolling : channel_lock. is_version_rolling ( ) ,
39- shares_accepted : share_accounting. get_shares_accepted ( ) ,
40- share_work_sum : share_accounting. get_share_work_sum ( ) ,
41- last_share_sequence_number : share_accounting
42- . get_last_share_sequence_number ( ) ,
43- best_diff : share_accounting. get_best_diff ( ) ,
44- } ) ;
45- }
28+ extended_channels. push ( ServerExtendedChannelInfo {
29+ channel_id,
30+ user_identity : user_identity. clone ( ) ,
31+ nominal_hashrate : upstream_channel. get_nominal_hashrate ( ) ,
32+ target_hex : hex:: encode ( target. to_be_bytes ( ) ) ,
33+ extranonce_prefix_hex : hex:: encode ( extranonce_prefix) ,
34+ full_extranonce_size : upstream_channel. get_full_extranonce_size ( ) ,
35+ rollable_extranonce_size : upstream_channel
36+ . get_rollable_extranonce_size ( ) ,
37+ version_rolling : upstream_channel. is_version_rolling ( ) ,
38+ shares_accepted : share_accounting. get_shares_accepted ( ) ,
39+ share_work_sum : share_accounting. get_share_work_sum ( ) ,
40+ last_share_sequence_number : share_accounting
41+ . get_last_share_sequence_number ( ) ,
42+ best_diff : share_accounting. get_best_diff ( ) ,
43+ } ) ;
4644 }
47- }
48- TproxyMode :: NonAggregated => {
49- // In NonAggregated mode: each downstream Sv1 miner has its own upstream Sv2
50- // channel to the server
51- for ( _channel_id, extended_channel) in d. extended_channels . iter ( ) {
52- if let Ok ( channel_lock) = extended_channel. read ( ) {
53- let channel_id = channel_lock. get_channel_id ( ) ;
54- let target = channel_lock. get_target ( ) ;
55- let extranonce_prefix = channel_lock. get_extranonce_prefix ( ) ;
56- let user_identity = channel_lock. get_user_identity ( ) ;
57- let share_accounting = channel_lock. get_share_accounting ( ) ;
45+ } ) ;
46+ }
47+ TproxyMode :: NonAggregated => {
48+ // In NonAggregated mode: each downstream Sv1 miner has its own upstream Sv2
49+ // channel to the server
50+ for channel in self . extended_channels . iter ( ) {
51+ let extended_channel = channel. value ( ) ;
5852
59- extended_channels. push ( ServerExtendedChannelInfo {
60- channel_id,
61- user_identity : user_identity. clone ( ) ,
62- nominal_hashrate : channel_lock. get_nominal_hashrate ( ) ,
63- target_hex : hex:: encode ( target. to_be_bytes ( ) ) ,
64- extranonce_prefix_hex : hex:: encode ( extranonce_prefix) ,
65- full_extranonce_size : channel_lock. get_full_extranonce_size ( ) ,
66- rollable_extranonce_size : channel_lock
67- . get_rollable_extranonce_size ( ) ,
68- version_rolling : channel_lock. is_version_rolling ( ) ,
69- shares_accepted : share_accounting. get_shares_accepted ( ) ,
70- share_work_sum : share_accounting. get_share_work_sum ( ) ,
71- last_share_sequence_number : share_accounting
72- . get_last_share_sequence_number ( ) ,
73- best_diff : share_accounting. get_best_diff ( ) ,
74- } ) ;
75- }
76- }
77- }
53+ let channel_id = extended_channel. get_channel_id ( ) ;
54+ let target = extended_channel. get_target ( ) ;
55+ let extranonce_prefix = extended_channel. get_extranonce_prefix ( ) ;
56+ let user_identity = extended_channel. get_user_identity ( ) ;
57+ let share_accounting = extended_channel. get_share_accounting ( ) ;
58+
59+ extended_channels. push ( ServerExtendedChannelInfo {
60+ channel_id,
61+ user_identity : user_identity. clone ( ) ,
62+ nominal_hashrate : extended_channel. get_nominal_hashrate ( ) ,
63+ target_hex : hex:: encode ( target. to_be_bytes ( ) ) ,
64+ extranonce_prefix_hex : hex:: encode ( extranonce_prefix) ,
65+ full_extranonce_size : extended_channel. get_full_extranonce_size ( ) ,
66+ rollable_extranonce_size : extended_channel. get_rollable_extranonce_size ( ) ,
67+ version_rolling : extended_channel. is_version_rolling ( ) ,
68+ shares_accepted : share_accounting. get_shares_accepted ( ) ,
69+ share_work_sum : share_accounting. get_share_work_sum ( ) ,
70+ last_share_sequence_number : share_accounting
71+ . get_last_share_sequence_number ( ) ,
72+ best_diff : share_accounting. get_best_diff ( ) ,
73+ } ) ;
7874 }
79- } )
80- . unwrap ( ) ;
75+ }
76+ }
8177
8278 ServerInfo {
8379 extended_channels,
0 commit comments