Struct wasmcloud_runtime::capability::wrpc::wasi::io::streams::InputStream
source · pub struct InputStream(/* private fields */);
Expand description
An input bytestream.
input-stream
s are non-blocking to the extent practical on underlying
platforms. I/O operations always return promptly; if fewer bytes are
promptly available than requested, they return the number of bytes promptly
available, which could even be zero. To wait for data to be available,
use the subscribe
function to obtain a pollable
which can be polled
for using wasi:io/poll
.
Implementations§
source§impl InputStream
impl InputStream
sourcepub fn read<'a, C: Invoke>(
wrpc__: &'a C,
cx__: C::Context,
self_: &'a ResourceBorrow<InputStream>,
len: u64,
) -> impl Future<Output = Result<Result<Bytes, StreamError>>> + Send + 'a
pub fn read<'a, C: Invoke>( wrpc__: &'a C, cx__: C::Context, self_: &'a ResourceBorrow<InputStream>, len: u64, ) -> impl Future<Output = Result<Result<Bytes, StreamError>>> + Send + 'a
Perform a non-blocking read from the stream.
When the source of a read
is binary data, the bytes from the source
are returned verbatim. When the source of a read
is known to the
implementation to be text, bytes containing the UTF-8 encoding of the
text are returned.
This function returns a list of bytes containing the read data,
when successful. The returned list will contain up to len
bytes;
it may return fewer than requested, but not more. The list is
empty when no bytes are available for reading at this time. The
pollable given by subscribe
will be ready when more bytes are
available.
This function fails with a stream-error
when the operation
encounters an error, giving last-operation-failed
, or when the
stream is closed, giving closed
.
When the caller gives a len
of 0, it represents a request to
read 0 bytes. If the stream is still open, this call should
succeed and return an empty list, or otherwise fail with closed
.
The len
parameter is a u64
, which could represent a list of u8 which
is not possible to allocate in wasm32, or not desirable to allocate as
as a return value by the callee. The callee may return a list of bytes
less than len
in size while more bytes are available for reading.
source§impl InputStream
impl InputStream
sourcepub fn blocking_read<'a, C: Invoke>(
wrpc__: &'a C,
cx__: C::Context,
self_: &'a ResourceBorrow<InputStream>,
len: u64,
) -> impl Future<Output = Result<Result<Bytes, StreamError>>> + Send + 'a
pub fn blocking_read<'a, C: Invoke>( wrpc__: &'a C, cx__: C::Context, self_: &'a ResourceBorrow<InputStream>, len: u64, ) -> impl Future<Output = Result<Result<Bytes, StreamError>>> + Send + 'a
Read bytes from a stream, after blocking until at least one byte can
be read. Except for blocking, behavior is identical to read
.
source§impl InputStream
impl InputStream
sourcepub fn skip<'a, C: Invoke>(
wrpc__: &'a C,
cx__: C::Context,
self_: &'a ResourceBorrow<InputStream>,
len: u64,
) -> impl Future<Output = Result<Result<u64, StreamError>>> + Send + 'a
pub fn skip<'a, C: Invoke>( wrpc__: &'a C, cx__: C::Context, self_: &'a ResourceBorrow<InputStream>, len: u64, ) -> impl Future<Output = Result<Result<u64, StreamError>>> + Send + 'a
Skip bytes from a stream. Returns number of bytes skipped.
Behaves identical to read
, except instead of returning a list
of bytes, returns the number of bytes consumed from the stream.
source§impl InputStream
impl InputStream
sourcepub fn blocking_skip<'a, C: Invoke>(
wrpc__: &'a C,
cx__: C::Context,
self_: &'a ResourceBorrow<InputStream>,
len: u64,
) -> impl Future<Output = Result<Result<u64, StreamError>>> + Send + 'a
pub fn blocking_skip<'a, C: Invoke>( wrpc__: &'a C, cx__: C::Context, self_: &'a ResourceBorrow<InputStream>, len: u64, ) -> impl Future<Output = Result<Result<u64, StreamError>>> + Send + 'a
Skip bytes from a stream, after blocking until at least one byte
can be skipped. Except for blocking behavior, identical to skip
.
source§impl InputStream
impl InputStream
sourcepub fn subscribe<'a, C: Invoke>(
wrpc__: &'a C,
cx__: C::Context,
self_: &'a ResourceBorrow<InputStream>,
) -> impl Future<Output = Result<ResourceOwn<Pollable>>> + Send + 'a
pub fn subscribe<'a, C: Invoke>( wrpc__: &'a C, cx__: C::Context, self_: &'a ResourceBorrow<InputStream>, ) -> impl Future<Output = Result<ResourceOwn<Pollable>>> + Send + 'a
Create a pollable
which will resolve once either the specified stream
has bytes available to read or the other end of the stream has been
closed.
The created pollable
is a child resource of the input-stream
.
Implementations may trap if the input-stream
is dropped before
all derived pollable
s created with this function are dropped.
Auto Trait Implementations§
impl Freeze for InputStream
impl RefUnwindSafe for InputStream
impl Send for InputStream
impl Sync for InputStream
impl Unpin for InputStream
impl UnwindSafe for InputStream
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> GetSetFdFlags for T
impl<T> GetSetFdFlags for T
source§fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
self
file descriptor.source§fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
source§fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
self
file descriptor. Read moresource§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> 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>
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>
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