1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef CLOUD_FILE_DAEMON_FILE_OPERATIONS_BASE_H
17 #define CLOUD_FILE_DAEMON_FILE_OPERATIONS_BASE_H
18 
19 #define FUSE_USE_VERSION 34
20 
21 #include <fuse.h>
22 #include <fuse_i.h>
23 #include <fuse_lowlevel.h>
24 
25 namespace OHOS {
26 namespace FileManagement {
27 namespace CloudDisk {
28 class FileOperationsBase {
29 public:
30     virtual void Lookup(fuse_req_t req, fuse_ino_t parent, const char *name);
31     virtual void Access(fuse_req_t req, fuse_ino_t ino, int mask);
32     virtual void GetAttr(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi);
33     virtual void Open(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi);
34     virtual void Forget(fuse_req_t req, fuse_ino_t ino, uint64_t nLookup);
35     virtual void ForgetMulti(fuse_req_t req, size_t count, struct fuse_forget_data *forgets);
36     virtual void MkDir(fuse_req_t req, fuse_ino_t parent, const char *name, mode_t mode);
37     virtual void RmDir(fuse_req_t req, fuse_ino_t parent, const char *name);
38     virtual void Unlink(fuse_req_t req, fuse_ino_t parent, const char *name);
39     virtual void Release(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi);
40     virtual void MkNod(fuse_req_t req, fuse_ino_t parent, const char *name,
41                        mode_t mode, dev_t rdev);
42     virtual void Create(fuse_req_t req, fuse_ino_t parent, const char *name,
43                         mode_t mode, struct fuse_file_info *fi);
44     virtual void ReadDir(fuse_req_t req, fuse_ino_t ino, size_t size, off_t off,
45                          struct fuse_file_info *fi);
46     virtual void SetXattr(fuse_req_t req, fuse_ino_t ino, const char *name,
47                           const char *value, size_t size, int flags);
48     virtual void GetXattr(fuse_req_t req, fuse_ino_t ino, const char *name,
49                           size_t size);
50     virtual void Rename(fuse_req_t req, fuse_ino_t parent, const char *name,
51                         fuse_ino_t newParent, const char *newName, unsigned int flags);
52     virtual void Read(fuse_req_t req, fuse_ino_t ino, size_t size,
53                       off_t offset, struct fuse_file_info *fi);
54     virtual void WriteBuf(fuse_req_t req, fuse_ino_t ino, struct fuse_bufvec *bufv,
55                           off_t off, struct fuse_file_info *fi);
56     virtual void SetAttr(fuse_req_t req, fuse_ino_t ino, struct stat *attr,
57                          int valid, struct fuse_file_info *fi);
58     virtual void Lseek(fuse_req_t req, fuse_ino_t ino, off_t off, int whence,
59                        struct fuse_file_info *fi);
60 };
61 } // namespace CloudDisk
62 } // namespace FileManagement
63 } // namespace OHOS
64 #endif // CLOUD_FILE_DAEMON_FILE_OPERATIONS_BASE_H
65