pub struct FxDirectory { /* private fields */ }Implementations§
Source§impl FxDirectory
impl FxDirectory
pub fn directory(&self) -> &Directory<FxVolume>
pub fn volume(&self) -> &Arc<FxVolume>
pub fn store(&self) -> &ObjectStore
pub fn is_deleted(&self) -> bool
pub fn set_deleted(&self)
Sourcepub fn check_fscrypt_hard_link_conditions(
&self,
source_wrapping_key_id: Option<WrappingKeyId>,
) -> Result<(), Status>
pub fn check_fscrypt_hard_link_conditions( &self, source_wrapping_key_id: Option<WrappingKeyId>, ) -> Result<(), Status>
As per fscrypt, a user cannot link an unencrypted file into an encrypted directory nor can a user link an encrypted file into a directory encrypted with a different key. Appropriate locks must be held by the caller.
Trait Implementations§
Source§impl Directory for FxDirectory
impl Directory for FxDirectory
Source§fn deprecated_open(
self: Arc<Self>,
scope: ExecutionScope,
flags: OpenFlags,
path: Path,
server_end: ServerEnd<NodeMarker>,
)
fn deprecated_open( self: Arc<Self>, scope: ExecutionScope, flags: OpenFlags, path: Path, server_end: ServerEnd<NodeMarker>, )
DEPRECATED - Do not implement unless required for backwards compatibility. Called when
handling a fuchsia.io/Directory.DeprecatedOpen request.
Source§fn open(
self: Arc<Self>,
scope: ExecutionScope,
path: Path,
flags: Flags,
object_request: ObjectRequestRef<'_>,
) -> Result<(), Status>
fn open( self: Arc<Self>, scope: ExecutionScope, path: Path, flags: Flags, 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 moreSource§async fn open_async(
self: Arc<Self>,
scope: ExecutionScope,
path: Path,
flags: Flags,
object_request: ObjectRequestRef<'_>,
) -> Result<(), Status>
async fn open_async( self: Arc<Self>, scope: ExecutionScope, path: Path, flags: Flags, object_request: ObjectRequestRef<'_>, ) -> Result<(), Status>
Same as
Self::open but the implementation is async. This may be more efficient if the
directory needs to do async work to open the connection.Source§async fn read_dirents(
&self,
pos: &TraversalPosition,
sink: Box<dyn Sink>,
) -> Result<(TraversalPosition, Box<dyn Sealed>), Status>
async fn read_dirents( &self, pos: &TraversalPosition, sink: Box<dyn Sink>, ) -> Result<(TraversalPosition, Box<dyn Sealed>), Status>
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>,
scope: ExecutionScope,
mask: WatchMask,
watcher: DirectoryWatcher,
) -> Result<(), Status>
fn register_watcher( self: Arc<Self>, scope: ExecutionScope, mask: WatchMask, watcher: 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>, key: usize)
fn unregister_watcher(self: Arc<Self>, key: usize)
Unregister a watcher from this directory. The watcher should no longer
receive events.
Source§impl DirectoryEntry for FxDirectory
impl DirectoryEntry for FxDirectory
Source§fn open_entry(self: Arc<Self>, request: OpenRequest<'_>) -> Result<(), Status>
fn open_entry(self: Arc<Self>, request: OpenRequest<'_>) -> Result<(), Status>
Opens this entry.
Source§impl Drop for FxDirectory
impl Drop for FxDirectory
Source§impl FxNode for FxDirectory
impl FxNode for FxDirectory
fn object_id(&self) -> u64
fn parent(&self) -> Option<Arc<FxDirectory>>
fn set_parent(&self, parent: Arc<FxDirectory>)
fn open_count_add_one(&self)
Source§fn open_count_sub_one(self: Arc<Self>)
fn open_count_sub_one(self: Arc<Self>)
Atomically check if this brought the count to zero while the node is
marked for purge. If so, this must queue the node for tombstone the node.
fn object_descriptor(&self) -> ObjectDescriptor
Source§fn mark_to_be_purged(&self)
fn mark_to_be_purged(&self)
Marks the object to be purged. Queues the node for tombstone if open count is zero.
Source§impl GetEntryInfo for FxDirectory
impl GetEntryInfo for FxDirectory
Source§fn entry_info(&self) -> EntryInfo
fn entry_info(&self) -> EntryInfo
This method is used to populate ReadDirents() output.
Source§impl MutableDirectory for FxDirectory
impl MutableDirectory for FxDirectory
Source§fn link<'a>(
self: Arc<Self>,
name: String,
source_dir: Arc<dyn Any + Send + Sync>,
source_name: &'a str,
) -> BoxFuture<'a, Result<(), Status>>
fn link<'a>( self: Arc<Self>, name: String, source_dir: Arc<dyn Any + Send + Sync>, source_name: &'a str, ) -> BoxFuture<'a, Result<(), Status>>
Adds a child entry to this directory. If the target exists, it should fail with
ZX_ERR_ALREADY_EXISTS.
Source§async fn unlink(
self: Arc<Self>,
name: &str,
must_be_directory: bool,
) -> Result<(), Status>
async fn unlink( self: Arc<Self>, name: &str, must_be_directory: bool, ) -> Result<(), Status>
Removes an entry from this directory.
Source§async fn update_attributes(
&self,
attributes: MutableNodeAttributes,
) -> Result<(), Status>
async fn update_attributes( &self, attributes: MutableNodeAttributes, ) -> Result<(), Status>
Set the mutable attributes of this directory based on the values in
attributes. If the
directory does not support updating all of the specified attributes, implementations
should fail with ZX_ERR_NOT_SUPPORTED.Source§impl Node for FxDirectory
impl Node for FxDirectory
Source§async fn get_attributes(
&self,
requested_attributes: NodeAttributesQuery,
) -> Result<NodeAttributes2, Status>
async fn get_attributes( &self, requested_attributes: NodeAttributesQuery, ) -> Result<NodeAttributes2, Status>
Returns node attributes (io2).
Source§fn query_filesystem(&self) -> Result<FilesystemInfo, Status>
fn query_filesystem(&self) -> Result<FilesystemInfo, Status>
Returns information about the filesystem and/or volume.
Source§async fn list_extended_attributes(&self) -> Result<Vec<Vec<u8>>, Status>
async fn list_extended_attributes(&self) -> Result<Vec<Vec<u8>>, Status>
List extended attributes.
Source§async fn get_extended_attribute(&self, name: Vec<u8>) -> Result<Vec<u8>, Status>
async fn get_extended_attribute(&self, name: Vec<u8>) -> Result<Vec<u8>, Status>
Get the value for an extended attribute.
Source§async fn set_extended_attribute(
&self,
name: Vec<u8>,
value: Vec<u8>,
mode: SetExtendedAttributeMode,
) -> Result<(), Status>
async fn set_extended_attribute( &self, name: Vec<u8>, value: Vec<u8>, mode: SetExtendedAttributeMode, ) -> Result<(), Status>
Set the value for an extended attribute.
Source§async fn remove_extended_attribute(&self, name: Vec<u8>) -> Result<(), Status>
async fn remove_extended_attribute(&self, name: Vec<u8>) -> Result<(), Status>
Remove the value for an extended attribute.
Source§fn will_open_as_node(&self) -> Result<(), Status>
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)
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 link_into(
self: Arc<Self>,
_destination_dir: Arc<dyn MutableDirectory>,
_name: Name,
) -> impl Future<Output = Result<(), Status>> + Sendwhere
Self: Sized,
Source§fn open_as_node(
self: Arc<Self>,
scope: ExecutionScope,
options: NodeOptions,
object_request: &mut ObjectRequest,
) -> Result<(), Status>where
Self: Sized,
fn open_as_node(
self: Arc<Self>,
scope: ExecutionScope,
options: NodeOptions,
object_request: &mut ObjectRequest,
) -> Result<(), Status>where
Self: Sized,
Opens the node using the node protocol.
Source§impl RootDir for FxDirectory
impl RootDir for FxDirectory
fn as_directory_entry(self: Arc<Self>) -> Arc<dyn DirectoryEntry>
fn serve(self: Arc<Self>, flags: Flags, server_end: ServerEnd<DirectoryMarker>)
fn as_node(self: Arc<Self>) -> Arc<dyn FxNode>
fn register_additional_volume_services( self: Arc<Self>, _svc_dir: &Simple, ) -> Result<(), Error>
Source§impl ToWeakNode for FxDirectory
impl ToWeakNode for FxDirectory
fn to_weak_node(self: Arc<Self>) -> WeakNode
Auto Trait Implementations§
impl !Freeze for FxDirectory
impl !RefUnwindSafe for FxDirectory
impl Send for FxDirectory
impl Sync for FxDirectory
impl Unpin for FxDirectory
impl UnsafeUnpin for FxDirectory
impl !UnwindSafe for FxDirectory
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
Mutably borrows from an owned value. Read more
Source§impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
Source§impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
§impl<T> InstanceFromServiceTransport<T> for T
impl<T> InstanceFromServiceTransport<T> for T
§fn from_service_transport(handle: T) -> T
fn from_service_transport(handle: T) -> T
Converts the given service transport handle of type
T to [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>
Converts
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>
Converts
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