Skip to main content

RaftServiceImpl

Struct RaftServiceImpl 

Source
pub struct RaftServiceImpl { /* private fields */ }
Expand description

Internal gRPC service implementation for Raft protocol communications. This service handles the core Raft consensus protocol operations between cluster nodes.

§Responsibilities

  • Vote requests/responses during leader election
  • Log replication between nodes
  • Snapshot installation for state synchronization

§Protocol Safety

This service implements critical consensus protocol operations and should only be exposed to other trusted Raft cluster nodes, never to external clients.

Implementations§

Source§

impl RaftServiceImpl

Source

pub fn new(raft_node: Raft<TypeConfig>) -> Self

Creates a new instance of the internal service

§Arguments
  • raft_node - The Raft node instance this service will operate on

Trait Implementations§

Source§

impl RaftService for RaftServiceImpl

Source§

fn vote<'life0, 'async_trait>( &'life0 self, request: Request<VoteRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<VoteResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Handles vote requests during leader election.

§Arguments
  • request - The vote request containing candidate information
§Returns
  • Ok(Response) - Vote response indicating whether the vote was granted
  • Err(Status) - Error status if the vote operation fails
§Protocol Details

This implements the RequestVote RPC from the Raft protocol. Nodes vote for candidates based on log completeness and term numbers.

Source§

fn append_entries<'life0, 'async_trait>( &'life0 self, request: Request<AppendEntriesRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<AppendEntriesResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Handles append entries requests for log replication.

§Arguments
  • request - The append entries request containing log entries to replicate
§Returns
  • Ok(Response) - Response indicating success/failure of the append operation
  • Err(Status) - Error status if the append operation fails
§Protocol Details

This implements the AppendEntries RPC from the Raft protocol. Used for both log replication and as heartbeat mechanism.

Source§

fn snapshot<'life0, 'async_trait>( &'life0 self, request: Request<Streaming<SnapshotRequest>>, ) -> Pin<Box<dyn Future<Output = Result<Response<SnapshotResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Handles snapshot installation requests for state transfer using streaming.

§Arguments
  • request - Stream of snapshot chunks with metadata
§Returns
  • Ok(Response) - Response indicating success/failure of snapshot installation
  • Err(Status) - Error status if the snapshot operation fails
Source§

fn stream_append<'life0, 'async_trait>( &'life0 self, request: Request<Streaming<AppendEntriesRequest>>, ) -> Pin<Box<dyn Future<Output = Result<Response<Self::StreamAppendStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Handles streaming append entries requests for pipeline replication.

This enables efficient pipelining of log replication where multiple AppendEntries requests can be in-flight simultaneously.

Source§

type StreamAppendStream = Pin<Box<dyn Stream<Item = Result<AppendEntriesResponse, Status>> + Send>>

Server streaming response type for the StreamAppend method.

Auto Trait Implementations§

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<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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
Source§

impl<T> OptionalSend for T
where T: Send + ?Sized,

Source§

impl<T> OptionalSync for T
where T: Sync + ?Sized,