wasmtime_wasi::bindings::io::streams

Trait HostInputStream

Source
pub trait HostInputStream {
    // Required methods
    fn read(
        &mut self,
        self_: Resource<InputStream>,
        len: u64,
    ) -> Result<Vec<u8>, StreamError>;
    fn blocking_read<'life0, 'async_trait>(
        &'life0 mut self,
        self_: Resource<InputStream>,
        len: u64,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, StreamError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn skip(
        &mut self,
        self_: Resource<InputStream>,
        len: u64,
    ) -> Result<u64, StreamError>;
    fn blocking_skip<'life0, 'async_trait>(
        &'life0 mut self,
        self_: Resource<InputStream>,
        len: u64,
    ) -> Pin<Box<dyn Future<Output = Result<u64, StreamError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn subscribe(
        &mut self,
        self_: Resource<InputStream>,
    ) -> Result<Resource<Pollable>>;
    fn drop<'life0, 'async_trait>(
        &'life0 mut self,
        rep: Resource<InputStream>,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
}

Required Methods§

Source

fn read( &mut self, self_: Resource<InputStream>, len: u64, ) -> Result<Vec<u8>, StreamError>

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

fn blocking_read<'life0, 'async_trait>( &'life0 mut self, self_: Resource<InputStream>, len: u64, ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, StreamError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Read bytes from a stream, after blocking until at least one byte can be read. Except for blocking, behavior is identical to read.

Source

fn skip( &mut self, self_: Resource<InputStream>, len: u64, ) -> Result<u64, StreamError>

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

fn blocking_skip<'life0, 'async_trait>( &'life0 mut self, self_: Resource<InputStream>, len: u64, ) -> Pin<Box<dyn Future<Output = Result<u64, StreamError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Skip bytes from a stream, after blocking until at least one byte can be skipped. Except for blocking behavior, identical to skip.

Source

fn subscribe( &mut self, self_: Resource<InputStream>, ) -> Result<Resource<Pollable>>

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 pollables created with this function are dropped.

Source

fn drop<'life0, 'async_trait>( &'life0 mut self, rep: Resource<InputStream>, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Implementations on Foreign Types§

Source§

impl<_T: HostInputStream + ?Sized + Send> HostInputStream for &mut _T

Source§

fn read( &mut self, self_: Resource<InputStream>, len: u64, ) -> Result<Vec<u8>, StreamError>

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§

fn blocking_read<'life0, 'async_trait>( &'life0 mut self, self_: Resource<InputStream>, len: u64, ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, StreamError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Read bytes from a stream, after blocking until at least one byte can be read. Except for blocking, behavior is identical to read.

Source§

fn skip( &mut self, self_: Resource<InputStream>, len: u64, ) -> Result<u64, StreamError>

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§

fn blocking_skip<'life0, 'async_trait>( &'life0 mut self, self_: Resource<InputStream>, len: u64, ) -> Pin<Box<dyn Future<Output = Result<u64, StreamError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Skip bytes from a stream, after blocking until at least one byte can be skipped. Except for blocking behavior, identical to skip.

Source§

fn subscribe( &mut self, self_: Resource<InputStream>, ) -> Result<Resource<Pollable>>

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 pollables created with this function are dropped.

Source§

fn drop<'life0, 'async_trait>( &'life0 mut self, rep: Resource<InputStream>, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Implementors§

Source§

impl<T> HostInputStream for WasiImpl<T>
where T: WasiView,