From 48efcd0ce8c8a9ac51dc80c6ec49c63f6694b031 Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Wed, 29 Dec 2021 04:56:41 -0600 Subject: Implement buffered readdir --- src/fuse/session.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/fuse/session.rs') diff --git a/src/fuse/session.rs b/src/fuse/session.rs index 82db758..f25264f 100644 --- a/src/fuse/session.rs +++ b/src/fuse/session.rs @@ -27,7 +27,10 @@ use crate::{ Errno, FuseError, FuseResult, }; -use super::{ops, Done, Op, Operation, Reply, Request}; +use super::{ + ops::{self, FromRequest}, + Done, Op, Operation, Reply, Request, +}; pub struct Start { fusermount_fd: DumbFd, @@ -357,7 +360,7 @@ impl Start { impl<'o, O: Operation<'o>> Incoming<'o, O> where - O::ReplyTail: Default, + O::ReplyTail: FromRequest<'o, O>, { pub fn op(self) -> Result, Done<'o>> { try_op( @@ -398,7 +401,7 @@ impl Operation<'o>> Incoming<'_, O> { impl Operation<'o>> Owned where - for<'o> >::ReplyTail: Default, + for<'o> >::ReplyTail: FromRequest<'o, O>, { pub fn op(&self) -> Result, Done<'_>> { try_op(&self.session, &self.buffer.0, self.header) @@ -460,7 +463,7 @@ fn try_op<'o, O: Operation<'o>>( header: InHeader, ) -> Result, Done<'o>> where - O::ReplyTail: Default, + O::ReplyTail: FromRequest<'o, O>, { let body = match Structured::toplevel_from(&bytes[HEADER_END..header.len as usize], &header) { Ok(body) => body, @@ -480,7 +483,7 @@ where let reply = Reply { session, unique: header.unique, - tail: Default::default(), + tail: FromRequest::from_request(&request), }; Ok((request, reply)) -- cgit v1.2.3