@@ -59,61 +59,56 @@ pub fn start_main_event_loop(
59
59
60
60
// We do a select over tokio::sync::mpsc::Receiver::recv, tokio::sync::mpsc::UnboundedReceiver::recv,
61
61
// tokio::time::Interval::tick which are all cancellation safe.
62
- loop {
63
- tokio:: select! {
64
- _ = adapter_state. idle( ) => {
65
- break ;
66
- } ,
67
- event = connection_manager. receive_stream_event( ) => {
68
- if let Err ( ProcessBitcoinNetworkMessageError :: InvalidMessage ) =
69
- connection_manager. process_event( & event)
70
- {
71
- connection_manager. discard( & event. address) ;
72
- }
73
- } ,
74
- network_message = network_message_receiver. recv( ) => {
75
- let ( address, message) = network_message. unwrap( ) ;
76
- router_metrics
77
- . bitcoin_messages_received
78
- . with_label_values( & [ message. cmd( ) ] )
79
- . inc( ) ;
80
- if let Err ( ProcessBitcoinNetworkMessageError :: InvalidMessage ) =
81
- connection_manager. process_bitcoin_network_message( address, & message) {
82
- connection_manager. discard( & address) ;
83
- }
62
+ tokio:: select! {
63
+ event = connection_manager. receive_stream_event( ) => {
64
+ if let Err ( ProcessBitcoinNetworkMessageError :: InvalidMessage ) =
65
+ connection_manager. process_event( & event)
66
+ {
67
+ connection_manager. discard( & event. address) ;
68
+ }
69
+ } ,
70
+ network_message = network_message_receiver. recv( ) => {
71
+ let ( address, message) = network_message. unwrap( ) ;
72
+ router_metrics
73
+ . bitcoin_messages_received
74
+ . with_label_values( & [ message. cmd( ) ] )
75
+ . inc( ) ;
76
+ if let Err ( ProcessBitcoinNetworkMessageError :: InvalidMessage ) =
77
+ connection_manager. process_bitcoin_network_message( address, & message) {
78
+ connection_manager. discard( & address) ;
79
+ }
84
80
85
- if let Err ( ProcessBitcoinNetworkMessageError :: InvalidMessage ) = blockchain_manager. process_bitcoin_network_message( & mut connection_manager, address, & message) {
86
- connection_manager. discard( & address) ;
87
- }
88
- if let Err ( ProcessBitcoinNetworkMessageError :: InvalidMessage ) = transaction_manager. process_bitcoin_network_message( & mut connection_manager, address, & message) {
89
- connection_manager. discard( & address) ;
90
- }
91
- } ,
92
- result = blockchain_manager_rx. recv( ) => {
93
- let command = result. expect( "Receiving should not fail because the sender part of the channel is never closed." ) ;
94
- match command {
95
- BlockchainManagerRequest :: EnqueueNewBlocksToDownload ( next_headers) => {
96
- blockchain_manager. enqueue_new_blocks_to_download( next_headers) ;
97
- }
98
- BlockchainManagerRequest :: PruneBlocks ( anchor, processed_block_hashes) => {
99
- blockchain_manager. prune_blocks( anchor, processed_block_hashes) ;
100
- }
101
- } ;
81
+ if let Err ( ProcessBitcoinNetworkMessageError :: InvalidMessage ) = blockchain_manager. process_bitcoin_network_message( & mut connection_manager, address, & message) {
82
+ connection_manager. discard( & address) ;
83
+ }
84
+ if let Err ( ProcessBitcoinNetworkMessageError :: InvalidMessage ) = transaction_manager. process_bitcoin_network_message( & mut connection_manager, address, & message) {
85
+ connection_manager. discard( & address) ;
102
86
}
103
- transaction_manager_request = transaction_manager_rx. recv( ) => {
104
- match transaction_manager_request. unwrap( ) {
105
- TransactionManagerRequest :: SendTransaction ( transaction) => transaction_manager. enqueue_transaction( & transaction) ,
87
+ } ,
88
+ result = blockchain_manager_rx. recv( ) => {
89
+ let command = result. expect( "Receiving should not fail because the sender part of the channel is never closed." ) ;
90
+ match command {
91
+ BlockchainManagerRequest :: EnqueueNewBlocksToDownload ( next_headers) => {
92
+ blockchain_manager. enqueue_new_blocks_to_download( next_headers) ;
106
93
}
107
- } ,
108
- _ = tick_interval. tick( ) => {
109
- // After an event is dispatched, the managers `tick` method is called to process possible
110
- // outgoing messages.
111
- connection_manager. tick( blockchain_manager. get_height( ) , handle_stream) ;
112
- blockchain_manager. tick( & mut connection_manager) ;
113
- transaction_manager. advertise_txids( & mut connection_manager) ;
94
+ BlockchainManagerRequest :: PruneBlocks ( anchor, processed_block_hashes) => {
95
+ blockchain_manager. prune_blocks( anchor, processed_block_hashes) ;
96
+ }
97
+ } ;
98
+ }
99
+ transaction_manager_request = transaction_manager_rx. recv( ) => {
100
+ match transaction_manager_request. unwrap( ) {
101
+ TransactionManagerRequest :: SendTransaction ( transaction) => transaction_manager. enqueue_transaction( & transaction) ,
114
102
}
115
- } ;
116
- }
103
+ } ,
104
+ _ = tick_interval. tick( ) => {
105
+ // After an event is dispatched, the managers `tick` method is called to process possible
106
+ // outgoing messages.
107
+ connection_manager. tick( blockchain_manager. get_height( ) , handle_stream) ;
108
+ blockchain_manager. tick( & mut connection_manager) ;
109
+ transaction_manager. advertise_txids( & mut connection_manager) ;
110
+ }
111
+ } ;
117
112
}
118
113
} ) ;
119
114
}
0 commit comments