1/*
2 * Copyright (c) 2022 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 OHOS_FILEMGMT_DFS_ERROR_H
17#define OHOS_FILEMGMT_DFS_ERROR_H
18
19#include <string_view>
20#include <sys/types.h>
21#include <unordered_map>
22
23#include "errors.h"
24
25namespace OHOS::FileManagement {
26constexpr int STORAGE_SERVICE_SYS_CAP_TAG = 13600000;
27constexpr int FILEIO_SYS_CAP_TAG = 13900000;
28constexpr int USER_FILE_MANAGER_SYS_CAP_TAG = 14000000;
29constexpr int DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG = 22400000;
30
31enum CloudSyncServiceErrCode : ErrCode {
32    E_OK = 0,
33    E_SEVICE_DIED,
34    E_INVAL_ARG,
35    E_BROKEN_IPC,
36    E_SA_LOAD_FAILED,
37    E_SERVICE_DESCRIPTOR_IS_EMPTY,
38    E_PERMISSION_DENIED,
39    E_PERMISSION_SYSTEM,
40    E_GET_PHYSICAL_PATH_FAILED,
41    E_GET_TOKEN_INFO_ERROR,
42    E_SYNCER_NUM_OUT_OF_RANGE,
43    E_SYNC_FAILED_BATTERY_LOW,
44    E_SYNC_FAILED_BATTERY_TOO_LOW,
45    E_SYNC_FAILED_NETWORK_NOT_AVAILABLE,
46    E_GET_NETWORK_MANAGER_FAILED,
47    E_DELETE_FAILED,
48    E_NO_SUCH_FILE,
49    E_RENAME_FAIL,
50    E_SYSTEM_LOAD_OVER,
51    E_EXCEED_MAX_SIZE,
52    E_ILLEGAL_URI,
53
54    /* data syncer */
55    E_CLOUD_SDK,
56    E_RDB,
57    E_CONTEXT,
58    E_STOP,
59    E_PENDING,
60    E_SCHEDULE,
61    E_ASYNC_RUN,
62    E_PATH,
63    E_DATA,
64    E_NOTIFY,
65    E_UNKNOWN,
66    E_CLOUD_STORAGE_FULL,
67    E_LOCAL_STORAGE_FULL,
68    E_OSACCOUNT,
69    E_USER_LOCKED,
70    E_GET_SIZE_ERROR,
71
72    E_IPC_READ_FAILED,
73    E_IPC_WRITE_FAILED,
74    E_SOFTBUS_SESSION_FAILED,
75    E_GET_DEVICE_ID,
76    E_GET_USER_ID,
77    E_NULLPTR,
78    /* session */
79    E_CREATE_SESSION,
80    E_OPEN_SESSION,
81    E_WAIT_SESSION_OPENED,
82    E_FILE_NOT_EXIST,
83    E_SEND_FILE,
84    E_MEMORY,
85
86    /* eventhandler */
87    E_EVENT_HANDLER,
88    E_ZIP,
89};
90
91enum DFSErrCode {
92    ERR_OK = 0,
93    ERR_BAD_VALUE = -1,
94
95    ERR_APPLY_RESULT = 1,
96    ERR_DLOPEN,
97    ERR_PUBLISH_STATE,
98    ERR_ALLCONNECT,
99};
100
101enum IPCErrCode {
102    E_DEAD_REPLY = 29189,
103};
104
105enum JsErrCode {
106    E_PERMISSION = 201,
107    E_PERMISSION_SYS = 202,
108    E_DFS_CANCEL_SUCCESS = 204,
109    E_PARAMS_ = 401,
110    E_IPCSS = STORAGE_SERVICE_SYS_CAP_TAG + 1,
111    E_UNKNOWN_ERR = FILEIO_SYS_CAP_TAG + 42,
112    E_INVALID_URI = USER_FILE_MANAGER_SYS_CAP_TAG + 2,
113    E_CLOUD_NOT_READY = DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + 1,
114    E_NETWORK_ERR = DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + 2,
115    E_BATTERY_WARNING = DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + 3,
116    E_EXCEED_MAX_LIMIT = DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + 4,
117    E_DATABASE_FAILED = DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + 5
118};
119
120const std::unordered_map<int32_t, int32_t> errCodeTable {
121    { E_PERMISSION_DENIED, E_PERMISSION },
122    { E_PERMISSION_SYSTEM, E_PERMISSION_SYS },
123    { E_INVAL_ARG, E_PARAMS_ },
124    { E_BROKEN_IPC, E_IPCSS },
125    { E_CLOUD_SDK, E_CLOUD_NOT_READY },
126    { E_ILLEGAL_URI, E_INVALID_URI },
127    { E_SYNC_FAILED_NETWORK_NOT_AVAILABLE, E_NETWORK_ERR },
128    { E_SYNC_FAILED_BATTERY_TOO_LOW, E_BATTERY_WARNING },
129    { E_EXCEED_MAX_SIZE, E_EXCEED_MAX_LIMIT },
130    { E_RDB, E_DATABASE_FAILED },
131    { E_DEAD_REPLY, E_IPCSS }
132};
133
134int32_t Convert2JsErrNum(int32_t errNum);
135} // namespace OHOS::FileManagement
136
137#endif // OHOS_FILEMGMT_DFS_ERROR_H