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>
impl BlobStateMap<BlobRangeMap, u64>
Sourcepub fn from_range_map(map: BlobRangeMap) -> Self
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>
impl<C, I> ChunkMap for BlobStateMap<C, I>
Source§fn is_ready(&self, chunk: &dyn BlobChunkInfo) -> Result<bool>
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>
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>
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<()>
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)
fn clear_pending(&self, chunk: &dyn BlobChunkInfo)
Clear the pending state of the chunk.
Source§fn is_persist(&self) -> bool
fn is_persist(&self) -> bool
Check whether the implementation supports state persistence.
Source§fn as_range_map(&self) -> Option<&dyn RangeMap<I = u32>>
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>
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>
impl<C, I> From<C> for BlobStateMap<C, I>
Source§impl RangeMap for BlobStateMap<BlobRangeMap, u64>
impl RangeMap for BlobStateMap<BlobRangeMap, u64>
type I = u64
Source§fn is_range_all_ready(&self) -> bool
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>
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>>>
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<()>
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)
fn clear_range_pending(&self, start: Self::I, count: Self::I)
Clear the pending state for all chunks or data in the range.
Source§impl RangeMap for BlobStateMap<IndexedChunkMap, u32>
impl RangeMap for BlobStateMap<IndexedChunkMap, u32>
type I = u32
Source§fn is_range_all_ready(&self) -> bool
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>
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>>>
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<()>
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)
fn clear_range_pending(&self, start: Self::I, count: Self::I)
Clear the pending state for all chunks or data in the range.
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>
impl<C, I> Sync for BlobStateMap<C, I>
impl<C, I> Unpin for BlobStateMap<C, I>
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more