@@ -13,10 +13,7 @@ impl<H> Default for FdEntry<H> { fn default() -> Self { Self { reader: None, wri
1313
1414fn interest < H > ( key : usize , e : & FdEntry < H > ) -> Event {
1515 match ( e. reader . is_some ( ) , e. writer . is_some ( ) ) {
16- ( true , true ) => Event :: all ( key) ,
17- ( true , false ) => Event :: readable ( key) ,
18- ( false , true ) => Event :: writable ( key) ,
19- ( false , false ) => Event :: none ( key) ,
16+ ( true , true ) => Event :: all ( key) , ( true , false ) => Event :: readable ( key) , ( false , true ) => Event :: writable ( key) , ( false , false ) => Event :: none ( key)
2017 }
2118}
2219
@@ -30,21 +27,12 @@ struct Inner<H> {
3027 stop : bool ,
3128}
3229
33- pub struct Reactor < H > {
34- inner : Mutex < Inner < H > > ,
35- tsq : Mutex < VecDeque < H > > ,
36- poller : Poller ,
37- start : Instant ,
38- }
30+ pub struct Reactor < H > { inner : Mutex < Inner < H > > , tsq : Mutex < VecDeque < H > > , poller : Poller , start : Instant }
3931
4032impl < H : Clone > Reactor < H > {
4133 pub fn new ( ) -> io:: Result < Self > {
42- Ok ( Self {
43- inner : Mutex :: new ( Inner { ready : VecDeque :: new ( ) , timers : BTreeMap :: new ( ) , fds : HashMap :: new ( ) , seq : 0 , stop : false } ) ,
44- tsq : Mutex :: new ( VecDeque :: new ( ) ) ,
45- poller : Poller :: new ( ) ?,
46- start : Instant :: now ( ) ,
47- } )
34+ Ok ( Self { inner : Mutex :: new ( Inner { ready : VecDeque :: new ( ) , timers : BTreeMap :: new ( ) , fds : HashMap :: new ( ) , seq : 0 , stop : false } ) ,
35+ tsq : Mutex :: new ( VecDeque :: new ( ) ) , poller : Poller :: new ( ) ?, start : Instant :: now ( ) } )
4836 }
4937
5038 fn now_us ( & self ) -> u64 { self . start . elapsed ( ) . as_micros ( ) as u64 }
@@ -91,8 +79,7 @@ impl<H: Clone> Reactor<H> {
9179 if empty {
9280 inner. fds . remove ( & fd) ;
9381 let _ = self . poller . delete ( borrowed ( fd) ) ;
94- }
95- else { self . poller . modify ( borrowed ( fd) , ev) ? }
82+ } else { self . poller . modify ( borrowed ( fd) , ev) ? }
9683 Ok ( had)
9784 }
9885
@@ -118,10 +105,7 @@ impl<H: Clone> Reactor<H> {
118105 /// cross-thread handles, and say how long the driver may block in `poll`.
119106 pub fn next_timeout ( & self ) -> ControlFlow < ( ) , Option < Duration > > {
120107 let mut inner = self . inner . lock ( ) . unwrap ( ) ;
121- if inner. stop {
122- inner. stop = false ;
123- return ControlFlow :: Break ( ( ) ) ;
124- }
108+ if inner. stop { inner. stop = false ; return ControlFlow :: Break ( ( ) ) ; }
125109 let Inner { ready, timers, .. } = & mut * inner;
126110 self . drain_tsq ( ready) ;
127111 let now = self . now_us ( ) ;
@@ -133,7 +117,8 @@ impl<H: Clone> Reactor<H> {
133117 // to u64::MAX, and a pure-Rust consumer blocking in `poll` would hand that
134118 // timespec to kqueue, which rejects it with EINVAL
135119 const MAX_POLL_US : u64 = 86_400_000_000 ;
136- ControlFlow :: Continue ( if !ready. is_empty ( ) { Some ( Duration :: ZERO ) } else { timers. first_key_value ( ) . map ( |( ( when, _) , _) | Duration :: from_micros ( ( when - now + 1 ) . min ( MAX_POLL_US ) ) ) } )
120+ ControlFlow :: Continue ( if !ready. is_empty ( ) { Some ( Duration :: ZERO ) }
121+ else { timers. first_key_value ( ) . map ( |( ( when, _) , _) | Duration :: from_micros ( ( when - now + 1 ) . min ( MAX_POLL_US ) ) ) } )
137122 }
138123
139124 /// Blocking wait; holds no locks, so drivers may run it with the GIL released.
0 commit comments