@@ -32,7 +32,7 @@ use std::{io, thread};
32
32
33
33
use crossbeam_channel as chan;
34
34
35
- use crate :: poller:: { IoFail , IoType , Poll , Waker , WakerRecv , WakerSend } ;
35
+ use crate :: poller:: { IoType , Poll , Waker , WakerRecv , WakerSend } ;
36
36
use crate :: resource:: WriteError ;
37
37
use crate :: { Resource , ResourceId , ResourceType , Timer , Timestamp , WriteAtomic } ;
38
38
@@ -505,11 +505,10 @@ impl<H: Handler, P: Poll> Runtime<H, P> {
505
505
506
506
/// # Returns
507
507
///
508
- /// Whether it was awaken by a waker
508
+ /// Whether it was awakened by a waker
509
509
fn handle_events ( & mut self , time : Timestamp ) -> bool {
510
510
let mut awoken = false ;
511
511
512
- let mut unregister_queue = vec ! [ ] ;
513
512
while let Some ( ( id, res) ) = self . poller . next ( ) {
514
513
if id == ResourceId :: WAKER {
515
514
if let Err ( err) = res {
@@ -536,19 +535,13 @@ impl<H: Handler, P: Poll> Runtime<H, P> {
536
535
}
537
536
}
538
537
}
539
- Err ( IoFail :: Connectivity ( flags ) ) => {
538
+ Err ( err ) => {
540
539
#[ cfg( feature = "log" ) ]
541
- log:: trace!( target: "reactor" , "Listener {id} hung up (OS flags {flags:#b})" ) ;
542
-
543
- let listener = self . listeners . remove ( & id) . expect ( "resource disappeared" ) ;
544
- unregister_queue. push ( id) ;
540
+ log:: trace!( target: "reactor" , "Listener {id} {err}" ) ;
541
+ let listener =
542
+ self . unregister_listener ( id) . expect ( "listener has disappeared" ) ;
545
543
self . service . handle_error ( Error :: ListenerDisconnect ( id, listener) ) ;
546
544
}
547
- Err ( IoFail :: Os ( flags) ) => {
548
- #[ cfg( feature = "log" ) ]
549
- log:: trace!( target: "reactor" , "Listener {id} errored (OS flags {flags:#b})" ) ;
550
- self . unregister_listener ( id) ;
551
- }
552
545
}
553
546
} else if self . transports . contains_key ( & id) {
554
547
match res {
@@ -563,19 +556,13 @@ impl<H: Handler, P: Poll> Runtime<H, P> {
563
556
}
564
557
}
565
558
}
566
- Err ( IoFail :: Connectivity ( posix_events ) ) => {
559
+ Err ( err ) => {
567
560
#[ cfg( feature = "log" ) ]
568
- log:: trace!( target: "reactor" , "Transport {id} hanged up (POSIX events are {posix_events:#b})" ) ;
569
-
570
- let transport = self . transports . remove ( & id) . expect ( "resource disappeared" ) ;
571
- unregister_queue. push ( id) ;
561
+ log:: trace!( target: "reactor" , "Transport {id} {err}" ) ;
562
+ let transport =
563
+ self . unregister_transport ( id) . expect ( "transport has disappeared" ) ;
572
564
self . service . handle_error ( Error :: TransportDisconnect ( id, transport) ) ;
573
565
}
574
- Err ( IoFail :: Os ( posix_events) ) => {
575
- #[ cfg( feature = "log" ) ]
576
- log:: trace!( target: "reactor" , "Transport {id} errored (POSIX events are {posix_events:#b})" ) ;
577
- self . unregister_transport ( id) ;
578
- }
579
566
}
580
567
} else {
581
568
panic ! (
@@ -584,11 +571,6 @@ impl<H: Handler, P: Poll> Runtime<H, P> {
584
571
}
585
572
}
586
573
587
- // We need this b/c of borrow checker
588
- for id in unregister_queue {
589
- self . poller . unregister ( id) ;
590
- }
591
-
592
574
awoken
593
575
}
594
576
@@ -708,10 +690,8 @@ impl<H: Handler, P: Poll> Runtime<H, P> {
708
690
return None ;
709
691
} ;
710
692
711
- let fd = listener. as_raw_fd ( ) ;
712
-
713
693
#[ cfg( feature = "log" ) ]
714
- log:: debug!( target: "reactor" , "Handling over listener {id} (fd={fd })" ) ;
694
+ log:: debug!( target: "reactor" , "Handling over listener {id} (fd={})" , listener . as_raw_fd ( ) ) ;
715
695
716
696
self . poller . unregister ( id) ;
717
697
@@ -725,10 +705,8 @@ impl<H: Handler, P: Poll> Runtime<H, P> {
725
705
return None ;
726
706
} ;
727
707
728
- let fd = transport. as_raw_fd ( ) ;
729
-
730
708
#[ cfg( feature = "log" ) ]
731
- log:: debug!( target: "reactor" , "Unregistering over transport {id} (fd={fd })" ) ;
709
+ log:: debug!( target: "reactor" , "Unregistering over transport {id} (fd={})" , transport . as_raw_fd ( ) ) ;
732
710
733
711
self . poller . unregister ( id) ;
734
712
0 commit comments