pub struct AdaptivePool { /* private fields */ }Expand description
Adaptive pool controller.
This is a controller — it recommends scaling decisions but does not
itself spawn or kill tasks. The caller is responsible for acting on
ScaleDecision values returned by AdaptivePool::evaluate.
§Thread Safety
AdaptivePool is Send + Sync and may be shared across tasks.
Implementations§
Source§impl AdaptivePool
impl AdaptivePool
Sourcepub fn new(config: AdaptivePoolConfig, initial_workers: usize) -> Arc<Self> ⓘ
pub fn new(config: AdaptivePoolConfig, initial_workers: usize) -> Arc<Self> ⓘ
Create a new pool controller with the given config and initial worker count.
Sourcepub async fn evaluate(
&self,
queue_depth: usize,
latency_ms: f64,
) -> ScaleDecision
pub async fn evaluate( &self, queue_depth: usize, latency_ms: f64, ) -> ScaleDecision
Feed a new observation and return a scaling recommendation.
Call this on each pipeline tick (e.g. every 500 ms) to get decisions.
§Arguments
queue_depth— raw queue depth observation (number of queued items).latency_ms— recent P99 or average latency in milliseconds.
Sourcepub async fn set_workers(&self, count: usize)
pub async fn set_workers(&self, count: usize)
Notify the controller that the worker count changed externally.
Sourcepub fn observation_count(&self) -> usize
pub fn observation_count(&self) -> usize
Total number of observations fed.
Auto Trait Implementations§
impl !Freeze for AdaptivePool
impl !RefUnwindSafe for AdaptivePool
impl Send for AdaptivePool
impl Sync for AdaptivePool
impl Unpin for AdaptivePool
impl UnsafeUnpin for AdaptivePool
impl UnwindSafe for AdaptivePool
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§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> 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