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