Skip to content

Commit 6a859d0

Browse files
committed
hookup heartbeat in connection recovery process
1 parent 92066b4 commit 6a859d0

3 files changed

Lines changed: 19 additions & 2 deletions

File tree

src/channels.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff 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

src/heartbeat.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff 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
}

src/killswitch.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff 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
}

0 commit comments

Comments
 (0)