pub struct MemoryContext {
inner: Option<Arc<MemoryContextInner>>,
}Fields§
§inner: Option<Arc<MemoryContextInner>>Add None op mem context, so that we don’t need to return Option in
BatchTaskContext. This helps with later Allocator implementation.
Implementations§
Source§impl MemoryContext
impl MemoryContext
pub fn new(parent: Option<MemoryContext>, counter: impl MemCounter) -> Self
pub fn new_with_mem_limit( parent: Option<MemoryContext>, counter: impl MemCounter, mem_limit: u64, ) -> Self
pub fn root(counter: impl MemCounter, mem_limit: u64) -> Self
pub fn for_spill_test() -> Self
Sourcepub fn add(&self, bytes: i64) -> bool
pub fn add(&self, bytes: i64) -> bool
Attempts to charge bytes against this context and its ancestors.
Returns false, without updating counters, if a positive charge would exceed a limit.
Negative values release previously recorded usage, even while over budget.
Use Self::add_unchecked to record allocations that proceed regardless of the budget.
Sourcepub fn add_unchecked(&self, bytes: i64)
pub fn add_unchecked(&self, bytes: i64)
Records a memory-usage change without enforcing this context’s or its ancestors’ limits.
Use this for allocations that have already succeeded and their corresponding releases.
Every recorded allocation must have a matching release. This does not allocate/free memory
or clamp the counter; callers remain responsible for balanced accounting.
For admission control, use Self::add instead. To inspect the resulting budget state,
use Self::check_memory_usage.
pub fn get_bytes_used(&self) -> i64
pub fn mem_limit(&self) -> u64
Sourcepub fn check_memory_usage(&self) -> bool
pub fn check_memory_usage(&self) -> bool
Check if the memory usage exceeds the limit.
Returns false if the memory usage exceeds the limit.
Sourcepub fn global_allocator(&self) -> MonitoredGlobalAlloc
pub fn global_allocator(&self) -> MonitoredGlobalAlloc
Creates a new global allocator that reports memory usage to this context.
Trait Implementations§
Source§impl Clone for MemoryContext
impl Clone for MemoryContext
Source§fn clone(&self) -> MemoryContext
fn clone(&self) -> MemoryContext
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for MemoryContext
impl !UnwindSafe for MemoryContext
impl Freeze for MemoryContext
impl Send for MemoryContext
impl Sync for MemoryContext
impl Unpin for MemoryContext
impl UnsafeUnpin for MemoryContext
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
U: Sized,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
U: Sized,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read moreSource§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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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,
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,
Any.§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 more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§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>
§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].impl<T> LruValue for T
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.