riteraft 0.1.0

RiteRaft - A raft framework, for regular people
Documentation
use std::collections::HashMap;

use raft::eraftpb::{ConfChange, Message as RaftMessage};
use serde::{Deserialize, Serialize};
use tokio::sync::oneshot::Sender;

#[derive(Serialize, Deserialize, Debug)]
pub enum RaftResponse {
    WrongLeader {
        leader_id: u64,
        leader_addr: String,
    },
    JoinSuccess {
        assigned_id: u64,
        peer_addrs: HashMap<u64, String>,
    },
    IdReserved {
        leader_id: u64,
        reserved_id: u64,
        peer_addrs: HashMap<u64, String>,
    },
    Error,
    Response {
        data: Vec<u8>,
    },
    Ok,
}

#[allow(dead_code)]
pub enum Message {
    Propose {
        proposal: Vec<u8>,
        chan: Sender<RaftResponse>,
    },
    ConfigChange {
        change: ConfChange,
        chan: Sender<RaftResponse>,
    },
    RequestId {
        addr: String,
        chan: Sender<RaftResponse>,
    },
    ReportUnreachable {
        node_id: u64,
    },
    Raft(Box<RaftMessage>),
}