Struct Raft

Source
pub struct Raft<S: Store + 'static> { /* private fields */ }

Implementations§

Source§

impl<S: Store + Send + Sync + 'static> Raft<S>

Source

pub fn new<A: ToSocketAddrs>( laddr: A, store: S, logger: Logger, cfg: Config, ) -> Result<Self>

Creates a new Raft node with the provided address, store, logger, and configuration. The node communicates with other peers using a mailbox.

Source

pub fn mailbox(&self) -> Mailbox

Returns a Mailbox for the Raft node, which facilitates communication with peers.

Source

pub async fn find_leader_info( &self, peer_addrs: Vec<String>, ) -> Result<Option<(u64, String)>>

Finds leader information by querying a list of peer addresses. Returns the leader ID and its address if found.

Source

pub async fn lead(self, node_id: u64) -> Result<()>

The lead function transitions the current node to the leader role in a Raft cluster. It initializes the leader node and runs both the Raft server and the node concurrently. The function will return once the server or node experiences an error, or when the leader role is relinquished.

§Arguments
  • node_id - The unique identifier for the node.
§Returns

A Result<()> indicating success or failure during the process.

Source

pub async fn join( self, node_id: u64, node_addr: String, leader_id: Option<u64>, leader_addr: String, ) -> Result<()>

The join function is used to make the current node join an existing Raft cluster. It tries to discover the current leader, communicates with the leader to join the cluster, and configures the node as a follower.

§Arguments
  • node_id - The unique identifier for the current node.
  • node_addr - The address of the current node.
  • leader_id - The optional leader node’s identifier (if already known).
  • leader_addr - The address of the leader node.
§Returns

A Result<()> indicating success or failure during the joining process.

Auto Trait Implementations§

§

impl<S> Freeze for Raft<S>
where S: Freeze,

§

impl<S> !RefUnwindSafe for Raft<S>

§

impl<S> Send for Raft<S>

§

impl<S> Sync for Raft<S>

§

impl<S> Unpin for Raft<S>
where S: Unpin,

§

impl<S> !UnwindSafe for Raft<S>

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> 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

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>,

Source§

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