Skip to main content

FixedSizeSlotSupplier

Struct FixedSizeSlotSupplier 

Source
pub struct FixedSizeSlotSupplier<SK> { /* private fields */ }
Expand description

Implements SlotSupplier with a fixed number of slots

Implementations§

Source§

impl<SK> FixedSizeSlotSupplier<SK>

Source

pub fn new(size: usize) -> FixedSizeSlotSupplier<SK>

Create a slot supplier which will only hand out at most the provided number of slots

Trait Implementations§

Source§

impl<SK> SlotSupplier for FixedSizeSlotSupplier<SK>
where SK: SlotKind + Send + Sync,

Source§

type SlotKind = SK

The kind of slot this supplier is supplying.
Source§

fn reserve_slot<'life0, 'life1, 'async_trait>( &'life0 self, _: &'life1 dyn SlotReservationContext, ) -> Pin<Box<dyn Future<Output = SlotSupplierPermit> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, FixedSizeSlotSupplier<SK>: 'async_trait,

Block until a slot is available, then return a permit for the slot.
Source§

fn try_reserve_slot( &self, _: &dyn SlotReservationContext, ) -> Option<SlotSupplierPermit>

Try to immediately reserve a slot, returning None if one is not available. Implementations must not block, or risk blocking the async event loop.
Source§

fn mark_slot_used( &self, _ctx: &dyn SlotMarkUsedContext<SlotKind = <FixedSizeSlotSupplier<SK> as SlotSupplier>::SlotKind>, )

Marks a slot as actually now being used. This is separate from reserving one because the pollers need to reserve a slot before they have actually obtained work from server. Once that task is obtained (and validated) then the slot can actually be used to work on the task. Read more
Source§

fn release_slot( &self, _ctx: &dyn SlotReleaseContext<SlotKind = <FixedSizeSlotSupplier<SK> as SlotSupplier>::SlotKind>, )

Frees a slot.
Source§

fn available_slots(&self) -> Option<usize>

If this implementation knows how many slots are available at any moment, it should return that here.
Source§

fn slot_supplier_kind(&self) -> String

Returns a human-friendly identifier describing this supplier implementation for diagnostics and telemetry.

Auto Trait Implementations§

§

impl<SK> !RefUnwindSafe for FixedSizeSlotSupplier<SK>

§

impl<SK> !UnwindSafe for FixedSizeSlotSupplier<SK>

§

impl<SK> Freeze for FixedSizeSlotSupplier<SK>

§

impl<SK> Send for FixedSizeSlotSupplier<SK>
where SK: Send,

§

impl<SK> Sync for FixedSizeSlotSupplier<SK>
where SK: Sync,

§

impl<SK> Unpin for FixedSizeSlotSupplier<SK>
where SK: Unpin,

§

impl<SK> UnsafeUnpin for FixedSizeSlotSupplier<SK>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Any for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Source§

fn type_name(&self) -> &'static str

Source§

impl<T> AnySync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> WorkflowOutboundValue for T
where T: Any,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Access the concrete value through Any.
Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert this value into Any for a consuming downcast.