pub struct CpioNode {
name: String,
file_type: FileType,
content: Vec<u8>,
children: RwLock<BTreeMap<String, Arc<CpioNode>>>,
filesystem: RwLock<Option<Arc<CpioFS>>>,
file_id: usize,
parent: RwLock<Option<Weak<CpioNode>>>,
}
Expand description
A single node in the CPIO filesystem
Fields§
§name: String
File name
file_type: FileType
File type
content: Vec<u8>
File content (for regular files)
children: RwLock<BTreeMap<String, Arc<CpioNode>>>
Child nodes (for directories)
filesystem: RwLock<Option<Arc<CpioFS>>>
Reference to filesystem
file_id: usize
File ID
parent: RwLock<Option<Weak<CpioNode>>>
Parent node (weak reference)
Implementations§
Source§impl CpioNode
impl CpioNode
Sourcepub fn new(
name: String,
file_type: FileType,
content: Vec<u8>,
file_id: usize,
) -> Arc<Self>
pub fn new( name: String, file_type: FileType, content: Vec<u8>, file_id: usize, ) -> Arc<Self>
Create a new CPIO node
Sourcepub fn add_child(
self: &Arc<Self>,
name: String,
child: Arc<CpioNode>,
) -> Result<(), FileSystemError>
pub fn add_child( self: &Arc<Self>, name: String, child: Arc<CpioNode>, ) -> Result<(), FileSystemError>
Add a child to this directory node
pub fn parent_file_id(&self) -> Option<u64>
Sourcepub fn from_vfsnode_arc(node: &Arc<dyn VfsNode>) -> Option<Arc<CpioNode>>
pub fn from_vfsnode_arc(node: &Arc<dyn VfsNode>) -> Option<Arc<CpioNode>>
Helper to convert from Arc
Trait Implementations§
Source§impl VfsNode for CpioNode
impl VfsNode for CpioNode
Source§fn filesystem(&self) -> Option<Weak<dyn FileSystemOperations>>
fn filesystem(&self) -> Option<Weak<dyn FileSystemOperations>>
Returns a (Weak) reference to the filesystem this node belongs to
Source§fn metadata(&self) -> Result<FileMetadata, FileSystemError>
fn metadata(&self) -> Result<FileMetadata, FileSystemError>
Get metadata for this node
Source§fn read_link(&self) -> Result<String, FileSystemError>
fn read_link(&self) -> Result<String, FileSystemError>
Read the target of a symbolic link (returns error if not a symlink)
Source§fn file_type(&self) -> Result<FileType, FileSystemError>
fn file_type(&self) -> Result<FileType, FileSystemError>
Get the file type of this node
Source§fn is_directory(&self) -> Result<bool, FileSystemError>
fn is_directory(&self) -> Result<bool, FileSystemError>
Returns true if this node is a directory
Source§fn is_symlink(&self) -> Result<bool, FileSystemError>
fn is_symlink(&self) -> Result<bool, FileSystemError>
Returns true if this node is a symbolic link