Struct tikv::server::RaftClient[][src]

pub struct RaftClient<S, R, E> {
    pool: Arc<Mutex<ConnectionPool>>,
    cache: LruCache<(u64, usize), CachedQueue>,
    need_flush: Vec<(u64, usize)>,
    full_stores: Vec<(u64, usize)>,
    future_pool: Arc<ThreadPool<TaskCell>>,
    builder: ConnectionBuilder<S, R>,
    engine: PhantomData<E>,
}

A raft client that can manages connections correctly.

A correct usage of raft client is:

for m in msgs {
    if !raft_client.send(m) {
        // handle error.   
    }
}
raft_client.flush();

Fields

pool: Arc<Mutex<ConnectionPool>>cache: LruCache<(u64, usize), CachedQueue>need_flush: Vec<(u64, usize)>full_stores: Vec<(u64, usize)>future_pool: Arc<ThreadPool<TaskCell>>builder: ConnectionBuilder<S, R>engine: PhantomData<E>

Implementations

impl<S, R, E> RaftClient<S, R, E> where
    S: StoreAddrResolver + Send + 'static,
    R: RaftStoreRouter<E> + Unpin + Send + 'static,
    E: KvEngine
[src]

pub fn new(builder: ConnectionBuilder<S, R>) -> RaftClient<S, R, E>[src]

fn load_stream(&mut self, store_id: u64, conn_id: usize) -> bool[src]

Loads connection from pool.

Creates it if it doesn’t exist. false is returned if such connection can’t be established.

pub fn send(&mut self, msg: RaftMessage) -> Result<(), DiscardReason>[src]

Sends a message.

If the message fails to be sent, false is returned. Returning true means the message is enqueued to buffer. Caller is expected to call flush to ensure all buffered messages are sent out.

pub fn need_flush(&self) -> bool[src]

fn flush_full_metrics(&mut self)[src]

pub fn flush(&mut self)[src]

Flushes all buffered messages.

Trait Implementations

impl<S, R, E> Clone for RaftClient<S, R, E> where
    S: Clone,
    R: Clone
[src]

Auto Trait Implementations

impl<S, R, E> !RefUnwindSafe for RaftClient<S, R, E>

impl<S, R, E> Send for RaftClient<S, R, E> where
    E: Send,
    R: Send,
    S: Send

impl<S, R, E> !Sync for RaftClient<S, R, E>

impl<S, R, E> Unpin for RaftClient<S, R, E> where
    E: Unpin,
    R: Unpin,
    S: Unpin

impl<S, R, E> !UnwindSafe for RaftClient<S, R, E>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<V, W> ConvertFrom<W> for V where
    W: ConvertTo<V>, 
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pointable for T[src]

type Init = T

The type for initializers.

impl<T> Pointable for T[src]

type Init = T

The type for initializers.

impl<T> Same<T> for T[src]

type Output = T

Should always be Self

impl<T> Sealed<T> for T where
    T: ?Sized
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 
[src]