Struct tikv::server::raft_client::RaftClient [−][src]
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][−]
S: StoreAddrResolver + Send + 'static,
R: RaftStoreRouter<E> + Unpin + Send + 'static,
E: KvEngine,
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
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,
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,
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][+]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<V, W> ConvertFrom<W> for V where
W: ConvertTo<V>,
[src][+]
W: ConvertTo<V>,
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][+]
U: From<T>,
impl<T> Pointable for T
[src][+]
impl<T> Pointable for T
[src][+]
impl<T> Same<T> for T
[src]
type Output = T
Should always be Self
impl<T> Sealed<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> ToOwned for T where
T: Clone,
[src][+]
T: Clone,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
[src][+]
V: MultiLane<T>,