pub(super) struct SessionWindow<V: Clone> {
frame_bounds: SessionFrameBounds,
latest_session: Option<LatestSession>,
recognized_session_sizes: VecDeque<usize>,
_phantom: PhantomData<V>,
}Fields§
§frame_bounds: SessionFrameBounds§latest_session: Option<LatestSession>The latest session is the rightmost session in the buffer, which is updated during appending.
recognized_session_sizes: VecDeque<usize>The sizes of recognized but not consumed sessions in the buffer. It’s updated during appending. The first element, if any, should be the size of the “current session window”. When sliding, the front should be popped.
_phantom: PhantomData<V>Implementations§
Source§impl<V: Clone> SessionWindow<V>
impl<V: Clone> SessionWindow<V>
pub fn new(frame_bounds: SessionFrameBounds) -> Self
Trait Implementations§
Source§impl<V: Clone> WindowImpl for SessionWindow<V>
impl<V: Clone> WindowImpl for SessionWindow<V>
type Key = StateKey
type Value = V
Source§fn preceding_saturated(
&self,
window: BufferRef<'_, Self::Key, Self::Value>,
) -> bool
fn preceding_saturated( &self, window: BufferRef<'_, Self::Key, Self::Value>, ) -> bool
Whether the preceding half of the current window is saturated.
By “saturated” we mean that every row that is possible to be in the preceding half of the
current window is already in the buffer.
Source§fn following_saturated(
&self,
window: BufferRef<'_, Self::Key, Self::Value>,
) -> bool
fn following_saturated( &self, window: BufferRef<'_, Self::Key, Self::Value>, ) -> bool
Whether the following half of the current window is saturated.
Source§fn recalculate_left_right(
&mut self,
window: BufferRefMut<'_, Self::Key, Self::Value>,
hint: RecalculateHint,
)
fn recalculate_left_right( &mut self, window: BufferRefMut<'_, Self::Key, Self::Value>, hint: RecalculateHint, )
Recalculate the left and right indices of the current window, according to the latest
curr_idx and the hint.Source§fn shift_indices(&mut self, n: usize)
fn shift_indices(&mut self, n: usize)
Shift the indices stored by the
WindowImpl by n positions. This should be called
after evicting rows from the buffer.Auto Trait Implementations§
impl<V> Freeze for SessionWindow<V>
impl<V> !RefUnwindSafe for SessionWindow<V>
impl<V> Send for SessionWindow<V>where
V: Send,
impl<V> Sync for SessionWindow<V>where
V: Sync,
impl<V> Unpin for SessionWindow<V>where
V: Unpin,
impl<V> !UnwindSafe for SessionWindow<V>
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
§impl<T> Downcast for Twhere
T: AsAny + ?Sized,
impl<T> Downcast for Twhere
T: AsAny + ?Sized,
§fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
Forward to the method defined on the type
Any.§fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
Forward to the method defined on the type
Any.§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>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn 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>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which 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)
Converts
&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)
Converts
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§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>
Converts
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>
Converts
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>
Wrap the input message
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>
Equivalent to
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>
Equivalent to
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>
Equivalent to
RelabeledMetricVec::with_metric_level_relabel_n with metric_level set to
MetricLevel::Debug and relabel_num set to 1.