diff --git a/src/agreement.rs b/src/agreement.rs index ebadbd0..7b92f7e 100644 --- a/src/agreement.rs +++ b/src/agreement.rs @@ -268,22 +268,20 @@ impl Agreement { self.uid, self.epoch ); - let decision = if vals.len() != 1 { + if vals.len() != 1 { self.estimated = Some(coin); - None } else { // NOTE: `vals` has exactly one element due to `vals.len() == 1` let v: Vec = vals.into_iter().collect(); let b = v[0]; self.estimated = Some(b); // Outputting a value is allowed only once. - if self.output.is_none() && b == coin { + if self.decision.is_none() && b == coin { // Output the agreement value. self.output = Some(b); + // Latch the decided state. + self.decision = Some(b); debug!("Agreement instance {:?} output: {}", self.uid, b); - self.output - } else { - None } }; @@ -291,11 +289,6 @@ impl Agreement { self.sent_bval.insert(b); self.messages .push_back(AgreementMessage::BVal(self.epoch, b)); - self.output = decision; - // Latch the decided state. - if decision.is_some() { - self.decision = decision; - } } } diff --git a/src/common_subset.rs b/src/common_subset.rs index eb39696..b289053 100644 --- a/src/common_subset.rs +++ b/src/common_subset.rs @@ -12,7 +12,7 @@ use agreement::{Agreement, AgreementMessage}; use broadcast; use broadcast::{Broadcast, BroadcastMessage}; use fmt::HexBytes; -use messaging::{DistAlgorithm, MessageIter, OutputIter, Target, TargetedMessage}; +use messaging::{DistAlgorithm, Target, TargetedMessage}; // TODO: Make this a generic argument of `Broadcast`. type ProposedValue = Vec;