diff --git a/protocols/kad/src/behaviour.rs b/protocols/kad/src/behaviour.rs index 501b8845..15f71982 100644 --- a/protocols/kad/src/behaviour.rs +++ b/protocols/kad/src/behaviour.rs @@ -276,6 +276,11 @@ where } } + /// Get a mutable reference to internal record store. + pub fn store_mut(&mut self) -> &mut TStore { + &mut self.records + } + /// Bootstraps the local node to join the DHT. /// /// Bootstrapping is a multi-step operation that starts with a lookup of the local node's diff --git a/protocols/kad/src/record.rs b/protocols/kad/src/record.rs index 611acaa2..4296cf61 100644 --- a/protocols/kad/src/record.rs +++ b/protocols/kad/src/record.rs @@ -78,6 +78,15 @@ impl Default for MemoryRecordStorage { } } +impl MemoryRecordStorage { + /// Retain the elements by a predicate. + pub fn retain(&mut self, f: F) + where F: FnMut(&Multihash, &mut Record) -> bool + { + self.records.retain(f); + } +} + impl RecordStore for MemoryRecordStorage { fn get(&self, k: &Multihash) -> Option> { match self.records.get(k) {