pub struct NestedFramer<Inner, Outer> { /* private fields */ }Expand description
A nested framer that extracts inner frames from outer frames.
This framer takes two input framers – the “outer” and “inner” framers – and extracts outer frames, and once an outer frame has been extract, extracts as many inner frames from the outer frame as possible. Callers deal exclusively with the extracted inner frames.
Implementations§
Source§impl<Inner, Outer> NestedFramer<Inner, Outer>
impl<Inner, Outer> NestedFramer<Inner, Outer>
Sourcepub fn new(inner: Inner, outer: Outer) -> Self
pub fn new(inner: Inner, outer: Outer) -> Self
Creates a new NestedFramer from the given inner and outer framers.
Sourcepub fn take_completed_outer_frames(&mut self) -> usize
pub fn take_completed_outer_frames(&mut self) -> usize
Returns the number of outer frames that have been fully consumed since the last call.
Sourcepub fn set_retain_outer_frames(&mut self, retain: bool)
pub fn set_retain_outer_frames(&mut self, retain: bool)
Sets whether newly extracted outer frames are retained for later retrieval.
When enabled, every outer frame extracted from the input buffer is retained, in order, until it is drained with
drain_outer_frames. Retained frames share their underlying storage with the frame
being split into inner frames, so retaining them does not copy the frame data.
Callers that enable retention MUST drain retained frames after each call to next_frame, as they are
otherwise held indefinitely. Disabling retention discards any frames that have not yet been drained.
Defaults to disabled.
Sourcepub fn drain_outer_frames(&mut self) -> Drain<'_, Bytes>
pub fn drain_outer_frames(&mut self) -> Drain<'_, Bytes>
Drains the outer frames retained since the last call, in the order they were extracted.
Trait Implementations§
Source§impl<Inner, Outer> Framer for NestedFramer<Inner, Outer>
impl<Inner, Outer> Framer for NestedFramer<Inner, Outer>
Source§fn next_frame<B: ReadIoBuffer>(
&mut self,
buf: &mut B,
is_eof: bool,
) -> Result<Option<Bytes>, FramingError>
fn next_frame<B: ReadIoBuffer>( &mut self, buf: &mut B, is_eof: bool, ) -> Result<Option<Bytes>, FramingError>
Auto Trait Implementations§
impl<Inner, Outer> !Freeze for NestedFramer<Inner, Outer>
impl<Inner, Outer> RefUnwindSafe for NestedFramer<Inner, Outer>where
Inner: RefUnwindSafe,
Outer: RefUnwindSafe,
impl<Inner, Outer> Send for NestedFramer<Inner, Outer>
impl<Inner, Outer> Sync for NestedFramer<Inner, Outer>
impl<Inner, Outer> Unpin for NestedFramer<Inner, Outer>
impl<Inner, Outer> UnsafeUnpin for NestedFramer<Inner, Outer>where
Inner: UnsafeUnpin,
Outer: UnsafeUnpin,
impl<Inner, Outer> UnwindSafe for NestedFramer<Inner, Outer>where
Inner: UnwindSafe,
Outer: UnwindSafe,
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
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Track for T
impl<T> Track for T
Source§fn track_resources(self, token: ResourceGroupToken) -> Tracked<Self>
fn track_resources(self, token: ResourceGroupToken) -> Tracked<Self>
Tracked wrapper. Read moreSource§fn in_current_resource_group(self) -> Tracked<Self>
fn in_current_resource_group(self) -> Tracked<Self>
Tracked wrapper. Read more