pub enum Kind {
File {
handle: Option<Arc<RwLock<Box<dyn VirtualFile + Send + Sync + 'static>>>>,
path: PathBuf,
fd: Option<u32>,
},
Socket {
socket: InodeSocket,
},
Pipe {
pipe: Pipe,
},
Epoll {
subscriptions: Arc<Mutex<HashMap<Fd, (EpollFd, Vec<EpollJoinGuard>)>>>,
tx: Arc<Sender<EpollInterest>>,
rx: Arc<Mutex<Receiver<EpollInterest>>>,
},
Dir {
parent: InodeWeakGuard,
path: PathBuf,
entries: HashMap<String, InodeGuard>,
},
Root {
entries: HashMap<String, InodeGuard>,
},
Symlink {
base_po_dir: Fd,
path_to_symlink: PathBuf,
relative_path: PathBuf,
},
Buffer {
buffer: Vec<u8>,
},
EventNotifications {
inner: Arc<NotificationInner>,
},
}
Expand description
The core of the filesystem abstraction. Includes directories, files, and symlinks.
Variants§
File
Fields
§
handle: Option<Arc<RwLock<Box<dyn VirtualFile + Send + Sync + 'static>>>>
The open file, if it’s open
Socket
Fields
§
socket: InodeSocket
Represents a networking socket
Pipe
Epoll
Dir
Fields
§
parent: InodeWeakGuard
Parent directory
§
entries: HashMap<String, InodeGuard>
The entries of a directory are lazily filled.
Root
The same as Dir but without the irrelevant bits The root is immutable after creation; generally the Kind::Root branch of whatever code you’re writing will be a simpler version of your Kind::Dir logic
Fields
§
entries: HashMap<String, InodeGuard>
Symlink
The first two fields are data about the symlink the last field is the data inside the symlink
base_po_dir
should never be the root because:
- Right now symlinks are not allowed in the immutable root
- There is always a closer pre-opened dir to the symlink file (by definition of the root being a collection of preopened dirs)
Fields
Buffer
EventNotifications
Fields
§
inner: Arc<NotificationInner>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Kind
impl !RefUnwindSafe for Kind
impl Send for Kind
impl Sync for Kind
impl Unpin for Kind
impl !UnwindSafe for Kind
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Upcastable for T
impl<T> Upcastable for T
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_box(self: Box<T>) -> Box<dyn Any>
Source§impl<T> Upcastable for T
impl<T> Upcastable for T
Source§fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
upcast ref
Source§fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
upcast mut ref