17
17
* under the License.
18
18
*/
19
19
use crate :: file_handle_manager:: FileHandleManager ;
20
- use crate :: filesystem:: { FileReader , FileStat , FileWriter , IFileSystem , OpenedFile } ;
20
+ use crate :: filesystem:: { FileReader , FileStat , FileWriter , IFileSystem , OpenedFile , Result } ;
21
21
use crate :: filesystem_metadata:: { DefaultFileSystemMetadata , IFileSystemMetadata } ;
22
22
use dashmap:: DashMap ;
23
- use fuse3:: Errno ;
24
23
use std:: sync:: { Arc , Mutex , RwLock } ;
25
24
26
25
// MemoryFileSystem is a simple in-memory filesystem implementation
@@ -71,27 +70,28 @@ impl IFileSystem for MemoryFileSystem {
71
70
meta. get_file_path ( file_id)
72
71
}
73
72
74
- fn get_opened_file ( & self , _file_id : u64 , fh : u64 ) -> Option < OpenedFile > {
73
+ fn get_opened_file ( & self , _file_id : u64 , fh : u64 ) -> Result < OpenedFile > {
75
74
let file_handle_map = self . file_handle_manager . read ( ) . unwrap ( ) ;
76
- file_handle_map. get_file ( fh)
75
+ file_handle_map. get_file ( fh) . ok_or ( libc :: ENOENT . into ( ) )
77
76
}
78
77
79
- fn stat ( & self , file_id : u64 ) -> Option < FileStat > {
78
+ fn stat ( & self , file_id : u64 ) -> Result < FileStat > {
80
79
let meta = self . meta . read ( ) . unwrap ( ) ;
81
- meta. get_file ( file_id)
80
+ meta. get_file ( file_id) . ok_or ( libc :: ENOENT . into ( ) )
82
81
}
83
82
84
- fn lookup ( & self , parent_file_id : u64 , name : & str ) -> Option < FileStat > {
83
+ fn lookup ( & self , parent_file_id : u64 , name : & str ) -> Result < FileStat > {
85
84
let meta = self . meta . read ( ) . unwrap ( ) ;
86
85
meta. get_file_from_dir ( parent_file_id, name)
86
+ . ok_or ( libc:: ENOENT . into ( ) )
87
87
}
88
88
89
- fn read_dir ( & self , file_id : u64 ) -> Vec < FileStat > {
89
+ fn read_dir ( & self , file_id : u64 ) -> Result < Vec < FileStat > > {
90
90
let meta = self . meta . read ( ) . unwrap ( ) ;
91
- meta. get_dir_childs ( file_id)
91
+ Ok ( meta. get_dir_childs ( file_id) )
92
92
}
93
93
94
- fn open_file ( & self , file_id : u64 ) -> Result < OpenedFile , Errno > {
94
+ fn open_file ( & self , file_id : u64 ) -> Result < OpenedFile > {
95
95
let meta = self . meta . read ( ) . unwrap ( ) ;
96
96
let file_stat = meta. get_file ( file_id) ;
97
97
match file_stat {
@@ -104,7 +104,7 @@ impl IFileSystem for MemoryFileSystem {
104
104
}
105
105
}
106
106
107
- fn create_file ( & self , parent_file_id : u64 , name : & str ) -> Result < OpenedFile , Errno > {
107
+ fn create_file ( & self , parent_file_id : u64 , name : & str ) -> Result < OpenedFile > {
108
108
let mut meta = self . meta . write ( ) . unwrap ( ) ;
109
109
let file_stat = meta. add_file ( parent_file_id, name) ;
110
110
@@ -116,7 +116,7 @@ impl IFileSystem for MemoryFileSystem {
116
116
Ok ( file_handle)
117
117
}
118
118
119
- fn create_dir ( & self , parent_file_id : u64 , name : & str ) -> Result < OpenedFile , Errno > {
119
+ fn create_dir ( & self , parent_file_id : u64 , name : & str ) -> Result < OpenedFile > {
120
120
let mut meta = self . meta . write ( ) . unwrap ( ) ;
121
121
let file_stat = meta. add_dir ( parent_file_id, name) ;
122
122
@@ -125,13 +125,13 @@ impl IFileSystem for MemoryFileSystem {
125
125
Ok ( file_handle)
126
126
}
127
127
128
- fn set_attr ( & self , file_id : u64 , file_info : & FileStat ) -> Result < ( ) , Errno > {
128
+ fn set_attr ( & self , file_id : u64 , file_info : & FileStat ) -> Result < ( ) > {
129
129
Ok ( ( ) )
130
130
}
131
131
132
- fn update_file_status ( & self , file_id : u64 , file_stat : & FileStat ) {
132
+ fn update_file_status ( & self , file_id : u64 , file_stat : & FileStat ) -> Result < ( ) > {
133
133
let mut meta = self . meta . write ( ) . unwrap ( ) ;
134
- meta. update_file_stat ( file_id, file_stat)
134
+ Ok ( meta. update_file_stat ( file_id, file_stat) )
135
135
}
136
136
137
137
fn read ( & self , file_id : u64 , fh : u64 ) -> Box < dyn FileReader > {
@@ -162,18 +162,18 @@ impl IFileSystem for MemoryFileSystem {
162
162
} )
163
163
}
164
164
165
- fn remove_file ( & self , parent_file_id : u64 , name : & str ) -> Result < ( ) , Errno > {
165
+ fn remove_file ( & self , parent_file_id : u64 , name : & str ) -> Result < ( ) > {
166
166
let mut meta = self . meta . write ( ) . unwrap ( ) ;
167
167
meta. remove_file ( parent_file_id, name) ;
168
168
Ok ( ( ) )
169
169
}
170
170
171
- fn remove_dir ( & self , parent_file_id : u64 , name : & str ) -> Result < ( ) , Errno > {
171
+ fn remove_dir ( & self , parent_file_id : u64 , name : & str ) -> Result < ( ) > {
172
172
let mut meta = self . meta . write ( ) . unwrap ( ) ;
173
173
meta. remove_dir ( parent_file_id, name)
174
174
}
175
175
176
- fn close_file ( & self , _file_id : u64 , fh : u64 ) -> Result < ( ) , Errno > {
176
+ fn close_file ( & self , _file_id : u64 , fh : u64 ) -> Result < ( ) > {
177
177
let mut file_handle_manager = self . file_handle_manager . write ( ) . unwrap ( ) ;
178
178
file_handle_manager. remove_file ( fh) ;
179
179
Ok ( ( ) )
0 commit comments