Struct fuchsia_fs::file::BufferedAsyncReadAt

source ·
pub struct BufferedAsyncReadAt<T> { /* private fields */ }
Expand description

Wraps an AsyncReadAt with an in-memory buffer of size fidl_fuchsia_io::MAX_TRANSFER_SIZE in which it stores the results of poll_read_at calls made to the wrapped AsyncReadAt.

Calls to poll_read_at that begin in the buffer will be serviced only from the buffer without interacting with the wrapped AsyncReadAt, therefore the read will be short if the buffer ends before the requested range.

Calls to poll_read_at that do not begin in the buffer will be forwarded to the wrapped AsyncReadAt with the length of the forwarded buffer always exactly fidl_fuchsia_io::MAX_TRANSFER_SIZE, therefore calls to poll_read_at requesting more than fidl_fuchsia_io::MAX_TRANSFER_SIZE bytes will always be short.

Implementations§

source§

impl<T> BufferedAsyncReadAt<T>

source

pub fn new(wrapped: T) -> Self

Trait Implementations§

source§

impl<T: AsyncGetSize> AsyncGetSize for BufferedAsyncReadAt<T>

source§

fn poll_get_size( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<u64>>

Attempt to get the size of the file, on success returns the file size.
source§

impl<T: AsyncReadAt> AsyncReadAt for BufferedAsyncReadAt<T>

source§

fn poll_read_at( self: Pin<&mut Self>, cx: &mut Context<'_>, offset_u64: u64, buf: &mut [u8], ) -> Poll<Result<usize>>

Attempt to read at most buf.len() bytes starting at offset into buf. On success returns the number of bytes read. Contents of buf are only altered on success. Reads of more than zero but fewer than buf.len() bytes do NOT indicate EOF. Reads of zero bytes only occur if buf.len() == 0 or EOF.
source§

impl<'pin, T> Unpin for BufferedAsyncReadAt<T>
where __BufferedAsyncReadAt<'pin, T>: Unpin,

Auto Trait Implementations§

§

impl<T> Freeze for BufferedAsyncReadAt<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for BufferedAsyncReadAt<T>
where T: RefUnwindSafe,

§

impl<T> Send for BufferedAsyncReadAt<T>
where T: Send,

§

impl<T> Sync for BufferedAsyncReadAt<T>
where T: Sync,

§

impl<T> UnwindSafe for BufferedAsyncReadAt<T>
where T: UnwindSafe,

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> AsyncGetSizeExt for T
where T: AsyncGetSize + ?Sized,

source§

fn get_size<'a>(&'a mut self) -> GetSize<'a, Self>
where Self: Unpin,

Returns a future that will return the file size on success.
source§

impl<T> AsyncReadAtExt for T
where T: AsyncReadAt + ?Sized,

source§

fn read_at<'a>(&'a mut self, offset: u64, buf: &'a mut [u8]) -> ReadAt<'a, Self>
where Self: Unpin,

Returns a future that reads at offset, and fill buf, on success the number of bytes read is returned.
source§

fn read_at_exact<'a>( &'a mut self, offset: u64, buf: &'a mut [u8], ) -> ReadAtExact<'a, Self>
where Self: Unpin,

Returns a future that reads at offset, and fill buf exactly.
source§

fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>
where Self: Unpin,

Returns a future that appends all data to buf, on success the number of bytes read is returned.
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, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
source§

impl<T, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. 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>,

§

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

§

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