use serde::{Deserialize, Serialize};
use std::net::SocketAddr;
use xor_name::{XorName, XOR_NAME_LEN};
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, Debug)]
pub struct NodeState {
pub name: XorName,
pub addr: SocketAddr,
pub state: MembershipState,
pub previous_name: Option<XorName>,
}
impl NodeState {
pub fn age(&self) -> u8 {
self.name[XOR_NAME_LEN - 1]
}
}
#[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, Debug)]
pub enum MembershipState {
Joined,
Left,
Relocated(XorName),
}