File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -280,8 +280,8 @@ impl Channels {
280280 }
281281
282282 pub ( crate ) fn init_connection_recovery ( & self , error : Error ) {
283+ self . heartbeat . reset ( ) ;
283284 self . connection_status . set_reconnecting ( ) ;
284- // FIXME: reset heartbeat
285285 self . lock_inner ( )
286286 . channels
287287 . values ( )
@@ -292,7 +292,7 @@ impl Channels {
292292 }
293293
294294 pub ( crate ) async fn start_recovery ( & self ) -> Result < ( ) > {
295- // FIXME: reopen connection and restart heartbeat
295+ // FIXME: reopen connection
296296
297297 let channels = self
298298 . lock_inner ( )
@@ -307,6 +307,8 @@ impl Channels {
307307 channel. start_recovery ( ) . await ?;
308308 }
309309
310+ self . start_heartbeat ( ) ;
311+
310312 Ok ( ( ) )
311313 }
312314
Original file line number Diff line number Diff line change @@ -72,6 +72,11 @@ impl Heartbeat {
7272 self . lock_inner ( ) . timeout = None ;
7373 }
7474
75+ pub ( crate ) fn reset ( & self ) {
76+ self . killswitch . reset ( ) ;
77+ self . lock_inner ( ) . reset ( ) ;
78+ }
79+
7580 fn lock_inner ( & self ) -> MutexGuard < ' _ , Inner > {
7681 self . inner . lock ( ) . unwrap_or_else ( |e| e. into_inner ( ) )
7782 }
@@ -130,4 +135,10 @@ impl Inner {
130135 fn update_last_read ( & mut self ) {
131136 self . last_read = Instant :: now ( ) ;
132137 }
138+
139+ fn reset ( & mut self ) {
140+ self . update_last_read ( ) ;
141+ self . update_last_write ( ) ;
142+ self . timeout = None ;
143+ }
133144}
Original file line number Diff line number Diff line change @@ -14,4 +14,8 @@ impl KillSwitch {
1414 pub ( crate ) fn killed ( & self ) -> bool {
1515 self . 0 . load ( Ordering :: SeqCst )
1616 }
17+
18+ pub ( crate ) fn reset ( & self ) {
19+ self . 0 . store ( false , Ordering :: SeqCst )
20+ }
1721}
You can’t perform that action at this time.
0 commit comments