use std::fmt::Display;
use std::fmt::Formatter;
use display_more::DisplayOptionExt;
use crate::RaftTypeConfig;
use crate::type_config::alias::CommittedVoteOf;
use crate::type_config::alias::LogIdOf;
#[derive(Debug, Clone)]
#[derive(PartialEq, Eq)]
pub(crate) struct ReplicationSessionId<C>
where C: RaftTypeConfig
{
pub(crate) leader_vote: CommittedVoteOf<C>,
pub(crate) membership_log_id: Option<LogIdOf<C>>,
}
impl<C> Display for ReplicationSessionId<C>
where C: RaftTypeConfig
{
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(
f,
"(leader_vote:{}, membership_log_id:{})",
self.leader_vote,
self.membership_log_id.display()
)
}
}
impl<C> ReplicationSessionId<C>
where C: RaftTypeConfig
{
pub(crate) fn new(vote: CommittedVoteOf<C>, membership_log_id: Option<LogIdOf<C>>) -> Self {
Self {
leader_vote: vote,
membership_log_id,
}
}
}