• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "mtp_error_utils.h"
16 #include <map>
17 
18 #include "medialibrary_errno.h"
19 #include "media_log.h"
20 #include "media_mtp_utils.h"
21 #include "mtp_constants.h"
22 
23 using namespace std;
24 namespace OHOS {
25 namespace Media {
SolveGetHandlesError(const int32_t mediaError)26 int32_t MtpErrorUtils::SolveGetHandlesError(const int32_t mediaError)
27 {
28     static const std::map<int32_t, int32_t> getHandlesError = {
29         { E_SUCCESS, MTP_SUCCESS },
30         { E_HAS_DB_ERROR, MTP_ERROR_STORE_NOT_AVAILABLE },
31         { E_NO_SUCH_FILE, MTP_ERROR_INVALID_OBJECTHANDLE },
32     };
33     return getHandlesError.at(mediaError);
34 }
35 
SolveGetObjectInfoError(const int32_t mediaError)36 int32_t MtpErrorUtils::SolveGetObjectInfoError(const int32_t mediaError)
37 {
38     static const std::map<int32_t, int32_t> getObjectInfoError = {
39         { E_SUCCESS, MTP_SUCCESS },
40         { E_HAS_DB_ERROR, MTP_ERROR_STORE_NOT_AVAILABLE },
41         { E_NO_SUCH_FILE, MTP_ERROR_INVALID_OBJECTHANDLE },
42     };
43     return getObjectInfoError.at(mediaError);
44 }
45 
SolveGetFdError(const int32_t mediaError)46 int32_t MtpErrorUtils::SolveGetFdError(const int32_t mediaError)
47 {
48     static const std::map<int32_t, int32_t> getFdInfoError = {
49         { E_SUCCESS, MTP_SUCCESS },
50         { E_HAS_DB_ERROR, MTP_ERROR_STORE_NOT_AVAILABLE },
51         { E_HAS_FS_ERROR, MTP_ERROR_INVALID_OBJECTHANDLE },
52     };
53     return getFdInfoError.at(mediaError);
54 }
55 
SolveSendObjectInfoError(const int32_t mediaError)56 int32_t MtpErrorUtils::SolveSendObjectInfoError(const int32_t mediaError)
57 {
58     static const std::map<int32_t, int32_t> sendObjectInfoError = {
59         { E_SUCCESS, MTP_SUCCESS },
60         { E_HAS_DB_ERROR, MTP_ERROR_STORE_NOT_AVAILABLE },
61         { E_NO_SUCH_FILE, MTP_ERROR_INVALID_PARENTOBJECT },
62     };
63     map<int32_t, int32_t>::const_iterator iterator = sendObjectInfoError.find(mediaError);
64     if (iterator != sendObjectInfoError.end()) {
65         return sendObjectInfoError.at(mediaError);
66     } else {
67         return MTP_ERROR_INVALID_OBJECTHANDLE;
68     }
69 }
70 
SolveMoveObjectError(const int32_t mediaError)71 int32_t MtpErrorUtils::SolveMoveObjectError(const int32_t mediaError)
72 {
73     static const std::map<int32_t, int32_t> moveObjectError = {
74         { E_SUCCESS, MTP_SUCCESS },
75         { E_HAS_DB_ERROR, MTP_ERROR_STORE_NOT_AVAILABLE },
76         { E_NO_SUCH_FILE, MTP_ERROR_INVALID_OBJECTHANDLE },
77         { E_INVALID_FILEID, MTP_ERROR_INVALID_OBJECTHANDLE },
78         { E_INVALID_PATH, MTP_ERROR_INVALID_OBJECTHANDLE },
79         { E_MODIFY_DATA_FAIL, MTP_ERROR_INVALID_OBJECTHANDLE },
80         { E_FAIL, MTP_ERROR_PARAMETER_NOT_SUPPORTED },
81         { E_FILE_EXIST, MTP_ERROR_PARAMETER_NOT_SUPPORTED },
82         { E_FILE_OPER_FAIL, MTP_ERROR_STORE_NOT_AVAILABLE },
83     };
84     map<int32_t, int32_t>::const_iterator iterator = moveObjectError.find(mediaError);
85     if (iterator != moveObjectError.end()) {
86         return moveObjectError.at(mediaError);
87     } else {
88         return MTP_ERROR_INVALID_OBJECTHANDLE;
89     }
90 }
91 
SolveCopyObjectError(const int32_t mediaError)92 int32_t MtpErrorUtils::SolveCopyObjectError(const int32_t mediaError)
93 {
94     static const std::map<int32_t, int32_t> copyObjectError = {
95         { E_SUCCESS, MTP_SUCCESS },
96         { E_HAS_DB_ERROR, MTP_ERROR_INVALID_OBJECTHANDLE },
97         { E_NO_SUCH_FILE, MTP_ERROR_INVALID_OBJECTHANDLE },
98         { E_INVALID_FILEID, MTP_ERROR_INVALID_OBJECTHANDLE },
99         { E_INVALID_PATH, MTP_ERROR_INVALID_OBJECTHANDLE },
100         { E_FAIL, MTP_ERROR_PARAMETER_NOT_SUPPORTED },
101         { E_FILE_EXIST, MTP_ERROR_PARAMETER_NOT_SUPPORTED },
102         { E_VIOLATION_PARAMETERS, MTP_ERROR_PARAMETER_NOT_SUPPORTED },
103         { E_DELETE_DIR_FAIL, MTP_ERROR_INVALID_OBJECTHANDLE },
104     };
105     map<int32_t, int32_t>::const_iterator iterator = copyObjectError.find(mediaError);
106     if (iterator != copyObjectError.end()) {
107         return copyObjectError.at(mediaError);
108     } else {
109         return MTP_ERROR_INVALID_OBJECTHANDLE;
110     }
111 }
112 
SolveDeleteObjectError(const int32_t mediaError)113 int32_t MtpErrorUtils::SolveDeleteObjectError(const int32_t mediaError)
114 {
115     static const std::map<int32_t, int32_t> deleteObjectError = {
116         { E_SUCCESS, MTP_SUCCESS },
117         { E_HAS_DB_ERROR, MTP_ERROR_INVALID_OBJECTHANDLE },
118         { E_FAIL, MTP_ERROR_PARAMETER_NOT_SUPPORTED },
119         { E_NO_SUCH_FILE, MTP_ERROR_INVALID_OBJECTHANDLE },
120         { E_VIOLATION_PARAMETERS, MTP_ERROR_PARAMETER_NOT_SUPPORTED },
121     };
122     map<int32_t, int32_t>::const_iterator iterator = deleteObjectError.find(mediaError);
123     if (iterator != deleteObjectError.end()) {
124         return deleteObjectError.at(mediaError);
125     } else {
126         return MTP_ERROR_INVALID_OBJECTHANDLE;
127     }
128 }
129 
SolveObjectPropValueError(const int32_t mediaError)130 int32_t MtpErrorUtils::SolveObjectPropValueError(const int32_t mediaError)
131 {
132     static const std::map<int32_t, int32_t> objectPropValueError = {
133         { E_SUCCESS, MTP_SUCCESS },
134         { E_HAS_DB_ERROR, MTP_ERROR_INVALID_OBJECTPROP_FORMAT },
135         { E_NO_SUCH_FILE, MTP_ERROR_INVALID_OBJECTPROPCODE },
136         { E_INVALID_FILEID, MTP_ERROR_INVALID_OBJECTPROP_VALUE },
137         { E_INVALID_PATH, MTP_ERROR_INVALID_OBJECTPROP_VALUE },
138         { E_MODIFY_DATA_FAIL, MTP_ERROR_INVALID_OBJECTPROPCODE },
139         { E_FAIL, MTP_ERROR_INVALID_OBJECTPROPCODE },
140         { E_FILE_EXIST, MTP_ERROR_INVALID_OBJECTPROPCODE },
141         { E_FILE_OPER_FAIL, MTP_ERROR_INVALID_OBJECTPROPCODE },
142     };
143     map<int32_t, int32_t>::const_iterator iterator = objectPropValueError.find(mediaError);
144     if (iterator != objectPropValueError.end()) {
145         return objectPropValueError.at(mediaError);
146     } else {
147         return MTP_ERROR_INVALID_OBJECTPROPCODE;
148     }
149 }
150 
SolveCloseFdError(const int32_t mediaError)151 int32_t MtpErrorUtils::SolveCloseFdError(const int32_t mediaError)
152 {
153     static const std::map<int32_t, int32_t> CloseFdError = {
154         { E_SUCCESS, MTP_SUCCESS },
155         { E_HAS_DB_ERROR, MTP_ERROR_STORE_NOT_AVAILABLE },
156         { E_INVALID_FILEID, MTP_ERROR_INVALID_OBJECTHANDLE },
157     };
158     map<int32_t, int32_t>::const_iterator iterator = CloseFdError.find(mediaError);
159     if (iterator != CloseFdError.end()) {
160         return CloseFdError.at(mediaError);
161     } else {
162         return MTP_ERROR_INVALID_OBJECTHANDLE;
163     }
164 }
165 } // namespace Media
166 } // namespace OHOS