197 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Protocol Buffers - Google's data interchange format
 | 
						|
// Copyright 2008 Google Inc.  All rights reserved.
 | 
						|
// https://developers.google.com/protocol-buffers/
 | 
						|
//
 | 
						|
// Redistribution and use in source and binary forms, with or without
 | 
						|
// modification, are permitted provided that the following conditions are
 | 
						|
// met:
 | 
						|
//
 | 
						|
//     * Redistributions of source code must retain the above copyright
 | 
						|
// notice, this list of conditions and the following disclaimer.
 | 
						|
//     * Redistributions in binary form must reproduce the above
 | 
						|
// copyright notice, this list of conditions and the following disclaimer
 | 
						|
// in the documentation and/or other materials provided with the
 | 
						|
// distribution.
 | 
						|
//     * Neither the name of Google Inc. nor the names of its
 | 
						|
// contributors may be used to endorse or promote products derived from
 | 
						|
// this software without specific prior written permission.
 | 
						|
//
 | 
						|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | 
						|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | 
						|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 | 
						|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 | 
						|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 | 
						|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 | 
						|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | 
						|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | 
						|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | 
						|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | 
						|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
						|
 | 
						|
#ifndef GOOGLE_PROTOBUF_STUBS_STATUS_H_
 | 
						|
#define GOOGLE_PROTOBUF_STUBS_STATUS_H_
 | 
						|
 | 
						|
#include <string>
 | 
						|
 | 
						|
#include <google/protobuf/stubs/stringpiece.h>
 | 
						|
 | 
						|
#include <google/protobuf/port_def.inc>
 | 
						|
 | 
						|
namespace google {
 | 
						|
namespace protobuf {
 | 
						|
namespace util {
 | 
						|
namespace status_internal {
 | 
						|
 | 
						|
// These values must match error codes defined in google/rpc/code.proto.
 | 
						|
enum class StatusCode : int {
 | 
						|
  kOk = 0,
 | 
						|
  kCancelled = 1,
 | 
						|
  kUnknown = 2,
 | 
						|
  kInvalidArgument = 3,
 | 
						|
  kDeadlineExceeded = 4,
 | 
						|
  kNotFound = 5,
 | 
						|
  kAlreadyExists = 6,
 | 
						|
  kPermissionDenied = 7,
 | 
						|
  kUnauthenticated = 16,
 | 
						|
  kResourceExhausted = 8,
 | 
						|
  kFailedPrecondition = 9,
 | 
						|
  kAborted = 10,
 | 
						|
  kOutOfRange = 11,
 | 
						|
  kUnimplemented = 12,
 | 
						|
  kInternal = 13,
 | 
						|
  kUnavailable = 14,
 | 
						|
  kDataLoss = 15,
 | 
						|
};
 | 
						|
 | 
						|
class PROTOBUF_EXPORT Status {
 | 
						|
 public:
 | 
						|
  // Creates a "successful" status.
 | 
						|
  Status();
 | 
						|
 | 
						|
  // Create a status in the canonical error space with the specified
 | 
						|
  // code, and error message.  If "code == 0", error_message is
 | 
						|
  // ignored and a Status object identical to Status::kOk is
 | 
						|
  // constructed.
 | 
						|
  Status(StatusCode error_code, StringPiece error_message);
 | 
						|
  Status(const Status&);
 | 
						|
  Status& operator=(const Status& x);
 | 
						|
  ~Status() {}
 | 
						|
 | 
						|
  // Accessor
 | 
						|
  bool ok() const { return error_code_ == StatusCode::kOk; }
 | 
						|
  StatusCode code() const { return error_code_; }
 | 
						|
  StringPiece message() const {
 | 
						|
    return error_message_;
 | 
						|
  }
 | 
						|
 | 
						|
  bool operator==(const Status& x) const;
 | 
						|
  bool operator!=(const Status& x) const {
 | 
						|
    return !operator==(x);
 | 
						|
  }
 | 
						|
 | 
						|
  // Return a combination of the error code name and message.
 | 
						|
  std::string ToString() const;
 | 
						|
 | 
						|
 private:
 | 
						|
  StatusCode error_code_;
 | 
						|
  std::string error_message_;
 | 
						|
};
 | 
						|
 | 
						|
// Returns an OK status, equivalent to a default constructed instance. Prefer
 | 
						|
// usage of `OkStatus()` when constructing such an OK status.
 | 
						|
PROTOBUF_EXPORT Status OkStatus();
 | 
						|
 | 
						|
// Prints a human-readable representation of 'x' to 'os'.
 | 
						|
PROTOBUF_EXPORT std::ostream& operator<<(std::ostream& os, const Status& x);
 | 
						|
 | 
						|
// These convenience functions return `true` if a given status matches the
 | 
						|
// `StatusCode` error code of its associated function.
 | 
						|
PROTOBUF_EXPORT bool IsAborted(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsAlreadyExists(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsCancelled(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsDataLoss(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsDeadlineExceeded(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsFailedPrecondition(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsInternal(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsInvalidArgument(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsNotFound(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsOutOfRange(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsPermissionDenied(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsResourceExhausted(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsUnauthenticated(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsUnavailable(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsUnimplemented(const Status& status);
 | 
						|
PROTOBUF_EXPORT bool IsUnknown(const Status& status);
 | 
						|
 | 
						|
// These convenience functions create an `Status` object with an error code as
 | 
						|
// indicated by the associated function name, using the error message passed in
 | 
						|
// `message`.
 | 
						|
//
 | 
						|
// These functions are intentionally named `*Error` rather than `*Status` to
 | 
						|
// match the names from Abseil:
 | 
						|
// https://github.com/abseil/abseil-cpp/blob/2e9532cc6c701a8323d0cffb468999ab804095ab/absl/status/status.h#L716
 | 
						|
PROTOBUF_EXPORT Status AbortedError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status AlreadyExistsError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status CancelledError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status DataLossError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status DeadlineExceededError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status FailedPreconditionError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status InternalError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status InvalidArgumentError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status NotFoundError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status OutOfRangeError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status PermissionDeniedError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status ResourceExhaustedError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status UnauthenticatedError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status UnavailableError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status UnimplementedError(StringPiece message);
 | 
						|
PROTOBUF_EXPORT Status UnknownError(StringPiece message);
 | 
						|
 | 
						|
}  // namespace status_internal
 | 
						|
 | 
						|
using ::google::protobuf::util::status_internal::Status;
 | 
						|
using ::google::protobuf::util::status_internal::StatusCode;
 | 
						|
 | 
						|
using ::google::protobuf::util::status_internal::IsAborted;
 | 
						|
using ::google::protobuf::util::status_internal::IsAlreadyExists;
 | 
						|
using ::google::protobuf::util::status_internal::IsCancelled;
 | 
						|
using ::google::protobuf::util::status_internal::IsDataLoss;
 | 
						|
using ::google::protobuf::util::status_internal::IsDeadlineExceeded;
 | 
						|
using ::google::protobuf::util::status_internal::IsFailedPrecondition;
 | 
						|
using ::google::protobuf::util::status_internal::IsInternal;
 | 
						|
using ::google::protobuf::util::status_internal::IsInvalidArgument;
 | 
						|
using ::google::protobuf::util::status_internal::IsNotFound;
 | 
						|
using ::google::protobuf::util::status_internal::IsOutOfRange;
 | 
						|
using ::google::protobuf::util::status_internal::IsPermissionDenied;
 | 
						|
using ::google::protobuf::util::status_internal::IsResourceExhausted;
 | 
						|
using ::google::protobuf::util::status_internal::IsUnauthenticated;
 | 
						|
using ::google::protobuf::util::status_internal::IsUnavailable;
 | 
						|
using ::google::protobuf::util::status_internal::IsUnimplemented;
 | 
						|
using ::google::protobuf::util::status_internal::IsUnknown;
 | 
						|
 | 
						|
using ::google::protobuf::util::status_internal::AbortedError;
 | 
						|
using ::google::protobuf::util::status_internal::AlreadyExistsError;
 | 
						|
using ::google::protobuf::util::status_internal::CancelledError;
 | 
						|
using ::google::protobuf::util::status_internal::DataLossError;
 | 
						|
using ::google::protobuf::util::status_internal::DeadlineExceededError;
 | 
						|
using ::google::protobuf::util::status_internal::FailedPreconditionError;
 | 
						|
using ::google::protobuf::util::status_internal::InternalError;
 | 
						|
using ::google::protobuf::util::status_internal::InvalidArgumentError;
 | 
						|
using ::google::protobuf::util::status_internal::NotFoundError;
 | 
						|
using ::google::protobuf::util::status_internal::OkStatus;
 | 
						|
using ::google::protobuf::util::status_internal::OutOfRangeError;
 | 
						|
using ::google::protobuf::util::status_internal::PermissionDeniedError;
 | 
						|
using ::google::protobuf::util::status_internal::ResourceExhaustedError;
 | 
						|
using ::google::protobuf::util::status_internal::UnauthenticatedError;
 | 
						|
using ::google::protobuf::util::status_internal::UnavailableError;
 | 
						|
using ::google::protobuf::util::status_internal::UnimplementedError;
 | 
						|
using ::google::protobuf::util::status_internal::UnknownError;
 | 
						|
 | 
						|
}  // namespace util
 | 
						|
}  // namespace protobuf
 | 
						|
}  // namespace google
 | 
						|
 | 
						|
#include <google/protobuf/port_undef.inc>
 | 
						|
 | 
						|
#endif  // GOOGLE_PROTOBUF_STUBS_STATUS_H_
 |