use snarkvm::prelude::Network;
use core::hash::Hash;
use indexmap::IndexSet;
use std::net::SocketAddr;
pub type PrepareSyncRequest<N> = (Option<<N as Network>::BlockHash>, Option<<N as Network>::BlockHash>, usize);
pub type SyncRequest<N> = (Option<<N as Network>::BlockHash>, Option<<N as Network>::BlockHash>, IndexSet<SocketAddr>);
#[derive(Copy, Clone, Debug)]
pub(crate) struct PeerPair(pub SocketAddr, pub SocketAddr);
impl PeerPair {
pub fn contains(&self, peer_ip: &SocketAddr) -> bool {
peer_ip == &self.0 || peer_ip == &self.1
}
}
impl Eq for PeerPair {}
impl PartialEq for PeerPair {
fn eq(&self, other: &Self) -> bool {
(self.0 == other.0 && self.1 == other.1) || (self.0 == other.1 && self.1 == other.0)
}
}
impl Hash for PeerPair {
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
let (a, b) = if self.0 < self.1 { (self.0, self.1) } else { (self.1, self.0) };
a.hash(state);
b.hash(state);
}
}