Struct FlowController
pub struct FlowController {
credits: AtomicI64,
config: FlowControlConfig,
is_high_water: AtomicBool,
metrics: FlowMetrics,
}Expand description
Per-channel flow controller.
Tracks credits, watermark state, and flow control metrics.
Fields§
§credits: AtomicI64§config: FlowControlConfig§is_high_water: AtomicBool§metrics: FlowMetricsImplementations§
§impl FlowController
impl FlowController
pub fn new(config: FlowControlConfig) -> FlowController
pub fn new(config: FlowControlConfig) -> FlowController
Create a new flow controller with the given config.
pub fn try_acquire(&self) -> bool
pub fn try_acquire(&self) -> bool
Try to acquire a credit for sending. Returns true if credit available.
pub fn grant(&self, amount: u32)
pub fn grant(&self, amount: u32)
Grant credits to the producer (called by consumer when queue has space).
pub fn refill(&self)
pub fn refill(&self)
Refill credits by the configured refill amount.
pub fn available_credits(&self) -> i64
pub fn available_credits(&self) -> i64
Available credits.
pub fn check_watermark(&self, queue_depth: u32) -> Option<WatermarkSignal>
pub fn check_watermark(&self, queue_depth: u32) -> Option<WatermarkSignal>
Check watermark state based on current queue depth.
Returns a watermark signal if a threshold was just crossed.
pub fn overflow_policy(&self) -> OverflowPolicy
pub fn overflow_policy(&self) -> OverflowPolicy
Get the overflow policy.
pub fn record_drop(&self)
pub fn record_drop(&self)
Record a message dropped (for metrics).
pub fn record_dlq(&self)
pub fn record_dlq(&self)
Record a message routed to DLQ (for metrics).
pub fn metrics_snapshot(&self) -> FlowMetricsSnapshot
pub fn metrics_snapshot(&self) -> FlowMetricsSnapshot
Get a snapshot of flow control metrics.
Auto Trait Implementations§
impl !Freeze for FlowController
impl RefUnwindSafe for FlowController
impl Send for FlowController
impl Sync for FlowController
impl Unpin for FlowController
impl UnwindSafe for FlowController
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
§fn deserialize(
&self,
deserializer: &mut D,
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>
Deserializes using the given deserializer
§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> 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 more§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Gets the layout of the type.