use crate::error::Result;
use crate::message::{
AppendEntriesRequest, AppendEntriesResponse, InstallSnapshotRequest, InstallSnapshotResponse,
RequestVoteRequest, RequestVoteResponse,
};
pub trait RaftTransport: Send + Sync {
fn append_entries(
&self,
target: u64,
req: AppendEntriesRequest,
) -> impl std::future::Future<Output = Result<AppendEntriesResponse>> + Send;
fn request_vote(
&self,
target: u64,
req: RequestVoteRequest,
) -> impl std::future::Future<Output = Result<RequestVoteResponse>> + Send;
fn install_snapshot(
&self,
target: u64,
req: InstallSnapshotRequest,
) -> impl std::future::Future<Output = Result<InstallSnapshotResponse>> + Send;
}