From e257a05c99afe1097bb02a9073f4e581b4a46dc9 Mon Sep 17 00:00:00 2001 From: onyinyang Date: Thu, 23 Mar 2023 13:21:04 -0400 Subject: [PATCH] Add bridge update --- crates/lox-library/src/lib.rs | 43 +++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/crates/lox-library/src/lib.rs b/crates/lox-library/src/lib.rs index ec352b2..76d94b7 100644 --- a/crates/lox-library/src/lib.rs +++ b/crates/lox-library/src/lib.rs @@ -315,23 +315,36 @@ impl BridgeAuth { // which will include the IP and Port. Then we can replace the original bridge with the updated bridge or else // or else just replace the info field. pub fn bridge_update(&mut self, bridge: &BridgeLine) -> bool { - let mut res: bool = false; //default False to assume that update failed - //Needs to be updated since bridge will only match on some fields. - let positions = self.bridge_table.reachable.get_key_value(bridge); - if let Some(v) = positions { - println!("Bridge v: {:?} has same IP and Port as bridge {:?}.", v.0, bridge); - let mut w = *v.0; - w.info = bridge.info; - if v.0 == bridge { - println!("Yay"); - println!("Now bridge v: {:?} has all fields the same as bridge {:?}.", v.0, bridge); - }else { - println!("Boo"); - } - res = true; - + //Needs to be updated since bridge will only match on some fields. + let reachable_bridges = self.bridge_table.reachable.clone(); + for reachable_bridge in reachable_bridges { + if (reachable_bridge.0.addr == bridge.addr && reachable_bridge.0.port == bridge.port) { + println!( + "Bridge from table: {:?} has same IP and Port as bridge {:?}!", + reachable_bridge.0, bridge + ); + // Search actual table for bridge + let updating_bridge = self + .bridge_table + .reachable + .get_key_value(&reachable_bridge.0); + if let Some(v) = updating_bridge { + let mut w = *v.0; + w.info = bridge.info; + println!( + "Now bridge v: {:?} matches the passed bridge {:?}?", + v.0, bridge + ); + if v.0 == bridge { + println!("Yay"); + res = true; + } else { + println!("Boo"); + } + } } + } res }