class MaybeOpenedVnode

Defined at line 46 of file ../../src/storage/lib/vfs/cpp/vfs.h

A wrapper around a Vnode that may or may not be open (e.g. Vnode returned from `CreateOrLookup`),

ensuring it is closed on destruction unless explicitly taken. This is used by `Vfs::Open` and

`Vfs::DeprecatedOpen` to clean up safely when returning early due to validation failures.

Public Methods

void MaybeOpenedVnode ()

Defined at line 48 of file ../../src/storage/lib/vfs/cpp/vfs.h

void MaybeOpenedVnode (fbl::RefPtr<Vnode> vn, bool is_open)

Defined at line 49 of file ../../src/storage/lib/vfs/cpp/vfs.h

void ~MaybeOpenedVnode ()

Defined at line 50 of file ../../src/storage/lib/vfs/cpp/vfs.h

void MaybeOpenedVnode (const MaybeOpenedVnode & )

Copying is not allowed to prevent double-closing the vnode.

Defined at line 57 of file ../../src/storage/lib/vfs/cpp/vfs.h

MaybeOpenedVnode & operator= (const MaybeOpenedVnode & )

Defined at line 58 of file ../../src/storage/lib/vfs/cpp/vfs.h

void MaybeOpenedVnode (MaybeOpenedVnode && other)

Move semantics to transfer ownership of the vnode and its open state.

Defined at line 61 of file ../../src/storage/lib/vfs/cpp/vfs.h

MaybeOpenedVnode & operator= (MaybeOpenedVnode && other)

Defined at line 65 of file ../../src/storage/lib/vfs/cpp/vfs.h

Vnode * operator-> ()

Defined at line 77 of file ../../src/storage/lib/vfs/cpp/vfs.h

bool is_open ()

Defined at line 78 of file ../../src/storage/lib/vfs/cpp/vfs.h

zx::result<> Open ()

Defined at line 80 of file ../../src/storage/lib/vfs/cpp/vfs.h

fbl::RefPtr<Vnode> TakeAsOpened ()

Takes the vnode. The caller assumes responsibility for closing it. For example, when returning

a successfully opened local node.

Defined at line 93 of file ../../src/storage/lib/vfs/cpp/vfs.h

fbl::RefPtr<Vnode> CloseAndTake ()

Closes the vnode if it is open, and returns it. This can be used, e.g., when forwarding a node

to a remote filesystem or transferring it to OpenResult, which expects to manage the open state

itself.

Defined at line 102 of file ../../src/storage/lib/vfs/cpp/vfs.h