| Apache Ignite C++

ignite_error.h
Go to the documentation of this file.
1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
23 #ifndef _IGNITE_IGNITE_ERROR
24 #define _IGNITE_IGNITE_ERROR
25
26 #include <stdint.h>
27
28 #include <exception>
29 #include <sstream>
30
31 #include <ignite/common/common.h>
32
33 #define IGNITE_ERROR_1(code, part1) { \
34 std::stringstream stream; \
35 stream << (part1); \
36 throw ignite::IgniteError(code, stream.str().c_str()); \
37 }
38
39 #define IGNITE_ERROR_2(code, part1, part2) { \
40 std::stringstream stream; \
41 stream << (part1) << (part2); \
42 throw ignite::IgniteError(code, stream.str().c_str()); \
43 }
44
45 #define IGNITE_ERROR_3(code, part1, part2, part3) { \
46 std::stringstream stream; \
47 stream << (part1) << (part2) << (part3); \
48 throw ignite::IgniteError(code, stream.str().c_str()); \
49 }
50
51 #define IGNITE_ERROR_FORMATTED_1(code, msg, key1, val1) { \
52 std::stringstream stream; \
53 stream << msg << " [" << key1 << "=" << (val1) << "]"; \
54 throw ignite::IgniteError(code, stream.str().c_str()); \
55 }
56
57 #define IGNITE_ERROR_FORMATTED_2(code, msg, key1, val1, key2, val2) { \
58 std::stringstream stream; \
59 stream << msg << " [" << key1 << "=" << (val1) << ", " << key2 << "=" << (val2) << "]"; \
60 throw ignite::IgniteError(code, stream.str().c_str()); \
61 }
62
63 #define IGNITE_ERROR_FORMATTED_3(code, msg, key1, val1, key2, val2, key3, val3) { \
64 std::stringstream stream; \
65 stream << msg << " [" << key1 << "=" << (val1) << ", " << key2 << "=" << (val2) << ", " << key3 << "=" << (val3) << "]"; \
66 throw ignite::IgniteError(code, stream.str().c_str()); \
67 }
68
69 #define IGNITE_ERROR_FORMATTED_4(code, msg, key1, val1, key2, val2, key3, val3, key4, val4) { \
70 std::stringstream stream; \
71 stream << msg << " [" << key1 << "=" << (val1) << ", " << key2 << "=" << (val2) << ", " << key3 << "=" << (val3) << ", " << key4 << "=" << (val4) << "]"; \
72 throw ignite::IgniteError(code, stream.str().c_str()); \
73 }
74
75 #ifdef _MSC_VER
76 # pragma warning(push)
77 # pragma warning(disable : 4275)
78 #endif //_MSC_VER
79
80 namespace ignite
81 {
82 namespace java
83 {
84 /* JNI error constants. */
85 const int IGNITE_JNI_ERR_SUCCESS = 0;
86 const int IGNITE_JNI_ERR_GENERIC = 1;
87 const int IGNITE_JNI_ERR_JVM_INIT = 2;
88 const int IGNITE_JNI_ERR_JVM_ATTACH = 3;
89 }
90
94 class IGNITE_IMPORT_EXPORT IgniteError : public std::exception
95 {
96 public:
98 static const int IGNITE_SUCCESS = 0;
99
101 static const int IGNITE_ERR_JVM_INIT = 1;
102
104 static const int IGNITE_ERR_JVM_ATTACH = 2;
105
107 static const int IGNITE_ERR_JVM_LIB_NOT_FOUND = 3;
108
110 static const int IGNITE_ERR_JVM_LIB_LOAD_FAILED = 4;
111
113 static const int IGNITE_ERR_JVM_NO_CLASSPATH = 5;
114
116 static const int IGNITE_ERR_JVM_NO_CLASS_DEF_FOUND = 6;
117
119 static const int IGNITE_ERR_JVM_NO_SUCH_METHOD = 7;
120
122 static const int IGNITE_ERR_MEMORY = 1001;
123
125 static const int IGNITE_ERR_BINARY = 1002;
126
128 static const int IGNITE_ERR_STD = 1003;
129
131 static const int IGNITE_ERR_GENERIC = 2000;
132
134 static const int IGNITE_ERR_ILLEGAL_ARGUMENT = 2001;
135
137 static const int IGNITE_ERR_ILLEGAL_STATE = 2002;
138
140 static const int IGNITE_ERR_UNSUPPORTED_OPERATION = 2003;
141
143 static const int IGNITE_ERR_INTERRUPTED = 2004;
144
146 static const int IGNITE_ERR_CLUSTER_GROUP_EMPTY = 2005;
147
149 static const int IGNITE_ERR_CLUSTER_TOPOLOGY = 2006;
150
152 static const int IGNITE_ERR_COMPUTE_EXECUTION_REJECTED = 2007;
153
155 static const int IGNITE_ERR_COMPUTE_JOB_FAILOVER = 2008;
156
158 static const int IGNITE_ERR_COMPUTE_TASK_CANCELLED = 2009;
159
161 static const int IGNITE_ERR_COMPUTE_TASK_TIMEOUT = 2010;
162
164 static const int IGNITE_ERR_COMPUTE_USER_UNDECLARED_EXCEPTION = 2011;
165
167 static const int IGNITE_ERR_CACHE = 2012;
168
170 static const int IGNITE_ERR_CACHE_LOADER = 2013;
171
173 static const int IGNITE_ERR_CACHE_WRITER = 2014;
174
176 static const int IGNITE_ERR_ENTRY_PROCESSOR = 2015;
177
179 static const int IGNITE_ERR_CACHE_ATOMIC_UPDATE_TIMEOUT = 2016;
180
182 static const int IGNITE_ERR_CACHE_PARTIAL_UPDATE = 2017;
183
185 static const int IGNITE_ERR_TX_OPTIMISTIC = 2018;
186
188 static const int IGNITE_ERR_TX_TIMEOUT = 2019;
189
191 static const int IGNITE_ERR_TX_ROLLBACK = 2020;
192
194 static const int IGNITE_ERR_TX_HEURISTIC = 2021;
195
197 static const int IGNITE_ERR_AUTHENTICATION = 2022;
198
200 static const int IGNITE_ERR_SECURITY = 2023;
201
203 static const int IGNITE_ERR_FUTURE_STATE = 2024;
204
206 static const int IGNITE_ERR_NETWORK_FAILURE = 2025;
207
209 static const int IGNITE_ERR_SECURE_CONNECTION_FAILURE = 2026;
210
212 static const int IGNITE_ERR_TX_THIS_THREAD = 2027;
213
215 static const int IGNITE_ERR_TX = 2028;
216
217
219 static const int IGNITE_ERR_UNKNOWN = -1;
220
226 static void ThrowIfNeeded(const IgniteError& err);
227
232 IgniteError();
233
239 IgniteError(const int32_t code);
240
247 IgniteError(const int32_t code, const char* msg);
248
254 IgniteError(const IgniteError& other);
255
262 IgniteError& operator=(const IgniteError& other);
263
267 ~IgniteError() IGNITE_NO_THROW;
268
274 int32_t GetCode() const;
275
281 const char* GetText() const IGNITE_NO_THROW;
282
289 virtual const char* what() const IGNITE_NO_THROW;
290
299 static void SetError(const int jniCode, const char* jniCls, const char* jniMsg, IgniteError& err);
300 private:
302 int32_t code;
303
305 char* msg;
306 };
307 }
308
309 #ifdef _MSC_VER
310 # pragma warning(pop)
311 #endif //_MSC_VER
312
313 #endif //_IGNITE_IGNITE_ERROR
ignite::IgniteError
Ignite error information.
Definition: ignite_error.h:94
ignite
Apache Ignite API.
Definition: cache.h:48