summaryrefslogtreecommitdiff
path: root/src/fuse/session.rs
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2021-12-29 04:56:41 -0600
committerAlejandro Soto <alejandro@34project.org>2021-12-29 05:20:49 -0600
commit48efcd0ce8c8a9ac51dc80c6ec49c63f6694b031 (patch)
treebdb330a1bb59958ca914be40c906112d25b1eb39 /src/fuse/session.rs
parent606846f23726c3472e6e12b17447b102ad6158cc (diff)
Implement buffered readdir
Diffstat (limited to 'src/fuse/session.rs')
-rw-r--r--src/fuse/session.rs13
1 files changed, 8 insertions, 5 deletions
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<Op<'o, O>, Done<'o>> {
try_op(
@@ -398,7 +401,7 @@ impl<O: for<'o> Operation<'o>> Incoming<'_, O> {
impl<O: for<'o> Operation<'o>> Owned<O>
where
- for<'o> <O as Operation<'o>>::ReplyTail: Default,
+ for<'o> <O as Operation<'o>>::ReplyTail: FromRequest<'o, O>,
{
pub fn op(&self) -> Result<Op<'_, O>, Done<'_>> {
try_op(&self.session, &self.buffer.0, self.header)
@@ -460,7 +463,7 @@ fn try_op<'o, O: Operation<'o>>(
header: InHeader,
) -> Result<Op<'o, O>, 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))