use serde::{Deserialize, Serialize};
use crate::core::State;
use crate::raft::MembershipConfig;
use crate::NodeId;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct RaftMetrics {
pub id: NodeId,
pub state: State,
pub current_term: u64,
pub last_log_index: u64,
pub last_applied: u64,
pub current_leader: Option<NodeId>,
pub membership_config: MembershipConfig,
}
impl RaftMetrics {
pub(crate) fn new_initial(id: NodeId) -> Self {
let membership_config = MembershipConfig::new_initial(id);
Self {
id,
state: State::Follower,
current_term: 0,
last_log_index: 0,
last_applied: 0,
current_leader: None,
membership_config,
}
}
}