use ed25519_dalek::VerifyingKey;
use crate::types::{update_sets::ValidatorSetUpdates, validator_set::ValidatorSet};
use super::messages::Message;
pub trait Network: Clone + Send {
fn init_validator_set(&mut self, validator_set: ValidatorSet);
fn update_validator_set(&mut self, updates: ValidatorSetUpdates);
fn broadcast(&mut self, message: Message);
fn send(&mut self, peer: VerifyingKey, message: Message);
fn recv(&mut self) -> Option<(VerifyingKey, Message)>;
}
#[derive(Clone)]
pub(crate) struct ValidatorSetUpdateHandle<N: Network> {
network: N,
}
impl<N: Network> ValidatorSetUpdateHandle<N> {
pub(crate) fn new(network: N) -> Self {
Self { network }
}
pub(crate) fn update_validator_set(&mut self, updates: ValidatorSetUpdates) {
self.network.update_validator_set(updates)
}
}