pub struct RootDir<S> { /* private fields */ }
Expand description

The root directory of Fuchsia package.

Implementations§

source§

impl<S: NonMetaStorage> RootDir<S>

source

pub async fn new(non_meta_storage: S, hash: Hash) -> Result<Arc<Self>, Error>

Loads the package metadata given by hash from non_meta_storage, returning an object representing the package, backed by non_meta_storage.

source

pub async fn new_with_dropper( non_meta_storage: S, hash: Hash, dropper: Box<dyn OnRootDirDrop> ) -> Result<Arc<Self>, Error>

Loads the package metadata given by hash from non_meta_storage, returning an object representing the package, backed by non_meta_storage. Takes dropper, which will be dropped when the returned RootDir is dropped.

source

pub async fn new_raw( non_meta_storage: S, hash: Hash, dropper: Option<Box<dyn OnRootDirDrop>> ) -> Result<Self, Error>

Loads the package metadata given by hash from non_meta_storage, returning an object representing the package, backed by non_meta_storage. Takes dropper, which will be dropped when the returned RootDir is dropped. Like new_with_dropper except the returned RootDir is not in an Arc.

source

pub fn set_dropper( &mut self, dropper: Box<dyn OnRootDirDrop> ) -> Result<(), Box<dyn OnRootDirDrop>>

Sets the dropper. If the dropper was already set, returns dropper in the error.

source

pub async fn read_file(&self, path: &str) -> Result<Vec<u8>, ReadFileError>

Returns the contents, if present, of the file at object relative path expression path. https://fuchsia.dev/fuchsia-src/concepts/process/namespaces?hl=en#object_relative_path_expressions

source

pub fn has_file(&self, path: &str) -> bool

Returns true iff there is a file at path, an object relative path expression. https://fuchsia.dev/fuchsia-src/concepts/process/namespaces?hl=en#object_relative_path_expressions

source

pub fn hash(&self) -> &Hash

Returns the hash of the package.

source

pub fn external_file_hashes(&self) -> impl ExactSizeIterator<Item = &Hash>

Returns an iterator of the hashes of files stored externally to the package meta.far. May return duplicates.

source

pub async fn path(&self) -> Result<PackagePath, PathError>

Returns the path of the package as indicated by the “meta/package” file.

source

pub async fn subpackages(&self) -> Result<MetaSubpackages, SubpackagesError>

Returns the subpackages of the package.

Trait Implementations§

source§

impl<S: Debug> Debug for RootDir<S>

source§

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

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

impl<S: NonMetaStorage> Directory for RootDir<S>

source§

fn open( self: Arc<Self>, scope: ExecutionScope, flags: OpenFlags, path: VfsPath, server_end: ServerEnd<NodeMarker> )

Opens a connection to this item if the path is “.” or a connection to an item inside this one otherwise. path will not contain any “.” or “..” components. Read more
source§

fn open2( self: Arc<Self>, scope: ExecutionScope, path: VfsPath, protocols: ConnectionProtocols, object_request: ObjectRequestRef<'_> ) -> Result<(), Status>

Opens a connection to this item if the path is “.” or a connection to an item inside this one otherwise. path will not contain any “.” or “..” components. Read more
source§

fn read_dirents<'a, 'async_trait>( &'a self, pos: &'a TraversalPosition, sink: Box<dyn Sink + 'static> ) -> Pin<Box<dyn Future<Output = Result<(TraversalPosition, Box<dyn Sealed + 'static>), Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'a: 'async_trait,

Reads directory entries starting from pos by adding them to sink. Once finished, should return a sealed sink.
source§

fn register_watcher( self: Arc<Self>, _: ExecutionScope, _: WatchMask, _: DirectoryWatcher ) -> Result<(), Status>

Register a watcher for this directory. Implementations will probably want to use a Watcher to manage watchers.
source§

fn unregister_watcher(self: Arc<Self>, _: usize)

Unregister a watcher from this directory. The watcher should no longer receive events.
source§

impl<S: NonMetaStorage> DirectoryEntry for RootDir<S>

source§

fn entry_info(&self) -> EntryInfo

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

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

Opens this entry.
source§

impl<S: NonMetaStorage> Node for RootDir<S>

source§

fn get_attrs<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<NodeAttributes, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get this node’s attributes.
source§

fn get_attributes<'life0, 'async_trait>( &'life0 self, requested_attributes: NodeAttributesQuery ) -> Pin<Box<dyn Future<Output = Result<NodeAttributes2, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Returns node attributes (io2).
§

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

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

fn close(self: Arc<Self>)

Called when the node is closed.
§

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

Returns information about the filesystem.
§

fn open_as_node( self: Arc<Self>, scope: ExecutionScope, options: NodeOptions, object_request: &mut ObjectRequest ) -> Result<(), Status>

Opens the node using the node protocol.

Auto Trait Implementations§

§

impl<S> !Freeze for RootDir<S>

§

impl<S> !RefUnwindSafe for RootDir<S>

§

impl<S> Send for RootDir<S>
where S: Send,

§

impl<S> Sync for RootDir<S>
where S: Sync,

§

impl<S> Unpin for RootDir<S>
where S: Unpin,

§

impl<S> !UnwindSafe for RootDir<S>

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> Encode<Ambiguous1> for T

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _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> Encode<Ambiguous2> for T

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _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> IntoAny for T
where T: 'static + Send + Sync,

§

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

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

impl<T> IsDirectory for T
where T: DirectoryEntry,

§

fn is_directory(&self) -> bool

§

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

impl<St> WithTag for St

source§

fn tagged<T>(self, tag: T) -> Tagged<T, St>

Produce a new stream from this one which yields item tupled with a constant tag
source§

impl<T> OnRootDirDrop for T
where T: Send + Sync + Debug,