Struct raftstore::store::replication_mode::StoreGroup [−][src]
A registry that maps store to a group.
A group ID is generated according to the label value. Stores with same label value will be mapped to the same group ID.
Fields
labels: HashMap<u64, Vec<StoreLabel>>
label_ids: HashMap<String, u64>
stores: HashMap<u64, u64>
label_key: String
version: u64
dirty: bool
Implementations
impl StoreGroup
[src]
pub fn backup_store_labels(&mut self, store: &mut Store)
[src]
Backs store labels.
When using majority mode, labels still need to be backup for future usage. Should only call it in majority mode.
pub fn register_store(
&mut self,
store_id: u64,
labels: Vec<StoreLabel>
) -> Option<u64>
[src]
&mut self,
store_id: u64,
labels: Vec<StoreLabel>
) -> Option<u64>
Registers the store with given label value.
Panics
Panics if the store is registered twice with different store ID.
pub fn group_id(&self, version: u64, store_id: u64) -> Option<u64>
[src]
Gets the group ID of store.
Different version may indicates different label key. If version is less than
recorded one, then label key has to be changed, new value can’t be mixed with
old values, so None
is returned. If version is larger, then label key must
still matches. Because recalculate
is called before updating regions’
replication status, so unchanged recorded version means unchanged label key.
fn recalculate(&mut self, status: &ReplicationStatus)
[src]
Clears id caches and recalculates if necessary.
If label key is not changed, the function is no-op.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for StoreGroup
impl Send for StoreGroup
impl Sync for StoreGroup
impl Unpin for StoreGroup
impl UnwindSafe for StoreGroup
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,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<V, W> ConvertFrom<W> for V where
W: ConvertTo<V>,
[src]
W: ConvertTo<V>,
pub fn convert_from(ctx: &mut EvalContext, from: W) -> Result<V, Error>
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Pointable for T
[src]
pub const ALIGN: usize
[src]
type Init = T
The type for initializers.
pub unsafe fn init(init: <T as Pointable>::Init) -> usize
[src]
pub unsafe fn deref<'a>(ptr: usize) -> &'a T
[src]
pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
[src]
pub unsafe fn drop(ptr: usize)
[src]
impl<T> Pointable for T
[src]
pub const ALIGN: usize
[src]
type Init = T
The type for initializers.
pub unsafe fn init(init: <T as Pointable>::Init) -> usize
[src]
pub unsafe fn deref<'a>(ptr: usize) -> &'a T
[src]
pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
[src]
pub unsafe fn drop(ptr: usize)
[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> SendSyncUnwindSafe for T where
T: Send + Sync + UnwindSafe + ?Sized,
[src]
T: Send + Sync + UnwindSafe + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
[src]
V: MultiLane<T>,