1 /* 2 * Copyright (c) 2025 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 UTILS_FILEMGMT_LIBFS_INCLUDE_FS_ERROR_H 17 #define UTILS_FILEMGMT_LIBFS_INCLUDE_FS_ERROR_H 18 19 #include <functional> 20 #include <string> 21 #include <string_view> 22 #include <tuple> 23 #include <unordered_map> 24 25 namespace OHOS::FileManagement::ModuleFileIO { 26 using namespace std; 27 28 #if (defined IOS_PLATFORM) || (defined WIN_PLATFORM) 29 constexpr int EBADR = 53; 30 constexpr int EBADFD = 77; 31 constexpr int ERESTART = 85; 32 #endif 33 #ifdef WIN_PLATFORM 34 constexpr int EDQUOT = 122; 35 #endif 36 constexpr int UNKNOWN_ERR = -1; 37 constexpr int NO_TASK_ERR = -2; 38 constexpr int CANCEL_ERR = -3; 39 constexpr int ERRNO_NOERR = 0; 40 constexpr int ECONNECTIONFAIL = 45; 41 constexpr int ECONNECTIONABORT = 46; 42 constexpr int STORAGE_SERVICE_SYS_CAP_TAG = 13600000; 43 constexpr int FILEIO_SYS_CAP_TAG = 13900000; 44 constexpr int USER_FILE_MANAGER_SYS_CAP_TAG = 14000000; 45 constexpr int USER_FILE_SERVICE_SYS_CAP_TAG = 14300000; 46 constexpr int DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG = 22400000; 47 constexpr int SOFTBUS_TRANS_FILE_PERMISSION_DENIED = -426114938; 48 constexpr int SOFTBUS_TRANS_FILE_DISK_QUOTA_EXCEEDED = -426114937; 49 constexpr int SOFTBUS_TRANS_FILE_NO_MEMORY = -426114936; 50 constexpr int SOFTBUS_TRANS_FILE_NETWORK_ERROR = -426114935; 51 constexpr int SOFTBUS_TRANS_FILE_NOT_FOUND = -426114934; 52 constexpr int SOFTBUS_TRANS_FILE_EXISTED = -426114933; 53 constexpr int DFS_CANCEL_SUCCESS = 204; 54 const std::string FILEIO_TAG_ERR_CODE = "code"; 55 const std::string FILEIO_TAG_ERR_DATA = "data"; 56 57 enum ErrCodeSuffixOfFileIO { 58 E_PERM = 1, 59 E_NOENT, 60 E_SRCH, 61 E_INTR, 62 E_IO, 63 E_NXIO, 64 E_2BIG, 65 E_BADF, 66 E_CHILD, 67 E_AGAIN, 68 E_NOMEM, 69 E_ACCES, 70 E_FAULT, 71 E_BUSY, 72 E_EXIST, 73 E_XDEV, 74 E_NODEV, 75 E_NOTDIR, 76 E_ISDIR, 77 E_INVAL, 78 E_NFILE, 79 E_MFILE, 80 E_TXTBSY, 81 E_FBIG, 82 E_NOSPC, 83 E_SPIPE, 84 E_ROFS, 85 E_MLINK, 86 E_DEADLK, 87 E_NAMETOOLONG, 88 E_NOSYS, 89 E_NOTEMPTY, 90 E_LOOP, 91 E_WOULDBLOCK, 92 E_BADR, 93 E_NOSTR, 94 E_NODATA, 95 E_OVERFLOW, 96 E_BADFD, 97 E_RESTART, 98 E_DQUOT, 99 E_UKERR, 100 E_NOLCK, 101 E_NETUNREACH, 102 E_CONNECTION_FAIL, 103 E_CONNECTION_ABORT, 104 E_NOTASK, 105 E_UNCANCELED, 106 E_CANCELED, 107 }; 108 109 enum ErrCodeSuffixOfUserFileManager { 110 E_DISPLAYNAME = 1, 111 E_URIM, 112 E_SUFFIX, 113 E_TRASH, 114 E_OPEN_MODE, 115 E_NOT_ALBUM, 116 E_ROOT_DIR, 117 E_MOVE_DENIED, 118 E_RENAME_DENIED, 119 E_RELATIVEPATH, 120 E_INNER_FAIL, 121 E_FILE_TYPE, 122 E_FILE_KEY, 123 E_INPUT 124 }; 125 126 enum ErrCodeSuffixOfStorageService { 127 E_IPCSS = 1, 128 E_NOTSUPPORTEDFS, 129 E_MOUNT, 130 E_UNMOUNT, 131 E_VOLUMESTATE, 132 E_PREPARE, 133 E_DELETE, 134 E_NOOBJECT, 135 E_OUTOFRANGE 136 }; 137 138 enum ErrCodeSuffixOfUserFileService { 139 E_IPCS = 1, 140 E_URIS, 141 E_GETINFO, 142 E_GETRESULT, 143 E_REGISTER, 144 E_REMOVE, 145 E_INIT, 146 E_NOTIFY, 147 E_CONNECT, 148 E_CALLBACK_AND_URI_HAS_NOT_RELATIONS, 149 E_CALLBACK_IS_NOT_REGISTER, 150 E_CAN_NOT_FIND_URI, 151 E_DO_NOT_HAVE_PARENT, 152 E_LOAD_SA, 153 E_COUNT 154 }; 155 156 enum ErrCodeSuffixOfDistributedFile { 157 E_CLOUD_NOT_READY = 1, 158 E_NETWORK_ERR, 159 E_BATTERY_WARNING, 160 E_EXCEED_MAX_LIMIT, 161 E_DATABASE_FAILED 162 }; 163 164 enum CommonErrCode { 165 E_PERMISSION = 201, 166 E_PERMISSION_SYS = 202, 167 E_PARAMS = 401, 168 E_DEVICENOTSUPPORT = 801, 169 E_OSNOTSUPPORT = 901, 170 E_UNKNOWN_ERROR = 13900042 171 }; 172 173 static inline std::unordered_map<int, int> softbusErr2ErrCodeTable { 174 { SOFTBUS_TRANS_FILE_PERMISSION_DENIED, EPERM }, 175 { SOFTBUS_TRANS_FILE_DISK_QUOTA_EXCEEDED, EIO }, 176 { SOFTBUS_TRANS_FILE_NO_MEMORY, ENOMEM }, 177 { SOFTBUS_TRANS_FILE_NETWORK_ERROR, ENETUNREACH }, 178 { SOFTBUS_TRANS_FILE_NOT_FOUND, ENOENT }, 179 { SOFTBUS_TRANS_FILE_EXISTED, EEXIST }, 180 { DFS_CANCEL_SUCCESS, ECANCELED }, 181 }; 182 183 static inline std::unordered_map<std::string_view, int> uvCode2ErrCodeTable { 184 { "EPERM", EPERM }, 185 { "ENOENT", ENOENT }, 186 { "ESRCH", ESRCH }, 187 { "EINTR", EINTR }, 188 { "EIO", EIO }, 189 { "ENXIO", ENXIO }, 190 { "E2BIG", E2BIG }, 191 { "EBADF", EBADF }, 192 { "ECHILD", ECHILD }, 193 { "EAGAIN", EAGAIN }, 194 { "ENOMEM", ENOMEM }, 195 { "EACCES", EACCES }, 196 { "EFAULT", EFAULT }, 197 { "EBUSY", EBUSY }, 198 { "EEXIST", EEXIST }, 199 { "EXDEV", EXDEV }, 200 { "ENODEV", ENODEV }, 201 { "ENOTDIR", ENOTDIR }, 202 { "EISDIR", EISDIR }, 203 { "EINVAL", EINVAL }, 204 { "ENFILE", ENFILE }, 205 { "EMFILE", EMFILE }, 206 { "ETXTBSY", ETXTBSY }, 207 { "EFBIG", EFBIG }, 208 { "ENOSPC", ENOSPC }, 209 { "ESPIPE", ESPIPE }, 210 { "EROFS", EROFS }, 211 { "EMLINK", EMLINK }, 212 { "EDEADLK", EDEADLK }, 213 { "ENAMETOOLONG", ENAMETOOLONG }, 214 { "ENOSYS", ENOSYS }, 215 { "ENOTEMPTY", ENOTEMPTY }, 216 { "ELOOP", ELOOP }, 217 { "EWOULDBLOCK", EWOULDBLOCK }, 218 { "EBADR", EBADR }, 219 { "ENOSTR", ENOSTR }, 220 { "ENODATA", ENODATA }, 221 { "EOVERFLOW", EOVERFLOW }, 222 { "EBADFD", EBADFD }, 223 { "ERESTART", ERESTART }, 224 { "EDQUOT", EDQUOT }, 225 { "ENETUNREACH", ENETUNREACH }, 226 { "ECONNECTIONFAIL", ECONNECTIONFAIL }, 227 { "ECONNECTIONABORT", ECONNECTIONABORT }, 228 { "ECANCELED", ECANCELED }, 229 { "ECONNABORTED", ECONNABORTED }, 230 }; 231 232 static inline std::unordered_map<int, std::pair<int32_t, std::string>> errCodeTable { 233 { ERRNO_NOERR, { ERRNO_NOERR, "No error imformation" } }, 234 { EPERM, { FILEIO_SYS_CAP_TAG + E_PERM, "Operation not permitted" } }, 235 { ENOENT, { FILEIO_SYS_CAP_TAG + E_NOENT, "No such file or directory" } }, 236 { ESRCH, { FILEIO_SYS_CAP_TAG + E_SRCH, "No such process" } }, 237 { EINTR, { FILEIO_SYS_CAP_TAG + E_INTR, "Interrupted system call" } }, 238 { EIO, { FILEIO_SYS_CAP_TAG + E_IO, "I/O error" } }, 239 { ENXIO, { FILEIO_SYS_CAP_TAG + E_NXIO, "No such device or address" } }, 240 { E2BIG, { FILEIO_SYS_CAP_TAG + E_2BIG, "Arg list too long" } }, 241 { EBADF, { FILEIO_SYS_CAP_TAG + E_BADF, "Bad file descriptor" } }, 242 { ECHILD, { FILEIO_SYS_CAP_TAG + E_CHILD, "No child processes" } }, 243 { EAGAIN, { FILEIO_SYS_CAP_TAG + E_AGAIN, "Try again" } }, 244 { ENOMEM, { FILEIO_SYS_CAP_TAG + E_NOMEM, "Out of memory" } }, 245 { EACCES, { FILEIO_SYS_CAP_TAG + E_ACCES, "Permission denied" } }, 246 { EFAULT, { FILEIO_SYS_CAP_TAG + E_FAULT, "Bad address" } }, 247 { EBUSY, { FILEIO_SYS_CAP_TAG + E_BUSY, "Device or resource busy" } }, 248 { EEXIST, { FILEIO_SYS_CAP_TAG + E_EXIST, "File exists" } }, 249 { EXDEV, { FILEIO_SYS_CAP_TAG + E_XDEV, "Cross-device link" } }, 250 { ENODEV, { FILEIO_SYS_CAP_TAG + E_NODEV, "No such device" } }, 251 { ENOTDIR, { FILEIO_SYS_CAP_TAG + E_NOTDIR, "Not a directory" } }, 252 { EISDIR, { FILEIO_SYS_CAP_TAG + E_ISDIR, "Is a directory" } }, 253 { EINVAL, { FILEIO_SYS_CAP_TAG + E_INVAL, "Invalid argument" } }, 254 { ENFILE, { FILEIO_SYS_CAP_TAG + E_NFILE, "File table overflow" } }, 255 { EMFILE, { FILEIO_SYS_CAP_TAG + E_MFILE, "Too many open files" } }, 256 { ETXTBSY, { FILEIO_SYS_CAP_TAG + E_TXTBSY, "Text file busy" } }, 257 { EFBIG, { FILEIO_SYS_CAP_TAG + E_FBIG, "File too large" } }, 258 { ENOSPC, { FILEIO_SYS_CAP_TAG + E_NOSPC, "No space left on device" } }, 259 { ESPIPE, { FILEIO_SYS_CAP_TAG + E_SPIPE, "Illegal seek" } }, 260 { EROFS, { FILEIO_SYS_CAP_TAG + E_ROFS, "Read-only file system" } }, 261 { EMLINK, { FILEIO_SYS_CAP_TAG + E_MLINK, "Too many links" } }, 262 { EDEADLK, { FILEIO_SYS_CAP_TAG + E_DEADLK, "Resource deadlock would occur" } }, 263 { ENAMETOOLONG, { FILEIO_SYS_CAP_TAG + E_NAMETOOLONG, "File name too long" } }, 264 { ENOSYS, { FILEIO_SYS_CAP_TAG + E_NOSYS, "Function not implemented" } }, 265 { ENOTEMPTY, { FILEIO_SYS_CAP_TAG + E_NOTEMPTY, "Directory not empty" } }, 266 { ELOOP, { FILEIO_SYS_CAP_TAG + E_LOOP, "Too many symbolic links encountered" } }, 267 { EWOULDBLOCK, { FILEIO_SYS_CAP_TAG + E_WOULDBLOCK, "Operation would block" } }, 268 { EBADR, { FILEIO_SYS_CAP_TAG + E_BADR, "Invalid request descriptor" } }, 269 { ENOSTR, { FILEIO_SYS_CAP_TAG + E_NOSTR, "Device not a stream" } }, 270 { ENODATA, { FILEIO_SYS_CAP_TAG + E_NODATA, "No data available" } }, 271 { EOVERFLOW, { FILEIO_SYS_CAP_TAG + E_OVERFLOW, "Value too large for defined data type" } }, 272 { EBADFD, { FILEIO_SYS_CAP_TAG + E_BADFD, "File descriptor in bad state" } }, 273 { ERESTART, { FILEIO_SYS_CAP_TAG + E_RESTART, "Interrupted system call should be restarted" } }, 274 { EDQUOT, { FILEIO_SYS_CAP_TAG + E_DQUOT, "Quota exceeded" } }, 275 { UNKNOWN_ERR, { FILEIO_SYS_CAP_TAG + E_UKERR, "Unknown error" } }, 276 { ENOLCK, { FILEIO_SYS_CAP_TAG + E_NOLCK, "No record locks available" } }, 277 { ENETUNREACH, { FILEIO_SYS_CAP_TAG + E_NETUNREACH, "Network is unreachable" } }, 278 { ECONNECTIONFAIL, { FILEIO_SYS_CAP_TAG + E_CONNECTION_FAIL, "Connection failed" } }, 279 { ECONNECTIONABORT, { FILEIO_SYS_CAP_TAG + E_CONNECTION_ABORT, "Software caused connection abort" } }, 280 { ECONNABORTED, { FILEIO_SYS_CAP_TAG + E_CONNECTION_ABORT, 281 "Software caused connection abort" } }, 282 { NO_TASK_ERR, { FILEIO_SYS_CAP_TAG + E_NOTASK, "No task can be canceled" } }, 283 { CANCEL_ERR, { FILEIO_SYS_CAP_TAG + E_UNCANCELED, "Failed to cancel" } }, 284 { ECANCELED, { FILEIO_SYS_CAP_TAG + E_CANCELED, "Operation canceled" } }, 285 { FILEIO_SYS_CAP_TAG + E_PERM, { FILEIO_SYS_CAP_TAG + E_PERM, "Operation not permitted" } }, 286 { FILEIO_SYS_CAP_TAG + E_NOENT, { FILEIO_SYS_CAP_TAG + E_NOENT, "No such file or directory" } }, 287 { FILEIO_SYS_CAP_TAG + E_SRCH, { FILEIO_SYS_CAP_TAG + E_SRCH, "No such process" } }, 288 { FILEIO_SYS_CAP_TAG + E_INTR, { FILEIO_SYS_CAP_TAG + E_INTR, "Interrupted system call" } }, 289 { FILEIO_SYS_CAP_TAG + E_IO, { FILEIO_SYS_CAP_TAG + E_IO, "I/O error" } }, 290 { FILEIO_SYS_CAP_TAG + E_NXIO, { FILEIO_SYS_CAP_TAG + E_NXIO, "No such device or address" } }, 291 { FILEIO_SYS_CAP_TAG + E_2BIG, { FILEIO_SYS_CAP_TAG + E_2BIG, "Arg list too long" } }, 292 { FILEIO_SYS_CAP_TAG + E_BADF, { FILEIO_SYS_CAP_TAG + E_BADF, "Bad file descriptor" } }, 293 { FILEIO_SYS_CAP_TAG + E_CHILD, { FILEIO_SYS_CAP_TAG + E_CHILD, "No child processes" } }, 294 { FILEIO_SYS_CAP_TAG + E_AGAIN, { FILEIO_SYS_CAP_TAG + E_AGAIN, "Try again" } }, 295 { FILEIO_SYS_CAP_TAG + E_NOMEM, { FILEIO_SYS_CAP_TAG + E_NOMEM, "Out of memory" } }, 296 { FILEIO_SYS_CAP_TAG + E_ACCES, { FILEIO_SYS_CAP_TAG + E_ACCES, "Permission denied" } }, 297 { FILEIO_SYS_CAP_TAG + E_FAULT, { FILEIO_SYS_CAP_TAG + E_FAULT, "Bad address" } }, 298 { FILEIO_SYS_CAP_TAG + E_BUSY, { FILEIO_SYS_CAP_TAG + E_BUSY, "Device or resource busy" } }, 299 { FILEIO_SYS_CAP_TAG + E_EXIST, { FILEIO_SYS_CAP_TAG + E_EXIST, "File exists" } }, 300 { FILEIO_SYS_CAP_TAG + E_XDEV, { FILEIO_SYS_CAP_TAG + E_XDEV, "Cross-device link" } }, 301 { FILEIO_SYS_CAP_TAG + E_NODEV, { FILEIO_SYS_CAP_TAG + E_NODEV, "No such device" } }, 302 { FILEIO_SYS_CAP_TAG + E_NOTDIR, { FILEIO_SYS_CAP_TAG + E_NOTDIR, "Not a directory" } }, 303 { FILEIO_SYS_CAP_TAG + E_ISDIR, { FILEIO_SYS_CAP_TAG + E_ISDIR, "Is a directory" } }, 304 { FILEIO_SYS_CAP_TAG + E_INVAL, { FILEIO_SYS_CAP_TAG + E_INVAL, "Invalid argument" } }, 305 { FILEIO_SYS_CAP_TAG + E_NFILE, { FILEIO_SYS_CAP_TAG + E_NFILE, "File table overflow" } }, 306 { FILEIO_SYS_CAP_TAG + E_MFILE, { FILEIO_SYS_CAP_TAG + E_MFILE, "Too many open files" } }, 307 { FILEIO_SYS_CAP_TAG + E_TXTBSY, { FILEIO_SYS_CAP_TAG + E_TXTBSY, "Text file busy" } }, 308 { FILEIO_SYS_CAP_TAG + E_FBIG, { FILEIO_SYS_CAP_TAG + E_FBIG, "File too large" } }, 309 { FILEIO_SYS_CAP_TAG + E_NOSPC, { FILEIO_SYS_CAP_TAG + E_NOSPC, "No space left on device" } }, 310 { FILEIO_SYS_CAP_TAG + E_SPIPE, { FILEIO_SYS_CAP_TAG + E_SPIPE, "Illegal seek" } }, 311 { FILEIO_SYS_CAP_TAG + E_ROFS, { FILEIO_SYS_CAP_TAG + E_ROFS, "Read-only file system" } }, 312 { FILEIO_SYS_CAP_TAG + E_MLINK, { FILEIO_SYS_CAP_TAG + E_MLINK, "Too many links" } }, 313 { FILEIO_SYS_CAP_TAG + E_DEADLK, { FILEIO_SYS_CAP_TAG + E_DEADLK, "Resource deadlock would occur" } }, 314 { FILEIO_SYS_CAP_TAG + E_NAMETOOLONG, { FILEIO_SYS_CAP_TAG + E_NAMETOOLONG, "File name too long" } }, 315 { FILEIO_SYS_CAP_TAG + E_NOSYS, { FILEIO_SYS_CAP_TAG + E_NOSYS, "Function not implemented" } }, 316 { FILEIO_SYS_CAP_TAG + E_NOTEMPTY, { FILEIO_SYS_CAP_TAG + E_NOTEMPTY, "Directory not empty" } }, 317 { FILEIO_SYS_CAP_TAG + E_LOOP, { FILEIO_SYS_CAP_TAG + E_LOOP, "Too many symbolic links encountered" } }, 318 { FILEIO_SYS_CAP_TAG + E_WOULDBLOCK, { FILEIO_SYS_CAP_TAG + E_WOULDBLOCK, "Operation would block" } }, 319 { FILEIO_SYS_CAP_TAG + E_BADR, { FILEIO_SYS_CAP_TAG + E_BADR, "Invalid request descriptor" } }, 320 { FILEIO_SYS_CAP_TAG + E_NOSTR, { FILEIO_SYS_CAP_TAG + E_NOSTR, "Device not a stream" } }, 321 { FILEIO_SYS_CAP_TAG + E_NODATA, { FILEIO_SYS_CAP_TAG + E_NODATA, "No data available" } }, 322 { FILEIO_SYS_CAP_TAG + E_OVERFLOW, { FILEIO_SYS_CAP_TAG + E_OVERFLOW, "Value too large for defined data type" } }, 323 { FILEIO_SYS_CAP_TAG + E_BADFD, { FILEIO_SYS_CAP_TAG + E_BADFD, "File descriptor in bad state" } }, 324 { FILEIO_SYS_CAP_TAG + E_RESTART, 325 { FILEIO_SYS_CAP_TAG + E_RESTART, "Interrupted system call should be restarted" } }, 326 { FILEIO_SYS_CAP_TAG + E_DQUOT, { FILEIO_SYS_CAP_TAG + E_DQUOT, "Quota exceeded" } }, 327 { FILEIO_SYS_CAP_TAG + E_UKERR, { FILEIO_SYS_CAP_TAG + E_UKERR, "Unknown error" } }, 328 { FILEIO_SYS_CAP_TAG + E_NOLCK, { FILEIO_SYS_CAP_TAG + E_NOLCK, "No record locks available" } }, 329 { FILEIO_SYS_CAP_TAG + E_NETUNREACH, { FILEIO_SYS_CAP_TAG + E_NETUNREACH, "Network is unreachable" } }, 330 { FILEIO_SYS_CAP_TAG + E_CONNECTION_FAIL, { FILEIO_SYS_CAP_TAG + E_CONNECTION_FAIL, "Connection failed" } }, 331 { FILEIO_SYS_CAP_TAG + E_CONNECTION_ABORT, 332 { FILEIO_SYS_CAP_TAG + E_CONNECTION_ABORT, "Software caused connection abort" } }, 333 { USER_FILE_MANAGER_SYS_CAP_TAG + E_DISPLAYNAME, 334 { USER_FILE_MANAGER_SYS_CAP_TAG + E_DISPLAYNAME, "Invalid display name" } }, 335 { USER_FILE_MANAGER_SYS_CAP_TAG + E_URIM, { USER_FILE_MANAGER_SYS_CAP_TAG + E_URIM, "Invalid uri" } }, 336 { USER_FILE_MANAGER_SYS_CAP_TAG + E_SUFFIX, 337 { USER_FILE_MANAGER_SYS_CAP_TAG + E_SUFFIX, "Invalid file extension" } }, 338 { USER_FILE_MANAGER_SYS_CAP_TAG + E_TRASH, 339 { USER_FILE_MANAGER_SYS_CAP_TAG + E_TRASH, "File has been put into trash bin" } }, 340 { USER_FILE_MANAGER_SYS_CAP_TAG + E_OPEN_MODE, 341 { USER_FILE_MANAGER_SYS_CAP_TAG + E_OPEN_MODE, "Invalid open mode" } }, 342 { USER_FILE_MANAGER_SYS_CAP_TAG + E_NOT_ALBUM, 343 { USER_FILE_MANAGER_SYS_CAP_TAG + E_NOT_ALBUM, "The uri is not album" } }, 344 { USER_FILE_MANAGER_SYS_CAP_TAG + E_ROOT_DIR, { USER_FILE_MANAGER_SYS_CAP_TAG + E_ROOT_DIR, "Invalid root dir" } }, 345 { USER_FILE_MANAGER_SYS_CAP_TAG + E_MOVE_DENIED, 346 { USER_FILE_MANAGER_SYS_CAP_TAG + E_MOVE_DENIED, "Failed to move as dir check failed" } }, 347 { USER_FILE_MANAGER_SYS_CAP_TAG + E_RENAME_DENIED, 348 { USER_FILE_MANAGER_SYS_CAP_TAG + E_RENAME_DENIED, "Failed to rename as dir check failed" } }, 349 { USER_FILE_MANAGER_SYS_CAP_TAG + E_RELATIVEPATH, 350 { USER_FILE_MANAGER_SYS_CAP_TAG + E_RELATIVEPATH, "Relative path not exist or invalid" } }, 351 { USER_FILE_MANAGER_SYS_CAP_TAG + E_INNER_FAIL, 352 { USER_FILE_MANAGER_SYS_CAP_TAG + E_INNER_FAIL, "MediaLibrary inner fail" } }, 353 { USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_TYPE, 354 { USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_TYPE, "File type is not allow in the directory" } }, 355 { USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_KEY, { USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_KEY, "Member not exist" } }, 356 { USER_FILE_MANAGER_SYS_CAP_TAG + E_INPUT, { USER_FILE_MANAGER_SYS_CAP_TAG + E_INPUT, "Wrong input parameter" } }, 357 { STORAGE_SERVICE_SYS_CAP_TAG + E_IPCSS, { STORAGE_SERVICE_SYS_CAP_TAG + E_IPCSS, "IPC error" } }, 358 { STORAGE_SERVICE_SYS_CAP_TAG + E_NOTSUPPORTEDFS, 359 { STORAGE_SERVICE_SYS_CAP_TAG + E_NOTSUPPORTEDFS, "Not supported filesystem" } }, 360 { STORAGE_SERVICE_SYS_CAP_TAG + E_MOUNT, { STORAGE_SERVICE_SYS_CAP_TAG + E_MOUNT, "Failed to mount" } }, 361 { STORAGE_SERVICE_SYS_CAP_TAG + E_UNMOUNT, { STORAGE_SERVICE_SYS_CAP_TAG + E_UNMOUNT, "Failed to unmount" } }, 362 { STORAGE_SERVICE_SYS_CAP_TAG + E_VOLUMESTATE, 363 { STORAGE_SERVICE_SYS_CAP_TAG + E_VOLUMESTATE, "Incorrect volume state" } }, 364 { STORAGE_SERVICE_SYS_CAP_TAG + E_PREPARE, 365 { STORAGE_SERVICE_SYS_CAP_TAG + E_PREPARE, "Prepare directory or node error" } }, 366 { STORAGE_SERVICE_SYS_CAP_TAG + E_DELETE, 367 { STORAGE_SERVICE_SYS_CAP_TAG + E_DELETE, "Delete directory or node error" } }, 368 { STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT, { STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT, "No such object" } }, 369 { STORAGE_SERVICE_SYS_CAP_TAG + E_OUTOFRANGE, 370 { STORAGE_SERVICE_SYS_CAP_TAG + E_OUTOFRANGE, "User id out of range" } }, 371 { STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT, { STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT, "No such object" } }, 372 { USER_FILE_SERVICE_SYS_CAP_TAG + E_IPCS, { USER_FILE_SERVICE_SYS_CAP_TAG + E_IPCS, "IPC error" } }, 373 { USER_FILE_SERVICE_SYS_CAP_TAG + E_URIS, { USER_FILE_SERVICE_SYS_CAP_TAG + E_URIS, "Invalid uri" } }, 374 { USER_FILE_SERVICE_SYS_CAP_TAG + E_GETINFO, 375 { USER_FILE_SERVICE_SYS_CAP_TAG + E_GETINFO, "Fail to get fileextension info" } }, 376 { USER_FILE_SERVICE_SYS_CAP_TAG + E_GETRESULT, 377 { USER_FILE_SERVICE_SYS_CAP_TAG + E_GETRESULT, "Get wrong result" } }, 378 { USER_FILE_SERVICE_SYS_CAP_TAG + E_REGISTER, 379 { USER_FILE_SERVICE_SYS_CAP_TAG + E_REGISTER, "Fail to register notification" } }, 380 { USER_FILE_SERVICE_SYS_CAP_TAG + E_REMOVE, 381 { USER_FILE_SERVICE_SYS_CAP_TAG + E_REMOVE, "Fail to remove notification" } }, 382 { USER_FILE_SERVICE_SYS_CAP_TAG + E_INIT, 383 { USER_FILE_SERVICE_SYS_CAP_TAG + E_INIT, "Fail to init notification agent" } }, 384 { USER_FILE_SERVICE_SYS_CAP_TAG + E_NOTIFY, { USER_FILE_SERVICE_SYS_CAP_TAG + E_NOTIFY, "Fail to notify agent" } }, 385 { USER_FILE_SERVICE_SYS_CAP_TAG + E_CONNECT, 386 { USER_FILE_SERVICE_SYS_CAP_TAG + E_CONNECT, "Fail to connect file access extension ability" } }, 387 { USER_FILE_SERVICE_SYS_CAP_TAG + E_CALLBACK_AND_URI_HAS_NOT_RELATIONS, 388 { USER_FILE_SERVICE_SYS_CAP_TAG + E_CALLBACK_AND_URI_HAS_NOT_RELATIONS, 389 "The uri has no relationship with the callback and cannot be unregistered" } }, 390 { USER_FILE_SERVICE_SYS_CAP_TAG + E_CALLBACK_IS_NOT_REGISTER, 391 { USER_FILE_SERVICE_SYS_CAP_TAG + E_CALLBACK_IS_NOT_REGISTER, 392 "Cannot unregister the callback that has not been registered" } }, 393 { USER_FILE_SERVICE_SYS_CAP_TAG + E_CAN_NOT_FIND_URI, 394 { USER_FILE_SERVICE_SYS_CAP_TAG + E_CAN_NOT_FIND_URI, "Can not find registered uri" } }, 395 { USER_FILE_SERVICE_SYS_CAP_TAG + E_DO_NOT_HAVE_PARENT, 396 { USER_FILE_SERVICE_SYS_CAP_TAG + E_DO_NOT_HAVE_PARENT, "Do not have parent uri" } }, 397 { USER_FILE_SERVICE_SYS_CAP_TAG + E_LOAD_SA, 398 { USER_FILE_SERVICE_SYS_CAP_TAG + E_LOAD_SA, "Fail to load system ability" } }, 399 { USER_FILE_SERVICE_SYS_CAP_TAG + E_COUNT, { USER_FILE_SERVICE_SYS_CAP_TAG + E_COUNT, "Too many records" } }, 400 { E_PERMISSION, { E_PERMISSION, "Permission verification failed" } }, 401 { E_PERMISSION_SYS, { E_PERMISSION_SYS, "The caller is not a system application" } }, 402 { E_PARAMS, { E_PARAMS, "The input parameter is invalid" } }, 403 { E_DEVICENOTSUPPORT, { E_DEVICENOTSUPPORT, "The device doesn't support this api" } }, 404 { E_OSNOTSUPPORT, { E_OSNOTSUPPORT, "The os doesn't support this api" } }, 405 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_CLOUD_NOT_READY, 406 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_CLOUD_NOT_READY, "Cloud status not ready" } }, 407 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_NETWORK_ERR, 408 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_NETWORK_ERR, "Network unavailable" } }, 409 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_BATTERY_WARNING, 410 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_BATTERY_WARNING, "Battery level warning" } }, 411 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_EXCEED_MAX_LIMIT, 412 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_EXCEED_MAX_LIMIT, "Exceed the maximum limit" } }, 413 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_DATABASE_FAILED, 414 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_DATABASE_FAILED, "Database operation failed" } }, 415 }; 416 417 class FsError { 418 public: 419 FsError(int errCode); 420 int GetErrNo() const; 421 const std::string &GetErrMsg() const; 422 ~FsError() = default; 423 explicit operator bool() const; 424 425 private: 426 int errno_ = ERRNO_NOERR; 427 std::string errMsg_; 428 }; 429 430 } // namespace OHOS::FileManagement::ModuleFileIO 431 #endif // UTILS_FILEMGMT_LIBFS_INCLUDE_FS_ERROR_H 432