use crate::{Id, NodeData};
use std::collections::BTreeMap;
pub trait Module {
fn name(&self) -> &'static str;
fn select_gossips(
&self,
our_node: &NodeData,
gossip_recipient: &NodeData,
known_nodes: &BTreeMap<Id, NodeData>,
) -> BTreeMap<Id, NodeData>;
fn update(&mut self, our_node: &NodeData, known_nodes: &BTreeMap<Id, NodeData>);
fn view(&self, known_nodes: &BTreeMap<Id, NodeData>, view: &mut BTreeMap<Id, NodeData>);
}
pub trait FilterModule {
fn name(&self) -> &'static str;
fn filter(
&self,
_our_node: &NodeData,
_other_nodes: BTreeMap<Id, NodeData>,
) -> BTreeMap<Id, NodeData>;
}