Skip to main content

PendingStdin

Struct PendingStdin 

Source
pub(super) struct PendingStdin {
    chunks: VecDeque<Bytes>,
    tail: BytesMut,
    bytes: usize,
    pub(super) closed: bool,
    close_pending: bool,
}
Expand description

Stdin of a client which the container did not take yet, bounded by PENDING_STDIN_MAX_BYTES. Small stdin gets merged and large stdin split into entries of at most STDIN_CHUNK_SIZE, each counts STDIN_ENTRY_OVERHEAD on top of its bytes. Empty stdin carries nothing, and nothing takes stdin after the close, both get dropped. The entries of large stdin keep its message until the container took the last one, stdin goes to the container in order, so only the oldest message is partly taken.

Fields§

§chunks: VecDeque<Bytes>

Stdin of at least STDIN_MERGE_SIZE bytes and merged small stdin, the oldest first.

§tail: BytesMut

Small stdin after the chunks, merged.

§bytes: usize

The bytes and the overhead of the chunks.

§closed: bool

Whether the client closed its stdin.

§close_pending: bool

Whether the close still has to be taken, after the stdin before it.

Implementations§

Source§

impl PendingStdin

Source

pub(super) fn is_empty(&self) -> bool

Source

pub(super) fn len(&self) -> usize

What the pending stdin counts against PENDING_STDIN_MAX_BYTES.

Source

pub(super) fn is_full(&self) -> bool

Whether the client has to wait, which stops reading the socket.

Source

pub(super) fn push(&mut self, stdin: Stdin)

Source

fn flush_tail(&mut self)

The merged stdin becomes a chunk, so that later stdin goes behind it.

Source

fn take_tail(&mut self) -> Bytes

The merged stdin in a buffer of its own. A part of the buffer of the tail would keep all of it, which can be far more than the stdin it counts. The tail keeps its buffer, of at most twice STDIN_CHUNK_SIZE, for the next stdin.

Source

fn push_chunk(&mut self, chunk: Bytes)

Source

pub(super) fn pop(&mut self) -> Stdin

The oldest stdin, callers check that there is some.

Source

pub(super) fn clear(&mut self)

Drop the stdin, nothing takes it anymore.

Trait Implementations§

Source§

impl Debug for PendingStdin

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for PendingStdin

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self> ⓘ

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

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

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

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.

§

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

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

impl<L> LayerExt<L> for L

§

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].
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

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