mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
fix: ya pub-to 0 checks if any peer is able to receive the message
Issue ===== In https://github.com/sxyazi/yazi/issues/2680, `ya pub-to` received the ability to check if the target peer is able to receive the message that is being sent. However, if the target peer is `0` (sending to all peers), the implementation failed. Solution ======== Check if any peer is able to receive the message when the target peer is `0`.
This commit is contained in:
parent
9d92cdbf79
commit
436b483fb7
1 changed files with 17 additions and 4 deletions
|
|
@ -100,15 +100,28 @@ impl Client {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
match peers.get(&receiver).map(|p| p.able(kind)) {
|
if receiver == 0 {
|
||||||
Some(true) => {}
|
// check if any peer is able to receive the message
|
||||||
|
let any_able =
|
||||||
|
peers.keys().any(|peer| Self::receiver_able(kind, peer, &peers).is_ok()).then_some(());
|
||||||
|
if any_able.is_none() {
|
||||||
|
bail!("No peer is able to receive `{kind}` messages.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Self::receiver_able(kind, &receiver, &peers)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn receiver_able(kind: &str, receiver: &Id, peers: &HashMap<Id, Peer>) -> Result<()> {
|
||||||
|
match peers.get(receiver).map(|p| p.able(kind)) {
|
||||||
|
Some(true) => Ok(()),
|
||||||
Some(false) => {
|
Some(false) => {
|
||||||
bail!("Receiver `{receiver}` does not have the ability to receive `{kind}` messages.")
|
bail!("Receiver `{receiver}` does not have the ability to receive `{kind}` messages.")
|
||||||
}
|
}
|
||||||
None => bail!("Receiver `{receiver}` not found. Check if the receiver is running."),
|
None => bail!("Receiver `{receiver}` not found. Check if the receiver is running."),
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Connect to an existing server and listen in on the messages that are being
|
/// Connect to an existing server and listen in on the messages that are being
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue