@@ -18,7 +18,7 @@ use std::{
1818use keccak_hash:: keccak;
1919use mio:: {
2020 net:: { TcpListener , TcpStream , UdpSocket } ,
21- Interest , Poll , Token ,
21+ Interest , Registry , Token ,
2222} ;
2323use parity_path:: restrict_permissions_owner;
2424use parking_lot:: { Mutex , RwLock } ;
@@ -171,7 +171,6 @@ impl<'a> UdpIoContext<'a> {
171171pub struct NetworkService {
172172 pub io_service : Option < IoService < NetworkIoMessage > > ,
173173 pub inner : Option < Arc < NetworkServiceInner > > ,
174- network_poll : Arc < Mutex < Poll > > ,
175174 config : NetworkConfiguration ,
176175}
177176
@@ -180,7 +179,6 @@ impl NetworkService {
180179 NetworkService {
181180 io_service : None ,
182181 inner : None ,
183- network_poll : Arc :: new ( Mutex :: new ( Poll :: new ( ) . unwrap ( ) ) ) ,
184182 config,
185183 }
186184 }
@@ -200,7 +198,7 @@ impl NetworkService {
200198 & mut self , pos_pub_keys : ( ConsensusPublicKey , ConsensusVRFPublicKey ) ,
201199 ) -> Result < ( ) , Error > {
202200 let raw_io_service =
203- IoService :: < NetworkIoMessage > :: start ( self . network_poll . clone ( ) ) ?;
201+ IoService :: < NetworkIoMessage > :: start ( STOP_NET_POLL ) ?;
204202 self . io_service = Some ( raw_io_service) ;
205203
206204 if self . inner . is_none ( ) {
@@ -226,18 +224,10 @@ impl NetworkService {
226224
227225 pub fn start ( & self ) {
228226 let handler = self . inner . as_ref ( ) . unwrap ( ) . clone ( ) ;
229- let main_event_loop_channel =
230- self . io_service . as_ref ( ) . unwrap ( ) . channel ( ) ;
231227 self . io_service
232228 . as_ref ( )
233229 . expect ( "Already set" )
234- . start_network_poll (
235- self . network_poll . clone ( ) ,
236- handler,
237- main_event_loop_channel,
238- MAX_SESSIONS ,
239- STOP_NET_POLL ,
240- ) ;
230+ . start_network_poll ( handler, MAX_SESSIONS ) ;
241231 }
242232
243233 /// Add a P2P peer to the client as a trusted node
@@ -1756,19 +1746,19 @@ impl IoHandler<NetworkIoMessage> for NetworkServiceInner {
17561746 }
17571747
17581748 fn register_stream (
1759- & self , stream : StreamToken , reg : Token , event_loop : & Poll ,
1749+ & self , stream : StreamToken , reg : Token , poll_registry : & Registry ,
17601750 ) {
17611751 match stream {
17621752 FIRST_SESSION ..=LAST_SESSION => {
17631753 if let Some ( session) = self . sessions . get ( stream) {
17641754 session
17651755 . write ( )
1766- . register_socket ( reg, event_loop )
1756+ . register_socket ( reg, poll_registry )
17671757 . expect ( "Error registering socket" ) ;
17681758 }
17691759 }
17701760 TCP_ACCEPT => {
1771- event_loop . registry ( )
1761+ poll_registry
17721762 . register (
17731763 & mut * self . tcp_listener . lock ( ) ,
17741764 Token ( TCP_ACCEPT ) ,
@@ -1777,7 +1767,7 @@ impl IoHandler<NetworkIoMessage> for NetworkServiceInner {
17771767 . expect ( "Error registering stream" ) ;
17781768 }
17791769 UDP_MESSAGE => {
1780- event_loop . registry ( )
1770+ poll_registry
17811771 . register (
17821772 & mut * self . udp_socket . lock ( ) ,
17831773 reg,
@@ -1789,13 +1779,13 @@ impl IoHandler<NetworkIoMessage> for NetworkServiceInner {
17891779 }
17901780 }
17911781
1792- fn deregister_stream ( & self , stream : StreamToken , event_loop : & Poll ) {
1782+ fn deregister_stream ( & self , stream : StreamToken , poll_registry : & Registry ) {
17931783 match stream {
17941784 FIRST_SESSION ..=LAST_SESSION => {
17951785 if let Some ( session) = self . sessions . get ( stream) {
17961786 let mut sess = session. write ( ) ;
17971787 if sess. expired ( ) {
1798- sess. deregister_socket ( event_loop )
1788+ sess. deregister_socket ( poll_registry )
17991789 . expect ( "Error deregistering socket" ) ;
18001790 if let Some ( node_id) = sess. id ( ) {
18011791 self . node_db . write ( ) . note_failure (
@@ -1813,18 +1803,18 @@ impl IoHandler<NetworkIoMessage> for NetworkServiceInner {
18131803 }
18141804
18151805 fn update_stream (
1816- & self , stream : StreamToken , reg : Token , event_loop : & Poll ,
1806+ & self , stream : StreamToken , reg : Token , poll_registry : & Registry ,
18171807 ) {
18181808 match stream {
18191809 FIRST_SESSION ..=LAST_SESSION => {
18201810 if let Some ( session) = self . sessions . get ( stream) {
18211811 session
18221812 . write ( )
1823- . update_socket ( reg, event_loop )
1813+ . update_socket ( reg, poll_registry )
18241814 . expect ( "Error updating socket" ) ;
18251815 }
18261816 }
1827- TCP_ACCEPT => event_loop . registry ( )
1817+ TCP_ACCEPT => poll_registry
18281818 . reregister (
18291819 & mut * self . tcp_listener . lock ( ) ,
18301820 Token ( TCP_ACCEPT ) ,
@@ -1840,7 +1830,7 @@ impl IoHandler<NetworkIoMessage> for NetworkServiceInner {
18401830 } else {
18411831 Interest :: READABLE
18421832 } ;
1843- event_loop . registry ( )
1833+ poll_registry
18441834 . reregister (
18451835 & mut * udp_socket,
18461836 reg,
0 commit comments