Struct vfs::file::vmo::VmoFile

source ·
pub struct VmoFile { /* private fields */ }
Expand description

Implementation of a VMO-backed file in a virtual file system.

Implementations§

source§

impl VmoFile

source

pub fn new( vmo: Vmo, readable: bool, writable: bool, executable: bool, ) -> Arc<Self>

Create a new VmoFile which is backed by an existing Vmo.

§Arguments
  • vmo - Vmo backing this file object.
  • readable - Must be true, VmoFile needs to be readable.
  • writable - Must be false, VmoFile no longer supports writing.
  • executable - If true, allow connections with OpenFlags::RIGHT_EXECUTABLE.
source

pub fn new_with_inode( vmo: Vmo, readable: bool, writable: bool, executable: bool, inode: u64, ) -> Arc<Self>

Create a new VmoFile with the specified options and inode value.

§Arguments
  • vmo - Vmo backing this file object.
  • readable - Must be true, VmoFile needs to be readable.
  • writable - Must be false, VmoFile no longer supports writing.
  • executable - If true, allow connections with OpenFlags::RIGHT_EXECUTABLE.
  • inode - Inode value to report when getting the VmoFile’s attributes.

Trait Implementations§

source§

impl DirectoryEntry for VmoFile

source§

fn open_entry(self: Arc<Self>, request: OpenRequest<'_>) -> Result<(), Status>

Opens this entry.
source§

impl File for VmoFile

source§

fn readable(&self) -> bool

Capabilities:
source§

fn writable(&self) -> bool

source§

fn executable(&self) -> bool

source§

async fn open_file(&self, _options: &FileOptions) -> Result<(), Status>

Called when the file is going to be accessed, typically by a new connection. Flags is the same as the flags passed to fidl_fuchsia_io.Node/Open. The following flags are handled by the connection and do not need to be handled inside open(): Read more
source§

async fn truncate(&self, _length: u64) -> Result<(), Status>

Truncate the file to length. If there are pending attributes to update (see update_attributes), they should also be flushed at this time. Otherwise, no attributes should be updated, other than size as needed.
source§

async fn get_backing_memory(&self, flags: VmoFlags) -> Result<Vmo, Status>

Get a VMO representing this file. If not supported by the underlying filesystem, should return Err(NOT_SUPPORTED).
source§

async fn get_size(&self) -> Result<u64, Status>

Get the size of this file. This is used to calculate seek offset relative to the end.
source§

async fn update_attributes( &self, _attributes: MutableNodeAttributes, ) -> Result<(), Status>

Set the mutable attributes of this file based on the values in attributes. If the file does not support updating all of the specified attributes, implementations should fail with ZX_ERR_NOT_SUPPORTED.
source§

async fn sync(&self, _mode: SyncMode) -> Result<(), Status>

Sync this file’s contents to the storage medium (probably disk). This does not necessarily guarantee that the file will be completely written to disk once the call returns. It merely guarantees that any changes to the file have been propagated to the next layer in the storage stack.
source§

fn list_extended_attributes( &self, ) -> impl Future<Output = Result<Vec<Vec<u8>>, Status>> + Send

List this files extended attributes.
source§

fn get_extended_attribute( &self, _name: Vec<u8>, ) -> impl Future<Output = Result<Vec<u8>, Status>> + Send

Get the value for an extended attribute.
source§

fn set_extended_attribute( &self, _name: Vec<u8>, _value: Vec<u8>, _mode: SetExtendedAttributeMode, ) -> impl Future<Output = Result<(), Status>> + Send

Set the value for an extended attribute.
source§

fn remove_extended_attribute( &self, _name: Vec<u8>, ) -> impl Future<Output = Result<(), Status>> + Send

Remove the value for an extended attribute.
source§

fn allocate( &self, _offset: u64, _length: u64, _mode: AllocateMode, ) -> impl Future<Output = Result<(), Status>> + Send

Preallocate disk space for this range.
source§

fn enable_verity( &self, _options: VerificationOptions, ) -> impl Future<Output = Result<(), Status>> + Send

Set the merkle tree and the descriptor for this file and mark the file as fsverity-enabled.
source§

fn event(&self) -> Result<Option<Event>, Status>

Returns an optional event for the file which signals fuchsia.io2.FileSignal events to clients (e.g. when a file becomes readable). See fuchsia.io2.File.Describe.
source§

impl FileLike for VmoFile

source§

fn open( self: Arc<Self>, scope: ExecutionScope, options: FileOptions, object_request: ObjectRequestRef<'_>, ) -> Result<(), Status>

source§

impl GetEntryInfo for VmoFile

source§

fn entry_info(&self) -> EntryInfo

This method is used to populate ReadDirents() output.
source§

impl GetVmo for VmoFile

source§

fn get_vmo(&self) -> &Vmo

Returns the underlying VMO for the node.
source§

const PAGER_ON_FIDL_EXECUTOR: bool = false

True if the vmo is pager backed and the pager is serviced by the same executor as the StreamIoConnection. Read more
source§

impl Node for VmoFile

source§

async fn get_attributes( &self, requested_attributes: NodeAttributesQuery, ) -> Result<NodeAttributes2, Status>

Returns node attributes (io2).
source§

fn will_open_as_node(&self) -> Result<(), Status>

Called when the node is about to be opened as the node protocol. Implementers can use this to perform any initialization or reference counting. Errors here will result in the open failing. By default, this forwards to the infallible will_clone.
source§

fn will_clone(&self)

Called when the node is about to be cloned (and also by the default implementation of will_open_as_node). Implementations that perform their own open count can use this. Each call to will_clone will be accompanied by an eventual call to close.
source§

fn close(self: Arc<Self>)

Called when the node is closed.
source§

fn query_filesystem(&self) -> Result<FilesystemInfo, Status>

Returns information about the filesystem.
source§

fn open_as_node( self: Arc<Self>, scope: ExecutionScope, options: NodeOptions, object_request: ObjectRequestRef<'_>, ) -> Result<(), Status>
where Self: Sized,

Opens the node using the node protocol.
source§

impl Sync for VmoFile

Auto Trait Implementations§

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

source§

impl<T> IntoAny for T
where T: 'static + Send + Sync,

source§

fn into_any(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Cast the given object into a dyn std::any::Any.
§

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