diff options
| author | Alejandro Soto <alejandro@34project.org> | 2022-01-05 02:52:04 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2022-01-05 02:52:04 -0600 |
| commit | 75cced9d4c101ec2f9f04ed95621ff3a3f750eae (patch) | |
| tree | a8ff3fa46a75b18ee3c1133aa6fc0857132d6115 /src/ops/entry.rs | |
| parent | ff17b04143dde5157808be5bcf1cbf8a942db4c4 (diff) | |
Refactor impls of Reply as individual traits
Diffstat (limited to '')
| -rw-r--r-- | src/ops/entry.rs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/ops/entry.rs b/src/ops/entry.rs index d3e2b17..1bcf71f 100644 --- a/src/ops/entry.rs +++ b/src/ops/entry.rs @@ -1,8 +1,13 @@ +use super::traits::ReplyOk; use crate::{io::Stat, private_trait::Sealed, proto, Done, Ino, Operation, Reply, Request}; pub enum Forget {} pub enum Getattr {} +pub trait ReplyStat<'o>: Operation<'o> { + fn stat(reply: Reply<'o, Self>, inode: &impl Stat) -> Done<'o>; +} + impl Sealed for Forget {} impl Sealed for Getattr {} @@ -51,8 +56,8 @@ impl<'o> Request<'o, Forget> { } } -impl<'o> Reply<'o, Forget> { - pub fn ok(self) -> Done<'o> { +impl<'o> ReplyOk<'o> for Forget { + fn ok(_reply: Reply<'o, Self>) -> Done<'o> { // No reply for forget requests Done::new() } @@ -64,12 +69,12 @@ impl<'o> Request<'o, Getattr> { } } -impl<'o> Reply<'o, Getattr> { - pub fn known(self, inode: &impl Stat) -> Done<'o> { +impl<'o> ReplyStat<'o> for Getattr { + fn stat(reply: Reply<'o, Self>, inode: &impl Stat) -> Done<'o> { let (attrs, ttl) = inode.attrs(); let attrs = attrs.finish(inode); - self.single(&proto::AttrOut { + reply.single(&proto::AttrOut { attr_valid: ttl.seconds, attr_valid_nsec: ttl.nanoseconds, dummy: Default::default(), |
