Skip to main content

BlobStateMap

Struct BlobStateMap 

Source
pub struct BlobStateMap<C, I> { /* private fields */ }
Expand description

Adapter structure to enable concurrent chunk readiness manipulating based on a base ChunkMap object.

A base ChunkMap, such as IndexedChunkMap, only tracks chunk readiness state, but doesn’t support concurrent manipulating of the chunk readiness state. The BlobStateMap structure acts as an adapter to enable concurrent chunk readiness state manipulation.

Implementations§

Source§

impl BlobStateMap<BlobRangeMap, u64>

Source

pub fn from_range_map(map: BlobRangeMap) -> Self

Create a new instance of BlobStateMap from a BlobRangeMap object.

Trait Implementations§

Source§

impl<C, I> ChunkMap for BlobStateMap<C, I>
where C: ChunkMap + ChunkIndexGetter<Index = I>, I: Eq + Hash + Display + Send + 'static,

Source§

fn is_ready(&self, chunk: &dyn BlobChunkInfo) -> Result<bool>

Check whether the chunk is ready for use.
Source§

fn is_pending(&self, chunk: &dyn BlobChunkInfo) -> Result<bool>

Check whether the chunk is pending for downloading.
Source§

fn check_ready_and_mark_pending( &self, chunk: &dyn BlobChunkInfo, ) -> StorageResult<bool>

Check whether the chunk is ready for use, and mark it as pending if not ready yet. Read more
Source§

fn set_ready_and_clear_pending(&self, chunk: &dyn BlobChunkInfo) -> Result<()>

Set the chunk to ready for use and clear the pending state.
Source§

fn clear_pending(&self, chunk: &dyn BlobChunkInfo)

Clear the pending state of the chunk.
Source§

fn is_persist(&self) -> bool

Check whether the implementation supports state persistence.
Source§

fn as_range_map(&self) -> Option<&dyn RangeMap<I = u32>>

Convert the objet to an RangeMap object.
Source§

fn is_ready_or_pending(&self, chunk: &dyn BlobChunkInfo) -> Result<bool>

Check whether a chunk is ready for use or pending for downloading.
Source§

impl<C, I> From<C> for BlobStateMap<C, I>
where C: ChunkMap + ChunkIndexGetter<Index = I>, I: Eq + Hash + Display,

Source§

fn from(c: C) -> Self

Converts to this type from the input type.
Source§

impl RangeMap for BlobStateMap<BlobRangeMap, u64>

Source§

type I = u64

Source§

fn is_range_all_ready(&self) -> bool

Check whether all chunks or data managed by the RangeMap object are ready.
Source§

fn is_range_ready(&self, start: Self::I, count: Self::I) -> Result<bool>

Check whether all chunks or data in the range are ready for use.
Source§

fn check_range_ready_and_mark_pending( &self, start: Self::I, count: Self::I, ) -> Result<Option<Vec<Self::I>>>

Check whether all chunks or data in the range [start, start + count) are ready. Read more
Source§

fn set_range_ready_and_clear_pending( &self, start: Self::I, count: Self::I, ) -> Result<()>

Mark all chunks or data in the range as ready for use.
Source§

fn clear_range_pending(&self, start: Self::I, count: Self::I)

Clear the pending state for all chunks or data in the range.
Source§

fn wait_for_range_ready(&self, start: Self::I, count: Self::I) -> Result<bool>

Wait for all chunks or data in the range to be ready until timeout.
Source§

impl RangeMap for BlobStateMap<IndexedChunkMap, u32>

Source§

type I = u32

Source§

fn is_range_all_ready(&self) -> bool

Check whether all chunks or data managed by the RangeMap object are ready.
Source§

fn is_range_ready(&self, start: Self::I, count: Self::I) -> Result<bool>

Check whether all chunks or data in the range are ready for use.
Source§

fn check_range_ready_and_mark_pending( &self, start: Self::I, count: Self::I, ) -> Result<Option<Vec<Self::I>>>

Check whether all chunks or data in the range [start, start + count) are ready. Read more
Source§

fn set_range_ready_and_clear_pending( &self, start: Self::I, count: Self::I, ) -> Result<()>

Mark all chunks or data in the range as ready for use.
Source§

fn clear_range_pending(&self, start: Self::I, count: Self::I)

Clear the pending state for all chunks or data in the range.
Source§

fn wait_for_range_ready(&self, start: Self::I, count: Self::I) -> Result<bool>

Wait for all chunks or data in the range to be ready until timeout.

Auto Trait Implementations§

§

impl<C, I> !Freeze for BlobStateMap<C, I>

§

impl<C, I> RefUnwindSafe for BlobStateMap<C, I>
where C: RefUnwindSafe,

§

impl<C, I> Send for BlobStateMap<C, I>
where C: Send, I: Send,

§

impl<C, I> Sync for BlobStateMap<C, I>
where C: Sync, I: Send,

§

impl<C, I> Unpin for BlobStateMap<C, I>
where C: Unpin, I: Unpin,

§

impl<C, I> UnsafeUnpin for BlobStateMap<C, I>
where C: UnsafeUnpin,

§

impl<C, I> UnwindSafe for BlobStateMap<C, I>
where C: UnwindSafe,

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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