Struct raftify::Raft

source ·
pub struct Raft<LogEntry: AbstractLogEntry + 'static, FSM: AbstractStateMachine + Clone + 'static> {
    pub raft_node: RaftNode<LogEntry, FSM>,
    pub raft_server: RaftServer<LogEntry, FSM>,
    pub tx_server: Sender<ServerRequestMsg<LogEntry, FSM>>,
    pub logger: Arc<dyn Logger>,
}
Expand description

This structure contains functions required for Raft bootstrap along with RaftNode and RaftServer instances. The bootstrap function returns an instance of the Raft type that deref to RaftNode type, allowing the use of functions necessary for interaction with the cluster.

Fields§

§raft_node: RaftNode<LogEntry, FSM>§raft_server: RaftServer<LogEntry, FSM>§tx_server: Sender<ServerRequestMsg<LogEntry, FSM>>§logger: Arc<dyn Logger>

Implementations§

source§

impl<LogEntry: AbstractLogEntry, FSM: AbstractStateMachine + Clone + Send + Sync + 'static> Raft<LogEntry, FSM>

source

pub fn bootstrap<A: ToSocketAddrs>( node_id: u64, raft_addr: A, fsm: FSM, config: Config, logger: Arc<dyn Logger> ) -> Result<Self>

Creates a new Raft instance. Cloning a Raft instance does not bootstrap a new Raft instance. To bootstrap a new Raft instance, call this associated function.

source

pub async fn run(self) -> Result<()>

Starts the RaftNode and RaftServer.

source

pub async fn request_id<A: ToSocketAddrs>( raft_addr: A, peer_addr: String ) -> Result<ClusterJoinTicket>

Requests a cluster join ticket from the peer. You can use this to dynamically add members in addition to initial_peers.

Methods from Deref<Target = RaftNode<LogEntry, FSM>>§

source

pub async fn is_leader(&self) -> bool

source

pub async fn get_id(&self) -> u64

source

pub async fn get_leader_id(&self) -> u64

source

pub async fn get_peers(&self) -> Peers

source

pub async fn add_peer<A: ToSocketAddrs>( &self, id: u64, addr: A, role: Option<InitialRole> )

source

pub async fn add_peers(&self, peers: HashMap<u64, SocketAddr>)

source

pub async fn inspect(&self) -> Result<String>

source

pub async fn state_machine(&self) -> FSM

source

pub async fn storage(&self) -> HeedStorage

source

pub async fn propose(&self, proposal: Vec<u8>) -> Result<()>

source

pub async fn change_config( &self, conf_change: ConfChangeV2 ) -> ConfChangeResponseResult

source

pub async fn get_cluster_size(&self) -> usize

source

pub async fn quit(&self)

source

pub async fn transfer_leader(&self, node_id: u64)

source

pub async fn campaign(&self)

source

pub async fn demote(&self, term: u64, leader_id: u64)

source

pub async fn leave(&self)

source

pub async fn leave_joint(&self)

source

pub async fn send_message(&self, message: RaftMessage)

source

pub async fn make_snapshot(&self, index: u64, term: u64)

source

pub async fn join_cluster(&self, tickets: Vec<ClusterJoinTicket>)

Trait Implementations§

source§

impl<LogEntry: Clone + AbstractLogEntry + 'static, FSM: Clone + AbstractStateMachine + Clone + 'static> Clone for Raft<LogEntry, FSM>

source§

fn clone(&self) -> Raft<LogEntry, FSM>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<LogEntry: AbstractLogEntry + 'static, FSM: AbstractStateMachine + Clone + 'static> Deref for Raft<LogEntry, FSM>

§

type Target = RaftNode<LogEntry, FSM>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.

Auto Trait Implementations§

§

impl<LogEntry, FSM> Freeze for Raft<LogEntry, FSM>

§

impl<LogEntry, FSM> !RefUnwindSafe for Raft<LogEntry, FSM>

§

impl<LogEntry, FSM> Send for Raft<LogEntry, FSM>

§

impl<LogEntry, FSM> Sync for Raft<LogEntry, FSM>

§

impl<LogEntry, FSM> Unpin for Raft<LogEntry, FSM>

§

impl<LogEntry, FSM> !UnwindSafe for Raft<LogEntry, FSM>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromRef<T> for T
where T: Clone,

source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more