b25a63dcc862886ad46e6d1e2e52bf4e2f312c03
[platform/core/api/audio-io.git] / src / cpp / CAudioError.cpp
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 #include <stdio.h>
18 #include <string.h>
19 #include <dlog.h>
20 #include "CAudioIODef.h"
21
22
23 using namespace std;
24 using namespace tizen_media_audio;
25
26
27 /**
28  * class CAudioError
29  */
30 CAudioError::EError CAudioError::__mLastError = CAudioError::EError::ERROR_NONE;
31 char CAudioError::__mLastErrorMsg[CAudioError::MSG_LENGTH];
32
33 CAudioError::CAudioError(EError err) :
34     __mError(err) {
35     __mLastError = __mError;
36 }
37
38 CAudioError::CAudioError(EError err, const char* fileName, const char* parentFunc, int lineNum) :
39     __mError(err) {
40     __mLastError = __mError;
41
42     const char* findFileName = strrchr(fileName, '/');
43     if (findFileName)
44         findFileName++;
45     const char* errStr = __convertErrorToString(__mError);
46
47     snprintf(__mErrorMsg, CAudioError::MSG_LENGTH, "["
48             COLOR_RED    "THROW" COLOR_END ":%s|"
49             COLOR_YELLOW "ERR"    COLOR_END ":%s|"
50             COLOR_YELLOW "FUNC"   COLOR_END ":%s(%d)]", findFileName, errStr, parentFunc, lineNum);
51
52     snprintf(__mLastErrorMsg, CAudioError::MSG_LENGTH, "LastError:%s", __mErrorMsg);
53 }
54
55 CAudioError::CAudioError(EError err, const char* msg, const char* fileName, const char* parentFunc, int lineNum) :
56     __mError(err) {
57     __mLastError = __mError;
58
59     const char* findFileName = strrchr(fileName, '/');
60     if (findFileName)
61         findFileName++;
62     const char* errStr = __convertErrorToString(__mError);
63
64     snprintf(__mErrorMsg, CAudioError::MSG_LENGTH, "["
65             COLOR_RED    "THROW" COLOR_END ":%s|"
66             COLOR_YELLOW "ERR"    COLOR_END ":%s|"
67             COLOR_YELLOW "FUNC"   COLOR_END ":%s(%d)]"
68             COLOR_YELLOW "MSG"    COLOR_END ":"
69             COLOR_CYAN   "%s"     COLOR_END, findFileName, errStr, parentFunc, lineNum, msg);
70
71     snprintf(__mLastErrorMsg, CAudioError::MSG_LENGTH, "LastError:%s", __mErrorMsg);
72 }
73
74 CAudioError::CAudioError(const CAudioError& err) {
75     __mError = err.__mError;
76     memcpy(__mErrorMsg, err.__mErrorMsg, MSG_LENGTH);
77 }
78
79 CAudioError::~CAudioError() {
80 }
81
82 const char* CAudioError::__convertErrorToString(EError err) {
83     switch (err) {
84     default:
85     case EError::ERROR_NONE:                return COLOR_GREEN "ERROR_NONE"               COLOR_END;
86     case EError::ERROR_INVALID_ARGUMENT:    return COLOR_RED   "ERROR_INVALID_ARGUMENT"   COLOR_END;
87     case EError::ERROR_INVALID_HANDLE:      return COLOR_RED   "ERROR_INVALID_HANDLE"     COLOR_END;
88     case EError::ERROR_INVALID_SAMPLERATE:  return COLOR_RED   "ERROR_INVALID_SAMPLERATE" COLOR_END;
89     case EError::ERROR_INVALID_CHANNEL:     return COLOR_RED   "ERROR_INVALID_CHANNEL"    COLOR_END;
90     case EError::ERROR_INVALID_FORMAT:      return COLOR_RED   "ERROR_INVALID_FORMAT"     COLOR_END;
91     case EError::ERROR_INVALID_POINTER:     return COLOR_RED   "ERROR_INVALID_POINTER"    COLOR_END;
92     case EError::ERROR_INVALID_OPERATION:   return COLOR_RED   "ERROR_INVALID_OPERATION"  COLOR_END;
93     case EError::ERROR_INVALID_STATE:       return COLOR_RED   "ERROR_INVALID_STATE"      COLOR_END;
94     case EError::ERROR_NOT_INITIALIZED:     return COLOR_RED   "ERROR_NOT_INITIALIZED"    COLOR_END;
95     case EError::ERROR_NOT_SUPPORTED:       return COLOR_RED   "ERROR_NOT_SUPPORTED"      COLOR_END;
96     case EError::ERROR_NOT_SUPPORTED_TYPE:  return COLOR_RED   "ERROR_NOT_SUPPORTED_TYPE" COLOR_END;
97     case EError::ERROR_PERMISSION_DENIED:   return COLOR_RED   "ERROR_PERMISSION_DENIED"  COLOR_END;
98     case EError::ERROR_DEVICE_POLICY_RESTRICTION:   return COLOR_RED   "ERROR_DEVICE_POLICY_RESTRICTION"  COLOR_END;
99     case EError::ERROR_DEVICE_NOT_OPENED:   return COLOR_RED   "ERROR_DEVICE_NOT_OPENED"  COLOR_END;
100     case EError::ERROR_DEVICE_NOT_CLOSED:   return COLOR_RED   "ERROR_DEVICE_NOT_CLOSED"  COLOR_END;
101     case EError::ERROR_OUT_OF_MEMORY:       return COLOR_RED   "ERROR_OUT_OF_MEMORY"      COLOR_END;
102     case EError::ERROR_INTERNAL_OPERATION:  return COLOR_RED   "ERROR_INTERNAL_OPERATION" COLOR_END;
103     case EError::ERROR_FAILED_OPERATION:    return COLOR_RED   "ERROR_FAILED_OPERATION"   COLOR_END;
104     case EError::ERROR_POLICY_BLOCKED:      return COLOR_RED   "ERROR_POLICY_BLOCKED"     COLOR_END;
105     case EError::ERROR_POLICY_INTERRUPTED:  return COLOR_RED   "ERROR_POLICY_INTERRUPTED" COLOR_END;
106     case EError::ERROR_POLICY_DUPLICATED:   return COLOR_RED   "ERROR_POLICY_DUPLICATED"  COLOR_END;
107     }
108 }
109
110 CAudioError::EError CAudioError::getLastError() {
111     return __mLastError;
112 }
113
114 const char* CAudioError::getLastErrorMsg() {
115     return __mLastErrorMsg;
116 }
117
118 CAudioError::EError CAudioError::getError() {
119     return __mError;
120 }
121
122 const char* CAudioError::getErrorMsg() {
123     return __mErrorMsg;
124 }
125
126 CAudioError& CAudioError::operator = (const EError err) {
127     __mError = err;
128     __mLastError = __mError;
129     return *this;
130 }
131
132 CAudioError& CAudioError::operator = (const CAudioError& err) {
133     __mError = err.__mError;
134     __mLastError = __mError;
135     memcpy(__mErrorMsg, err.__mErrorMsg, MSG_LENGTH);
136     memcpy(__mLastErrorMsg, __mErrorMsg, MSG_LENGTH);
137     return *this;
138 }
139
140 bool CAudioError::operator != (const EError err) {
141     return (__mError != err);
142 }
143
144 bool CAudioError::operator == (const EError err) {
145     return (__mError == err);
146 }
147
148 //bool operator == (const CAudioError& src, const CAudioError::EError& err) {
149 //    //return (src.__mLastError == err);
150 //    return true;
151 //}