1 /*
2 * Copyright (c) 2021 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 #include "kv_store_errno.h"
17 #include "db_errno.h"
18
19 namespace DistributedDB {
20 struct DBErrnoPair {
21 int errCode;
22 DBStatus status;
23 };
24
25 namespace {
26 const DBErrnoPair ERRNO_MAP[] = {
27 { E_OK, OK },
28 { -E_BUSY, BUSY },
29 { -E_NOT_FOUND, NOT_FOUND },
30 { -E_INVALID_ARGS, INVALID_ARGS },
31 { -E_TIMEOUT, TIME_OUT },
32 { -E_NOT_SUPPORT, NOT_SUPPORT },
33 { -E_INVALID_PASSWD_OR_CORRUPTED_DB, INVALID_PASSWD_OR_CORRUPTED_DB },
34 { -E_MAX_LIMITS, OVER_MAX_LIMITS },
35 { -E_INVALID_FILE, INVALID_FILE },
36 { -E_INVALID_PATH, NO_PERMISSION },
37 { -E_READ_ONLY, READ_ONLY },
38 { -E_INVALID_SCHEMA, INVALID_SCHEMA },
39 { -E_SCHEMA_MISMATCH, SCHEMA_MISMATCH },
40 { -E_SCHEMA_VIOLATE_VALUE, SCHEMA_VIOLATE_VALUE },
41 { -E_VALUE_MISMATCH_FEILD_COUNT, INVALID_VALUE_FIELDS },
42 { -E_VALUE_MISMATCH_FEILD_TYPE, INVALID_FIELD_TYPE },
43 { -E_VALUE_MISMATCH_CONSTRAINT, CONSTRAIN_VIOLATION },
44 { -E_INVALID_FORMAT, INVALID_FORMAT },
45 { -E_STALE, STALE },
46 { -E_LOCAL_DELETED, LOCAL_DELETED },
47 { -E_LOCAL_DEFEAT, LOCAL_DEFEAT },
48 { -E_LOCAL_COVERED, LOCAL_COVERED },
49 { -E_INVALID_QUERY_FORMAT, INVALID_QUERY_FORMAT },
50 { -E_INVALID_QUERY_FIELD, INVALID_QUERY_FIELD },
51 { -E_ALREADY_SET, ALREADY_SET },
52 { -E_EKEYREVOKED, EKEYREVOKED_ERROR },
53 { -E_SECURITY_OPTION_CHECK_ERROR, SECURITY_OPTION_CHECK_ERROR },
54 { -E_INTERCEPT_DATA_FAIL, INTERCEPT_DATA_FAIL },
55 { -E_LOG_OVER_LIMITS, LOG_OVER_LIMITS },
56 { -E_DISTRIBUTED_SCHEMA_NOT_FOUND, DISTRIBUTED_SCHEMA_NOT_FOUND },
57 { -E_DISTRIBUTED_SCHEMA_CHANGED, DISTRIBUTED_SCHEMA_CHANGED },
58 { -E_MODE_MISMATCH, MODE_MISMATCH },
59 { -E_NO_NEED_ACTIVE, NOT_ACTIVE },
60 { -E_NONEXISTENT, NONEXISTENT },
61 { -E_TYPE_MISMATCH, TYPE_MISMATCH },
62 { -E_DENIED_SQL, NO_PERMISSION },
63 { -E_USER_CHANGE, USER_CHANGED },
64 { -E_PERIPHERAL_INTERFACE_FAIL, COMM_FAILURE },
65 { -E_FEEDBACK_COMMUNICATOR_NOT_FOUND, COMM_FAILURE },
66 { -E_FEEDBACK_UNKNOWN_MESSAGE, NOT_SUPPORT },
67 { -E_NOT_PERMIT, PERMISSION_CHECK_FORBID_SYNC },
68 { -E_REMOTE_OVER_SIZE, OVER_MAX_LIMITS },
69 };
70 }
71
TransferDBErrno(int err)72 DBStatus TransferDBErrno(int err)
73 {
74 for (const auto &item : ERRNO_MAP) {
75 if (item.errCode == err) {
76 return item.status;
77 }
78 }
79 return DB_ERROR;
80 }
81 };
82