Try reconnecting to disconnected deck before giving up
This commit is contained in:
parent
b72b8e0b9f
commit
6345fc102d
|
@ -34,8 +34,9 @@ struct ConnectedDeck {
|
|||
struct Inner {
|
||||
pending_ports: HashSet<String>,
|
||||
connected_decks: HashMap<String, ConnectedDeck>,
|
||||
children: HashMap<usize, String>,
|
||||
ignored_ports: HashSet<String>,
|
||||
retrying_ports: HashSet<String>,
|
||||
children: HashMap<usize, String>,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
|
@ -117,17 +118,19 @@ impl Manager {
|
|||
)
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip(_ctx))]
|
||||
#[tracing::instrument(skip(ctx))]
|
||||
fn on_remove<'a>(
|
||||
&'a mut self,
|
||||
child_id: usize,
|
||||
_ctx: &'a mut Context<ManagerMessage>,
|
||||
ctx: &'a mut Context<ManagerMessage>,
|
||||
) -> BoxFuture<'a> {
|
||||
Box::pin(
|
||||
async move {
|
||||
let mut inner = self.inner.write().await;
|
||||
if let Some(port_name) = inner.children.remove(&child_id) {
|
||||
inner.connected_decks.remove(&port_name);
|
||||
inner.retrying_ports.insert(port_name.clone());
|
||||
ctx.handle().send(ManagerMessage::Found(port_name)).await?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
@ -142,7 +145,10 @@ impl Manager {
|
|||
#[tracing::instrument]
|
||||
async fn ignored(&mut self, port_name: String) -> tokio_actors::Result<()> {
|
||||
tracing::debug!("ignored");
|
||||
self.inner.write().await.ignored_ports.insert(port_name);
|
||||
let mut inner = self.inner.write().await;
|
||||
if !inner.retrying_ports.remove(&port_name) {
|
||||
inner.ignored_ports.insert(port_name);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue