summaryrefslogtreecommitdiff
path: root/src/ops/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/ops/mod.rs34
1 files changed, 27 insertions, 7 deletions
diff --git a/src/ops/mod.rs b/src/ops/mod.rs
index 13d146d..3e64b97 100644
--- a/src/ops/mod.rs
+++ b/src/ops/mod.rs
@@ -3,15 +3,13 @@ use std::{
os::unix::ffi::OsStrExt,
};
-use crate::{private_trait::Sealed, util::OutputChain, Done, Operation, Reply, Request};
+use crate::{
+ private_trait::Sealed, proto, util::OutputChain, Done, Ino, Operation, Reply, Request, Ttl,
+};
+
use bytemuck::{bytes_of, Pod};
-mod dir;
-mod entry;
-mod global;
-mod open;
-mod rw;
-mod xattr;
+pub mod traits;
pub use dir::{BufferedReaddir, Lookup, Readdir};
pub use entry::{Forget, Getattr};
@@ -20,6 +18,13 @@ pub use open::{Access, Open, Opendir, Release, Releasedir};
pub use rw::{Flush, Read, Readlink, Write};
pub use xattr::{Getxattr, Listxattr, Removexattr, Setxattr};
+mod dir;
+mod entry;
+mod global;
+mod open;
+mod rw;
+mod xattr;
+
pub(crate) use global::InitState;
pub trait FromRequest<'o, O: Operation<'o>> {
@@ -62,6 +67,21 @@ impl<'o, O: Operation<'o>> Reply<'o, O> {
}
}
+fn make_entry(
+ (Ino(ino), entry_ttl): (Ino, Ttl),
+ (attrs, attr_ttl): (proto::Attrs, Ttl),
+) -> proto::EntryOut {
+ proto::EntryOut {
+ nodeid: ino,
+ generation: 0, //TODO
+ entry_valid: entry_ttl.seconds,
+ attr_valid: attr_ttl.seconds,
+ entry_valid_nsec: entry_ttl.nanoseconds,
+ attr_valid_nsec: attr_ttl.nanoseconds,
+ attr: attrs,
+ }
+}
+
fn c_to_os(c_str: &CStr) -> &OsStr {
OsStr::from_bytes(c_str.to_bytes())
}