use aingle_wal::WalEntryKind;
use serde::{Deserialize, Serialize};
use std::fmt;
pub type NodeId = u64;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct CortexRequest {
pub kind: WalEntryKind,
}
impl Eq for CortexRequest {}
impl fmt::Display for CortexRequest {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "CortexRequest({:?})", std::mem::discriminant(&self.kind))
}
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct CortexResponse {
pub success: bool,
pub detail: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
impl fmt::Display for CortexResponse {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "CortexResponse(success={})", self.success)
}
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub struct CortexNode {
pub rest_addr: String,
pub p2p_addr: String,
}
impl fmt::Display for CortexNode {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"CortexNode(rest={}, p2p={})",
self.rest_addr, self.p2p_addr
)
}
}
openraft::declare_raft_types!(
pub CortexTypeConfig:
D = CortexRequest,
R = CortexResponse,
Node = CortexNode,
NodeId = NodeId,
);