circuit::stream

Struct Reader

Source
pub struct Reader(/* private fields */);
Expand description

Read half of a stream. See stream().

Implementations§

Source§

impl Reader

Source

pub fn inspect_shutdown(&self) -> String

Debug

Source

pub async fn read<F, U>(&self, size: usize, f: F) -> Result<U>
where F: FnMut(&[u8]) -> Result<(U, usize)>,

Read bytes from the stream.

The reader will wait until there are at least size bytes to read, Then it will call the given callback with a slice containing all available bytes to read.

If the callback processes data successfully, it should return Ok with a tuple containing a value of the user’s choice, and the number of bytes used. If the number of bytes returned from the callback is less than what was available in the buffer, the unused bytes will appear at the start of the buffer for subsequent read calls. It is allowable to peek at the bytes in the buffer by returning a number of bytes read that is smaller than the number of bytes actually used.

If the callback returns Error::BufferTooShort and the expected buffer value contained in the error is larger than the data that was provided, we will wait again until there are enough bytes to satisfy the error and then call the callback again. If the callback returns Error::BufferTooShort but the buffer should have been long enough according to the error, Error::CallbackRejectedBuffer is returned. Other errors from the callback are returned as-is from read itself.

If there are no bytes available to read and the Writer for this stream has already been dropped, read returns Error::ConnectionClosed. If there are not enough bytes available to be read and the Writer has been dropped, read returns Error::BufferTooSmall. This is the only time read should return Error::BufferTooSmall.

Panics if the callback returns a number of bytes greater than the size of the buffer.

Source

pub async fn read_protocol_message<P: ProtocolMessage>(&self) -> Result<P>

Read a protocol message from the stream. This is just a quick way to wire ProtocolObject::try_from_bytes in to read.

Source

pub fn is_closed(&self) -> bool

Whether this stream is closed. Returns false so long as there is unread data in the buffer, even if the writer has hung up.

Source

pub fn closed_reason(&self) -> Option<String>

Get the reason this reader is closed. If the reader is not closed, or if no reason was given, return None.

Source

pub fn close(self, reason: String)

Close this stream, giving a reason for the closure.

Trait Implementations§

Source§

impl Debug for Reader

Source§

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

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

impl Drop for Reader

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl Freeze for Reader

§

impl RefUnwindSafe for Reader

§

impl Send for Reader

§

impl Sync for Reader

§

impl Unpin for Reader

§

impl UnwindSafe for Reader

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

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> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.
§

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