diff options
| author | Alejandro Soto <alejandro@34project.org> | 2022-01-05 06:20:54 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2022-01-05 06:20:54 -0600 |
| commit | b424e909fb65eb5c77a4ba4082492b11278103d4 (patch) | |
| tree | 69df0298f0401d53cd3899c1ea085dd4b02555d1 /src/ops/open.rs | |
| parent | 75cced9d4c101ec2f9f04ed95621ff3a3f750eae (diff) | |
Refactor impls of Request as individual traits
Diffstat (limited to 'src/ops/open.rs')
| -rw-r--r-- | src/ops/open.rs | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/ops/open.rs b/src/ops/open.rs index ab9eea7..30dc6da 100644 --- a/src/ops/open.rs +++ b/src/ops/open.rs @@ -4,7 +4,10 @@ use crate::{ proto, Done, Errno, Operation, Reply, Request, }; -use super::{traits::ReplyOk, FromRequest}; +use super::{ + traits::{ReplyOk, RequestFlags, RequestHandle}, + FromRequest, +}; pub enum Open {} pub enum Release {} @@ -65,9 +68,11 @@ impl<'o> Operation<'o> for Access { type ReplyTail = (); } -impl<'o> Request<'o, Open> { - pub fn flags(&self) -> OpenFlags { - OpenFlags::from_bits_truncate(self.body.flags.try_into().unwrap_or_default()) +impl<'o> RequestFlags<'o> for Open { + type Flags = OpenFlags; + + fn flags(request: &Request<'o, Self>) -> Self::Flags { + OpenFlags::from_bits_truncate(request.body.flags as _) } } @@ -80,9 +85,9 @@ impl<'o> ReplyOk<'o> for Open { impl<'o> ReplyOpen<'o> for Open {} impl<'o> ReplyPermissionDenied<'o> for Open {} -impl<'o> Request<'o, Release> { - pub fn handle(&self) -> u64 { - self.body.fh +impl<'o> RequestHandle<'o> for Release { + fn handle(request: &Request<'o, Self>) -> u64 { + request.body.fh } } @@ -97,17 +102,19 @@ impl<'o> ReplyOk<'o> for Opendir { impl<'o> ReplyPermissionDenied<'o> for Opendir {} impl<'o> ReplyOpen<'o> for Opendir {} -impl<'o> Request<'o, Releasedir> { - pub fn handle(&self) -> u64 { - self.body.release_in.fh +impl<'o> RequestHandle<'o> for Releasedir { + fn handle(request: &Request<'o, Self>) -> u64 { + request.body.release_in.fh } } impl<'o> ReplyOk<'o> for Releasedir {} -impl<'o> Request<'o, Access> { - pub fn mask(&self) -> AccessFlags { - AccessFlags::from_bits_truncate(self.body.mask as i32) +impl<'o> RequestFlags<'o> for Access { + type Flags = AccessFlags; + + fn flags(request: &Request<'o, Self>) -> Self::Flags { + AccessFlags::from_bits_truncate(request.body.mask as i32) } } |
