use std::ffi::OsString;
use std::path::PathBuf;
use crate::sys::handle::RawFile;
#[derive(Clone, Debug, Default, Eq, PartialEq)]
pub struct OpenOptions {
pub read: bool,
pub write: bool,
pub append: bool,
pub truncate: bool,
pub create: bool,
pub create_new: bool,
pub platform: crate::sys::handle::PlatformOpenOptions,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum MetadataTarget {
Path(PathBuf),
File(RawFile),
}
#[cfg_attr(windows, allow(dead_code))]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum FileType {
File,
Directory,
Symlink,
BlockDevice,
CharacterDevice,
Fifo,
Socket,
Unknown,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct RawMetadata {
pub file_type: FileType,
pub mode: u32,
pub len: u64,
pub platform: crate::sys::handle::PlatformMetadata,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct RawDirEntry {
pub path: PathBuf,
pub file_name: OsString,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum FsOp {
Open {
path: PathBuf,
options: OpenOptions,
},
Read {
fd: RawFile,
offset: Option<u64>,
len: usize,
},
Write {
fd: RawFile,
offset: Option<u64>,
data: Vec<u8>,
},
Metadata {
target: MetadataTarget,
follow_symlinks: bool,
},
SetLen {
fd: RawFile,
len: u64,
},
SyncAll {
fd: RawFile,
},
SyncData {
fd: RawFile,
},
Duplicate {
fd: RawFile,
},
CreateDir {
path: PathBuf,
mode: u32,
},
RemoveFile {
path: PathBuf,
},
RemoveDir {
path: PathBuf,
},
Rename {
from: PathBuf,
to: PathBuf,
},
ReadDir {
path: PathBuf,
},
}