Struct raftstore::store::LocalReader[][src]

pub struct LocalReader<C, E> where
    C: ProposalRouter<E::Snapshot>,
    E: KvEngine
{ store_id: Cell<Option<u64>>, store_meta: Arc<Mutex<StoreMeta>>, kv_engine: E, metrics: ReadMetrics, delegates: LruCache<u64, Arc<ReadDelegate>>, snap_cache: Option<Arc<E::Snapshot>>, cache_read_id: ThreadReadId, router: C, }

Fields

store_id: Cell<Option<u64>>store_meta: Arc<Mutex<StoreMeta>>kv_engine: Emetrics: ReadMetricsdelegates: LruCache<u64, Arc<ReadDelegate>>snap_cache: Option<Arc<E::Snapshot>>cache_read_id: ThreadReadIdrouter: C

Implementations

impl<C, E> LocalReader<C, E> where
    C: ProposalRouter<E::Snapshot>,
    E: KvEngine
[src]

pub fn new(kv_engine: E, store_meta: Arc<Mutex<StoreMeta>>, router: C) -> Self[src]

fn redirect(&mut self, cmd: RaftCommand<E::Snapshot>)[src]

fn get_delegate(&mut self, region_id: u64) -> Option<Arc<ReadDelegate>>[src]

fn pre_propose_raft_command(
    &mut self,
    req: &RaftCmdRequest
) -> Result<Option<(Arc<ReadDelegate>, RequestPolicy)>>
[src]

pub fn propose_raft_command(
    &mut self,
    read_id: Option<ThreadReadId>,
    req: RaftCmdRequest,
    cb: Callback<E::Snapshot>
)
[src]

pub fn read(
    &mut self,
    read_id: Option<ThreadReadId>,
    req: RaftCmdRequest,
    cb: Callback<E::Snapshot>
)
[src]

If read requests are received at the same RPC request, we can create one snapshot for all of them and check whether the time when the snapshot was created is in lease. We use ThreadReadId to figure out whether this RaftCommand comes from the same RPC request with the last RaftCommand which left a snapshot cached in LocalReader. ThreadReadId is composed by thread_id and a thread_local incremental sequence.

pub fn release_snapshot_cache(&mut self)[src]

Trait Implementations

impl<C, E> Clone for LocalReader<C, E> where
    C: ProposalRouter<E::Snapshot> + Clone,
    E: KvEngine
[src]

impl<C, E> ReadExecutor<E> for LocalReader<C, E> where
    C: ProposalRouter<E::Snapshot>,
    E: KvEngine
[src]

Auto Trait Implementations

impl<C, E> !RefUnwindSafe for LocalReader<C, E>

impl<C, E> Send for LocalReader<C, E> where
    C: Send

impl<C, E> !Sync for LocalReader<C, E>

impl<C, E> Unpin for LocalReader<C, E> where
    C: Unpin

impl<C, E> UnwindSafe for LocalReader<C, E> where
    C: UnwindSafe,
    E: UnwindSafe,
    <E as KvEngine>::Snapshot: RefUnwindSafe

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> SendSyncUnwindSafe for T where
    T: Send + Sync + UnwindSafe + ?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]