mirror of
https://github.com/mikedilger/gossip.git
synced 2024-09-29 08:21:47 +00:00
Handle no relays condition without panicking
This commit is contained in:
parent
4bb845c67d
commit
237e8b8bb2
@ -30,6 +30,9 @@ impl RelayAssignment {
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
#[allow(clippy::enum_variant_names)]
|
||||
pub enum RelayPickFailure {
|
||||
/// No relays to pick from
|
||||
NoRelays,
|
||||
|
||||
/// No people left to assign. A good result.
|
||||
NoPeopleLeft,
|
||||
|
||||
@ -40,6 +43,7 @@ pub enum RelayPickFailure {
|
||||
impl fmt::Display for RelayPickFailure {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
match *self {
|
||||
RelayPickFailure::NoRelays => write!(f, "No relays to pick from."),
|
||||
RelayPickFailure::NoPeopleLeft => write!(f, "All people accounted for."),
|
||||
RelayPickFailure::NoProgress => write!(f, "Unable to make further progress."),
|
||||
}
|
||||
@ -199,6 +203,10 @@ impl RelayTracker {
|
||||
return Err(RelayPickFailure::NoPeopleLeft);
|
||||
}
|
||||
|
||||
if self.all_relays.is_empty() {
|
||||
return Err(RelayPickFailure::NoRelays);
|
||||
}
|
||||
|
||||
// Keep score for each relay
|
||||
let scoreboard: DashMap<RelayUrl, u64> = self
|
||||
.all_relays
|
||||
|
Loading…
Reference in New Issue
Block a user