From a3212a0ba07da7bdae9e17637fbc237e2ae01c08 Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Mon, 27 Dec 2021 00:44:23 -0600 Subject: Redesign the API around a user-provided main loop This is basically a full library rewrite. --- src/fuse/fs.rs | 78 ---------------------------------------------------------- 1 file changed, 78 deletions(-) delete mode 100644 src/fuse/fs.rs (limited to 'src/fuse/fs.rs') diff --git a/src/fuse/fs.rs b/src/fuse/fs.rs deleted file mode 100644 index 0c39ea7..0000000 --- a/src/fuse/fs.rs +++ /dev/null @@ -1,78 +0,0 @@ -use crate::{Ino, TimeToLive}; -use async_trait::async_trait; -use std::{num::NonZeroUsize, ops::Deref, sync::Arc}; - -use super::{ - io::{Attrs, EntryType}, - ops::*, - Done, Op, Reply, -}; - -#[async_trait] -pub trait Fuse: Sized + Send + Sync + 'static { - type Inode: Inode + ?Sized; - type Farc: Deref + Clone + Send + Sync = Arc; - - async fn init<'o>(&self, reply: Reply<'o, Self, Init>) -> Done<'o>; - - async fn statfs<'o>(&self, (_, reply, _): Op<'o, Self, Statfs>) -> Done<'o> { - reply.not_implemented() - } - - fn request_buffers(&self) -> NonZeroUsize { - NonZeroUsize::new(16).unwrap() - } - - fn request_buffer_pages(&self) -> NonZeroUsize { - NonZeroUsize::new(4).unwrap() - } -} - -#[async_trait] -pub trait Inode: Send + Sync { - type Fuse: Fuse; - - fn ino(self: &FarcTo) -> Ino; - fn attrs(self: &FarcTo) -> (Attrs, TimeToLive); - fn inode_type(self: &FarcTo) -> EntryType; - - fn direct_io(self: &FarcTo) -> bool { - false - } - - fn access<'o>(self: &FarcTo, (_, reply, _): Op<'o, Self::Fuse, Access>) -> Done<'o> { - reply.not_implemented() - } - - async fn lookup<'o>(self: FarcTo, (_, reply, _): Op<'o, Self::Fuse, Lookup>) -> Done<'o> { - reply.not_implemented() - } - - async fn readlink<'o>( - self: FarcTo, - (_, reply, _): Op<'o, Self::Fuse, Readlink>, - ) -> Done<'o> { - reply.not_implemented() - } - - async fn open<'o>(self: FarcTo, (_, reply, _): Op<'o, Self::Fuse, Open>) -> Done<'o> { - // Calling not_implemented() here would ignore direct_io() and similar flags - reply.ok() - } - - async fn opendir<'o>( - self: FarcTo, - (_, reply, _): Op<'o, Self::Fuse, Opendir>, - ) -> Done<'o> { - reply.not_implemented() - } - - async fn readdir<'o>( - self: FarcTo, - (_, reply, _): Op<'o, Self::Fuse, Readdir>, - ) -> Done<'o> { - reply.not_implemented() - } -} - -pub type FarcTo = <::Fuse as Fuse>::Farc; -- cgit v1.2.3