13 #ifndef KUDU_UTIL_STATUS_H_ 14 #define KUDU_UTIL_STATUS_H_ 24 #ifdef KUDU_HEADERS_NO_STUBS 25 #include "kudu/gutil/macros.h" 26 #include "kudu/gutil/port.h" 28 #include "kudu/client/stubs.h" 31 #include "kudu/util/kudu_export.h" 32 #include "kudu/util/slice.h" 35 #define KUDU_RETURN_NOT_OK(s) do { \ 36 const ::kudu::Status& _s = (s); \ 37 if (PREDICT_FALSE(!_s.ok())) return _s; \ 42 #define KUDU_RETURN_NOT_OK_PREPEND(s, msg) do { \ 43 const ::kudu::Status& _s = (s); \ 44 if (PREDICT_FALSE(!_s.ok())) return _s.CloneAndPrepend(msg); \ 50 #define KUDU_RETURN_NOT_OK_RET(to_call, to_return) do { \ 51 const ::kudu::Status& s = (to_call); \ 52 if (PREDICT_FALSE(!s.ok())) return (to_return); \ 56 #define KUDU_RETURN_NOT_OK_EVAL(s, on_error) do { \ 57 const ::kudu::Status& _s = (s); \ 58 if (PREDICT_FALSE(!_s.ok())) { \ 65 #define KUDU_WARN_NOT_OK(to_call, warning_prefix) do { \ 66 const ::kudu::Status& _s = (to_call); \ 67 if (PREDICT_FALSE(!_s.ok())) { \ 68 KUDU_LOG(WARNING) << (warning_prefix) << ": " << _s.ToString(); \ 73 #define KUDU_LOG_AND_RETURN(level, status) do { \ 74 const ::kudu::Status& _s = (status); \ 75 KUDU_LOG(level) << _s.ToString(); \ 80 #define KUDU_RETURN_NOT_OK_LOG(s, level, msg) do { \ 81 const ::kudu::Status& _s = (s); \ 82 if (PREDICT_FALSE(!_s.ok())) { \ 83 KUDU_LOG(level) << "Status: " << _s.ToString() << " " << (msg); \ 90 #define KUDU_CHECK_OK_PREPEND(to_call, msg) do { \ 91 const ::kudu::Status& _s = (to_call); \ 92 KUDU_CHECK(_s.ok()) << (msg) << ": " << _s.ToString(); \ 97 #define KUDU_CHECK_OK(s) KUDU_CHECK_OK_PREPEND(s, "Bad status") 101 #define KUDU_DCHECK_OK_PREPEND(to_call, msg) do { \ 102 const ::kudu::Status& _s = (to_call); \ 103 KUDU_DCHECK(_s.ok()) << (msg) << ": " << _s.ToString(); \ 108 #define KUDU_DCHECK_OK(s) KUDU_DCHECK_OK_PREPEND(s, "Bad status") 123 #ifdef KUDU_HEADERS_USE_SHORT_STATUS_MACROS 124 #define RETURN_NOT_OK KUDU_RETURN_NOT_OK 125 #define RETURN_NOT_OK_PREPEND KUDU_RETURN_NOT_OK_PREPEND 126 #define RETURN_NOT_OK_RET KUDU_RETURN_NOT_OK_RET 127 #define RETURN_NOT_OK_EVAL KUDU_RETURN_NOT_OK_EVAL 128 #define WARN_NOT_OK KUDU_WARN_NOT_OK 129 #define LOG_AND_RETURN KUDU_LOG_AND_RETURN 130 #define RETURN_NOT_OK_LOG KUDU_RETURN_NOT_OK_LOG 131 #define CHECK_OK_PREPEND KUDU_CHECK_OK_PREPEND 132 #define CHECK_OK KUDU_CHECK_OK 133 #define DCHECK_OK_PREPEND KUDU_DCHECK_OK_PREPEND 134 #define DCHECK_OK KUDU_DCHECK_OK 138 #define KUDU_CHECK CHECK 139 #define KUDU_DCHECK DCHECK 150 ~
Status() {
delete[] state_; }
165 #if __cplusplus >= 201103L 225 int16_t posix_code = -1) {
226 return Status(kNotFound, msg, msg2, posix_code);
229 int16_t posix_code = -1) {
230 return Status(kCorruption, msg, msg2, posix_code);
233 int16_t posix_code = -1) {
234 return Status(kNotSupported, msg, msg2, posix_code);
237 int16_t posix_code = -1) {
238 return Status(kInvalidArgument, msg, msg2, posix_code);
241 int16_t posix_code = -1) {
242 return Status(kIOError, msg, msg2, posix_code);
245 int16_t posix_code = -1) {
246 return Status(kAlreadyPresent, msg, msg2, posix_code);
249 int16_t posix_code = -1) {
250 return Status(kRuntimeError, msg, msg2, posix_code);
253 int16_t posix_code = -1) {
254 return Status(kNetworkError, msg, msg2, posix_code);
257 int16_t posix_code = -1) {
258 return Status(kIllegalState, msg, msg2, posix_code);
261 int16_t posix_code = -1) {
262 return Status(kNotAuthorized, msg, msg2, posix_code);
265 int16_t posix_code = -1) {
266 return Status(kAborted, msg, msg2, posix_code);
269 int16_t posix_code = -1) {
270 return Status(kRemoteError, msg, msg2, posix_code);
273 int16_t posix_code = -1) {
274 return Status(kServiceUnavailable, msg, msg2, posix_code);
277 int16_t posix_code = -1) {
278 return Status(kTimedOut, msg, msg2, posix_code);
281 int16_t posix_code = -1) {
282 return Status(kUninitialized, msg, msg2, posix_code);
285 int16_t posix_code = -1) {
286 return Status(kConfigurationError, msg, msg2, posix_code);
289 int64_t posix_code = -1) {
290 return Status(kIncomplete, msg, msg2, posix_code);
293 int64_t posix_code = -1) {
294 return Status(kEndOfFile, msg, msg2, posix_code);
299 bool ok()
const {
return (state_ == NULL); }
357 switch (posix_code()) {
369 std::string ToString()
const;
373 std::string CodeAsString()
const;
383 Slice message()
const;
387 int16_t posix_code()
const;
411 size_t memory_footprint_excluding_this()
const;
415 size_t memory_footprint_including_this()
const;
431 kInvalidArgument = 4,
440 kServiceUnavailable = 13,
443 kConfigurationError = 16,
452 COMPILE_ASSERT(
sizeof(Code) == 4, code_enum_size_is_part_of_abi);
455 return (state_ == NULL) ? kOk :
static_cast<Code
>(state_[4]);
459 static const char* CopyState(
const char* s);
463 state_ = (s.state_ == NULL) ? NULL : CopyState(s.state_);
469 if (state_ != s.state_) {
471 state_ = (s.state_ == NULL) ? NULL : CopyState(s.state_);
476 #if __cplusplus >= 201103L 482 if (state_ != s.state_) {
493 #endif // KUDU_UTIL_STATUS_H_ Status()
Create an object representing success status.
Definition: status.h:148
bool IsNotAuthorized() const
Definition: status.h:329
A representation of an operation's outcome.
Definition: status.h:145
bool IsIllegalState() const
Definition: status.h:326
Definition: callbacks.h:28
bool ok() const
Definition: status.h:299
bool IsTimedOut() const
Definition: status.h:341
bool IsRemoteError() const
Definition: status.h:335
bool IsDiskFailure() const
Definition: status.h:356
bool IsServiceUnavailable() const
Definition: status.h:338
bool IsAborted() const
Definition: status.h:332
bool IsUninitialized() const
Definition: status.h:344
bool IsRuntimeError() const
Definition: status.h:320
bool IsAlreadyPresent() const
Definition: status.h:317
bool IsIOError() const
Definition: status.h:311
static Status OK()
Definition: status.h:210
A wrapper around externally allocated data.
Definition: slice.h:47
Status & operator=(const Status &s)
Definition: status.h:466
bool IsConfigurationError() const
Definition: status.h:347
bool IsInvalidArgument() const
Definition: status.h:314
bool IsCorruption() const
Definition: status.h:305
bool IsEndOfFile() const
Definition: status.h:353
bool IsNotSupported() const
Definition: status.h:308
bool IsNetworkError() const
Definition: status.h:323
bool IsIncomplete() const
Definition: status.h:350
bool IsNotFound() const
Definition: status.h:302