@@ -101,7 +101,7 @@ impl Actor {
101
101
self . actor_sender . clone ( )
102
102
}
103
103
104
- pub ( super ) async fn run ( mut self ) -> Result < ( ) > {
104
+ pub ( super ) async fn run ( mut self ) {
105
105
const DEBOUNCE : Duration = Duration :: from_millis ( 250 ) ;
106
106
107
107
let mut last_event = None ;
@@ -111,6 +111,7 @@ impl Actor {
111
111
loop {
112
112
tokio:: select! {
113
113
biased;
114
+
114
115
_ = debounce_interval. tick( ) => {
115
116
if let Some ( time_jumped) = last_event. take( ) {
116
117
if let Err ( err) = self . handle_potential_change( time_jumped) . await {
@@ -126,38 +127,43 @@ impl Actor {
126
127
debounce_interval. reset_immediately( ) ;
127
128
}
128
129
}
129
- Some ( event) = self . mon_receiver. recv( ) => {
130
+ event = self . mon_receiver. recv( ) => {
130
131
match event {
131
- NetworkMessage :: Change => {
132
+ Some ( NetworkMessage :: Change ) => {
132
133
trace!( "network activity detected" ) ;
133
134
last_event. replace( false ) ;
134
135
debounce_interval. reset_immediately( ) ;
135
136
}
137
+ None => {
138
+ debug!( "shutting down, network monitor receiver gone" ) ;
139
+ break ;
140
+ }
136
141
}
137
142
}
138
- Some ( msg) = self . actor_receiver. recv( ) => match msg {
139
- ActorMessage :: Subscribe ( callback, s) => {
140
- let token = self . next_callback_token( ) ;
141
- self . callbacks. insert( token, Arc :: new( callback) ) ;
142
- s. send( token) . ok( ) ;
143
- }
144
- ActorMessage :: Unsubscribe ( token, s) => {
145
- self . callbacks. remove( & token) ;
146
- s. send( ( ) ) . ok( ) ;
147
- }
148
- ActorMessage :: NetworkChange => {
149
- trace!( "external network activity detected" ) ;
150
- last_event. replace( false ) ;
151
- debounce_interval. reset_immediately( ) ;
143
+ msg = self . actor_receiver. recv( ) => {
144
+ match msg {
145
+ Some ( ActorMessage :: Subscribe ( callback, s) ) => {
146
+ let token = self . next_callback_token( ) ;
147
+ self . callbacks. insert( token, Arc :: new( callback) ) ;
148
+ s. send( token) . ok( ) ;
149
+ }
150
+ Some ( ActorMessage :: Unsubscribe ( token, s) ) => {
151
+ self . callbacks. remove( & token) ;
152
+ s. send( ( ) ) . ok( ) ;
153
+ }
154
+ Some ( ActorMessage :: NetworkChange ) => {
155
+ trace!( "external network activity detected" ) ;
156
+ last_event. replace( false ) ;
157
+ debounce_interval. reset_immediately( ) ;
158
+ }
159
+ None => {
160
+ debug!( "shutting down, actor receiver gone" ) ;
161
+ break ;
162
+ }
152
163
}
153
- } ,
154
- else => {
155
- break ;
156
164
}
157
165
}
158
166
}
159
-
160
- Ok ( ( ) )
161
167
}
162
168
163
169
fn next_callback_token ( & mut self ) -> CallbackToken {
0 commit comments