2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Apache License, Version 2.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://www.apache.org/licenses/LICENSE-2.0
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
18 * @file FBaseResult.cpp
19 * @brief This is the implementation file of Result class.
23 #include <FBaseResult.h>
24 #include <FBaseErrorDefine.h>
26 #define ARR_ITEM_COUNT(arr) (sizeof(arr) / sizeof(arr[0]))
27 #define ERR_TABLE_INITIALIZER(no) {(ERR_SRC_FRAMEWORK + SET_E_CAUSE(no)), \
28 ((ERR_SRC_FRAMEWORK + SET_E_CAUSE(no)) + ARR_ITEM_COUNT(__errTable ## no) - 1), __errTable ## no}
37 static __thread result lastResult = E_SUCCESS;
39 static const char* E_SUCCESS_STRING = "E_SUCCESS";
40 static const char* E_FAILURE_STRING = "E_FAILURE";
43 __BinarySearchErrorTable(ErrTableType errTable[], result value, int low, int high)
48 int mid = low + (high - low) / 2;
49 result rbegin = errTable[mid].rbegin;
50 result rend = errTable[mid].rend;
56 else if (value > rend)
62 return errTable[mid].table[value - rbegin];
65 if (value == E_SUCCESS)
67 return E_SUCCESS_STRING;
69 else if (value == E_FAILURE)
71 return E_FAILURE_STRING;
74 return "Unknown Error";
77 const char* __errTable1100[] =
79 "E_ADDRESS_CHANGED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1100))
80 "E_ALREADY_BOUND", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1101))
81 "E_ALREADY_CONNECTED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1102))
82 "E_ALREADY_OPENED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1103))
83 "E_AUTHENTICATION", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1104))
84 "E_APP_NOT_INSTALLED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1105))
85 "E_ALREADY_SET", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1106))
86 "E_ACCOUNT_ALREADY_EXIST", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1107))
87 "E_ACCOUNT_NOT_FOUND" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1108))
90 const char* __errTable1300[] =
92 "E_CHUNKED_TRANSACTION", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1300))
93 "E_CONNECTION_BUSY", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1301))
94 "E_CONNECTION_FAILED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1302))
95 "E_CONNECTION_RESET", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1303))
96 "E_CREDENTIAL_EXPIRED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1304))
97 "E_CERTIFICATE_VERIFICATION_FAILED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1305))
98 "E_CONTEXT_UNAVAILABLE" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1306))
101 const char* __errTable1400[] =
103 "E_DATA_NOT_FOUND", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1400))
104 "E_DATABASE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1401))
105 "E_DECODING_FAILED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1402))
106 "E_DEVICE_BUSY", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1403))
107 "E_DEVICE_FAILED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1404))
108 "E_DEVICE_INCOMPATIBLE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1405))
109 "E_DEVICE_UNAVAILABLE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1406))
110 "E_DHCP", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1407))
111 "E_DIMENSION_CHANGED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1408))
112 "E_DNS", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1409))
113 "E_DNS_NOT_FOUND", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1410))
114 "E_DATA_NOT_ENOUGH", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1411))
115 "E_DISPLAY_RIGHT_VIOLATED" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1412))
118 const char* __errTable1500[] =
120 "E_EFFECTS_DISABLED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1500))
121 "E_EMPTY_BODY", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1501))
122 "E_ENCODING_FAILED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1502))
123 "E_END_OF_FILE" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1503))
126 const char* __errTable1600[] =
128 "E_FDN_MODE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1600))
129 "E_FILE_ALREADY_EXIST", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1601))
130 "E_FILE_NOT_FOUND" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1602))
133 const char* __errTable1700[] =
135 "E_GROUP_NOT_FOUND" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1700))
138 const char* __errTable1800[] =
140 "E_HOST_NOT_FOUND", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1800))
141 "E_HOST_UNREACHABLE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1801))
142 "E_HTTP_USER" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1802))
145 const char* __errTable1900[] =
147 "E_ILLEGAL_ACCESS", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1900))
148 "E_IN_PROGRESS", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1901))
149 "E_INACCESSIBLE_PATH", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1902))
150 "E_INIT_FAILED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1903))
151 "E_INSTANTIATION_FAILED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1904))
152 "E_INSUFFICIENT_PRIORITY", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1905))
153 "E_INTERRUPTED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1906))
154 "E_INVALID_ACCOUNT", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1907))
155 "E_INVALID_ADDRESS", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1908))
156 "E_INVALID_ARG", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1909))
157 "E_INVALID_CONDITION", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1910))
158 "E_INVALID_CONNECTION", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1911))
159 "E_INVALID_CONTENT", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1912))
160 "E_INVALID_CONTEXT", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1913))
161 "E_INVALID_DATA", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1914))
162 "E_INVALID_DOMAIN", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1915))
163 "E_INVALID_ENCODING_RANGE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1916))
164 "E_INVALID_FORMAT", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1917))
165 "E_INVALID_HEADER", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1918))
166 "E_INVALID_KEY", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1919))
167 "E_INVALID_OPERATION", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1920))
168 "E_INVALID_PROXY", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1921))
169 "E_INVALID_SIM_STATE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1922))
170 "E_INVALID_SERVER", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1923))
171 "E_INVALID_SESSION", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1924))
172 "E_INVALID_SOCKET", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1925))
173 "E_INVALID_STATE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1926))
174 "E_INVALID_TRANSACTION", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1927))
175 "E_IO", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1928))
176 "E_NOT_JOINED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1929))
177 "E_INVALID_CERTIFICATE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1930))
178 "E_INVALID_URL", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1931))
179 "E_INVALID_USER_ID", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1932))
180 "E_INVALID_PASSWORD" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(1933))
184 const char* __errTable2100[] =
186 "E_KEY_ALREADY_EXIST", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2100))
187 "E_KEY_NOT_FOUND" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2101))
190 const char* __errTable2200[] =
192 "E_LANDMARK", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2200))
193 "E_LIBRARY_NOT_FOUND", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2201))
194 "E_LIBRARY_NOT_LOADED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2202))
195 "E_LINK", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2203))
196 "E_LOCATION", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2204))
197 "E_LOCATION_SERVICE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2205))
198 "E_LOCK_FAILED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2206))
199 "E_LANGUAGE_NOT_SET", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2207))
200 "E_LOCATION_UNAVAILABLE" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2208))
203 const char* __errTable2300[] =
205 "E_MAX_EXCEEDED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2300))
206 "E_MISSING_INPUT", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2301))
207 "E_MOBILE_FAILED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2302))
208 "E_MODEL_NOT_FOUND", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2303))
209 "E_MEMBER_ALREADY_EXIST" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2304))
212 const char* __errTable2400[] =
214 "E_NETWORK_FAILED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2400))
215 "E_NETWORK_UNAVAILABLE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2401))
216 "E_NO_CERTIFICATE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2402))
217 "E_NOT_A_MEMBER", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2403))
218 "E_NOT_PAIRED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2404))
219 "E_NOT_RESPONDING", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2405))
220 "E_NUM_FORMAT" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2406))
223 const char* __errTable2500[] =
225 "E_OBJ_ALREADY_EXIST", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2500))
226 "E_OBJ_NOT_FOUND", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2501))
227 "E_OBJECT_LOCKED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2502))
228 "E_ON_INITIALIZING", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2503))
229 "E_OPERATION_CANCELED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2504))
230 "E_OPERATION_FAILED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2505))
231 "E_OUT_OF_MEMORY", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2506))
232 "E_OUT_OF_RANGE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2507))
233 "E_OVERFLOW", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2508))
234 "E_OPENGL_ERROR", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2509))
235 "E_OBJ_NOT_REGISTERED" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2510))
238 const char* __errTable2600[] =
240 "E_PAIRING_FAILED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2600))
241 "E_PARSING_FAILED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2601))
242 "E_PRIVILEGE_DENIED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2602))
243 "E_PKG_NOT_INSTALLED" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2603))
246 const char* __errTable2800[] =
248 "E_READ_ONLY", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2800))
249 "E_REJECTED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2801))
250 "E_REMOTE_DEVICE_NOT_FOUND", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2802))
251 "E_REMOVE_SERVICE_NOT_FOUND", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2803))
252 "E_RESOURCE_UNAVAILABLE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2804))
253 "E_RIGHT_EXPIRED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2805))
254 "E_RIGHT_NO_LICENSE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2806))
255 "E_RIGHT_FUTURE_USE" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2807))
258 const char* __errTable2900[] =
260 "E_SECTION_ALREADY_EXIST", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2900))
261 "E_SECTION_NOT_FOUND", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2901))
262 "E_SERVER", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2902))
263 "E_SERVICE_BUSY", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2903))
264 "E_SERVICE_LIMITED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2904))
265 "E_SERVICE_LOCKED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2905))
266 "E_SERVICE_UNAVAILABLE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2906))
267 "E_SESSION_DEACTIVATED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2907))
268 "E_SESSION_UNAVAILABLE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2908))
269 "E_SIZE_MISMATCH", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2909))
270 "E_SOCKET_USER", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2910))
271 "E_STORAGE_FULL", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2911))
272 "E_SYMBOL_NOT_FOUND", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2912))
273 "E_SYNTAX", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2913))
274 "E_SYSTEM", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2914))
275 "E_SERVICE_DEACTIVATED " //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(2915))
278 const char* __errTable3000[] =
280 "E_TABLE_NOT_FOUND", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3000))
281 "E_TIMEOUT", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3001))
282 "E_TYPE_MISMATCH" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3002))
285 const char* __errTable3100[] =
287 "E_UNDERFLOW", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3100))
288 "E_UNKNOWN", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3101))
289 "E_UNSUPPORTED_ALGORITHM", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3102))
290 "E_UNSUPPORTED_CODEC", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3103))
291 "E_UNSUPPORTED_FAMILY", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3104))
292 "E_UNSUPPORTED_FORMAT", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3105))
293 "E_UNSUPPORTED_PROTOCOL", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3106))
294 "E_UNSUPPORTED_OPERATION", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3107))
295 "E_UNSUPPORTED_OPTION", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3108))
296 "E_UNSUPPORTED_SERVICE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3109))
297 "E_UNSUPPORTED_TYPE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3110))
298 "E_URL_CHANGED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3111))
299 "E_USER_AGENT_NOT_ALLOWED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3112))
300 "E_USER_ALREADY_REGISTERED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3113))
301 "E_USER_NOT_FOUND", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3114))
302 "E_USER_NOT_REGISTERED", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3115))
303 "E_UNSUPPORTED_LANGUAGE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3116))
304 "E_UNSUPPORTED_VERSION", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3117))
305 "E_UNSUPPORTED_LOCALE", //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3118))
306 "E_USER_NOT_CONSENTED" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3119))
309 const char* __errTable3300[] =
311 "E_WOULD_BLOCK" //(ERR_SRC_FRAMEWORK + SET_E_CAUSE(3300))
314 // Add the error tables in sorted order. Then we can use binary search.
315 // else we will have to use sequential search
316 ErrTableType __gErrTable[] =
318 ERR_TABLE_INITIALIZER(1100),
319 ERR_TABLE_INITIALIZER(1300),
320 ERR_TABLE_INITIALIZER(1400),
321 ERR_TABLE_INITIALIZER(1500),
322 ERR_TABLE_INITIALIZER(1600),
323 ERR_TABLE_INITIALIZER(1700),
324 ERR_TABLE_INITIALIZER(1800),
325 ERR_TABLE_INITIALIZER(1900),
326 ERR_TABLE_INITIALIZER(2100),
327 ERR_TABLE_INITIALIZER(2200),
328 ERR_TABLE_INITIALIZER(2300),
329 ERR_TABLE_INITIALIZER(2400),
330 ERR_TABLE_INITIALIZER(2500),
331 ERR_TABLE_INITIALIZER(2600),
332 ERR_TABLE_INITIALIZER(2800),
333 ERR_TABLE_INITIALIZER(2900),
334 ERR_TABLE_INITIALIZER(3000),
335 ERR_TABLE_INITIALIZER(3100),
336 ERR_TABLE_INITIALIZER(3300)
346 SetLastResult(result r)
352 ClearLastResult(void)
354 lastResult = E_SUCCESS;
359 GetErrorMessage(result value)
361 return __BinarySearchErrorTable(__gErrTable, value, 0, (ARR_ITEM_COUNT(__gErrTable) - 1));
364 #define MAX_CHECK_COUNT 100
365 _OSP_EXPORT_ result TransExceptionsExclusiveInternal(result r, result e, int num,...);
367 _OSP_EXPORT_ result TransExceptionsInclusiveInternal(result r, result e, int num,...);
370 TransExceptionsExclusiveInternal(result r, result e, int num, ...)
380 for(count; count < num; count++ )
382 if (r == va_arg(ap, result))
397 TransExceptionsInclusiveInternal(result r, result e, int num, ...)
407 for(count; count < num ; count++ )
409 if (r == va_arg(ap, result))