pub struct BlockIterator {
block: BlockHolder,
restart_point_index: usize,
offset: usize,
key: BytesMut,
value_range: Range<usize>,
entry_len: usize,
last_key_len_type: LenType,
last_value_len_type: LenType,
hitmap: LocalHitmap<{ Block::HITMAP_ELEMS }>,
}
Expand description
BlockIterator
is used to read kv pairs in a block.
Fields§
§block: BlockHolder
Block that iterates on.
restart_point_index: usize
Current restart point index.
offset: usize
Current offset.
key: BytesMut
Current key.
value_range: Range<usize>
Current value.
entry_len: usize
Current entry len.
last_key_len_type: LenType
§last_value_len_type: LenType
§hitmap: LocalHitmap<{ Block::HITMAP_ELEMS }>
NOTE:
hitmap
is supposed to be updated each time accessing the block data in a new position.hitmap
must be reported to the block hitmap before drop.
Implementations§
source§impl BlockIterator
impl BlockIterator
pub fn new(block: BlockHolder) -> Self
pub fn next(&mut self)
pub fn try_next(&mut self) -> bool
pub fn prev(&mut self)
pub fn try_prev(&mut self) -> bool
pub fn table_id(&self) -> TableId
pub fn key(&self) -> FullKey<&[u8]>
pub fn value(&self) -> &[u8] ⓘ
pub fn is_valid(&self) -> bool
pub fn seek_to_first(&mut self)
pub fn seek_to_last(&mut self)
pub fn seek(&mut self, key: FullKey<&[u8]>)
pub fn seek_le(&mut self, key: FullKey<&[u8]>)
source§impl BlockIterator
impl BlockIterator
sourcefn invalidate(&mut self)
fn invalidate(&mut self)
Invalidates current state after reaching a invalid state.
sourcefn next_inner(&mut self)
fn next_inner(&mut self)
Moving to the next entry
Note: The current state may be invalid if there is no more data to read
sourcefn try_next_inner(&mut self) -> bool
fn try_next_inner(&mut self) -> bool
Try moving to the next entry.
The current state will still be valid if there is no more data to read.
Return: true is the iterator is advanced and false otherwise.
sourcefn next_until_key(&mut self, key: FullKey<&[u8]>)
fn next_until_key(&mut self, key: FullKey<&[u8]>)
Moves forward until reaching the first that equals or larger than the given key
.
sourcefn prev_until_key(&mut self, key: FullKey<&[u8]>)
fn prev_until_key(&mut self, key: FullKey<&[u8]>)
Moves backward until reaching the first key that equals or smaller than the given key
.
sourcefn next_until_prev_offset(&mut self, offset: usize)
fn next_until_prev_offset(&mut self, offset: usize)
Moves forward until the position reaches the previous position of the given next_offset
or
the last valid position if exists.
sourcefn prev_inner(&mut self)
fn prev_inner(&mut self)
Moving to the previous entry
Note: The current state may be invalid if there is no more data to read
sourcefn try_prev_inner(&mut self) -> bool
fn try_prev_inner(&mut self) -> bool
Try moving to the previous entry.
The current state will still be valid if there is no more data to read.
Return: true is the iterator is advanced and false otherwise.
sourcefn decode_prefix_at(
&self,
offset: usize,
key_len_type: LenType,
value_len_type: LenType,
) -> KeyPrefix
fn decode_prefix_at( &self, offset: usize, key_len_type: LenType, value_len_type: LenType, ) -> KeyPrefix
Decodes KeyPrefix
at given offset.
sourcefn search_restart_point_index_by_key(&mut self, key: FullKey<&[u8]>) -> usize
fn search_restart_point_index_by_key(&mut self, key: FullKey<&[u8]>) -> usize
Searches the restart point index that the given key
belongs to.
sourcefn seek_restart_point_by_key(&mut self, key: FullKey<&[u8]>)
fn seek_restart_point_by_key(&mut self, key: FullKey<&[u8]>)
Seeks to the restart point that the given key
belongs to.
sourcefn seek_restart_point_by_index(&mut self, index: usize)
fn seek_restart_point_by_index(&mut self, index: usize)
Seeks to the restart point by given restart point index.
fn update_restart_point(&mut self, index: usize)
Trait Implementations§
Auto Trait Implementations§
impl Freeze for BlockIterator
impl !RefUnwindSafe for BlockIterator
impl Send for BlockIterator
impl Sync for BlockIterator
impl Unpin for BlockIterator
impl !UnwindSafe for BlockIterator
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
type Err = Infallible
fn into_result(self) -> Result<T, <T as IntoResult<T>>::Err>
source§impl<M> MetricVecRelabelExt for M
impl<M> MetricVecRelabelExt for M
source§fn relabel(
self,
metric_level: MetricLevel,
relabel_threshold: MetricLevel,
) -> RelabeledMetricVec<M>
fn relabel( self, metric_level: MetricLevel, relabel_threshold: MetricLevel, ) -> RelabeledMetricVec<M>
RelabeledMetricVec::with_metric_level
.source§fn relabel_n(
self,
metric_level: MetricLevel,
relabel_threshold: MetricLevel,
relabel_num: usize,
) -> RelabeledMetricVec<M>
fn relabel_n( self, metric_level: MetricLevel, relabel_threshold: MetricLevel, relabel_num: usize, ) -> RelabeledMetricVec<M>
RelabeledMetricVec::with_metric_level_relabel_n
.source§fn relabel_debug_1(
self,
relabel_threshold: MetricLevel,
) -> RelabeledMetricVec<M>
fn relabel_debug_1( self, relabel_threshold: MetricLevel, ) -> RelabeledMetricVec<M>
RelabeledMetricVec::with_metric_level_relabel_n
with metric_level
set to
MetricLevel::Debug
and relabel_num
set to 1.