75 lines
2.4 KiB
C++
75 lines
2.4 KiB
C++
////////////////////////////////////////////////////////////////////////////////
|
|
// Copyright 2017 Google LLC.
|
|
//
|
|
// This software is licensed under the terms defined in the Widevine Master
|
|
// License Agreement. For a copy of this agreement, please contact
|
|
// widevine-licensing@google.com.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "common/status.h"
|
|
|
|
#include <string>
|
|
|
|
#include "absl/base/macros.h"
|
|
#include "absl/strings/str_cat.h"
|
|
#include "util/error_space.h"
|
|
|
|
namespace widevine {
|
|
|
|
namespace {
|
|
|
|
const char* kGenericErrorStatusMessage[] = {"OK",
|
|
"unknown_error",
|
|
"unknown_error",
|
|
"invalid_argument",
|
|
"unknown_error",
|
|
"not_found",
|
|
"already_exists",
|
|
"permission_denied",
|
|
"unknown_error",
|
|
"unknown_error",
|
|
"unknown_error",
|
|
"unknown_error",
|
|
"unimplemented",
|
|
"internal",
|
|
"unavailable"};
|
|
|
|
} // namespace
|
|
|
|
class GenericErrorSpace : public util::ErrorSpaceImpl<GenericErrorSpace> {
|
|
public:
|
|
static std::string space_name();
|
|
static std::string code_to_string(int code);
|
|
};
|
|
|
|
std::string GenericErrorSpace::space_name() { return "generic"; }
|
|
|
|
std::string GenericErrorSpace::code_to_string(int code) {
|
|
static_assert(
|
|
ABSL_ARRAYSIZE(kGenericErrorStatusMessage) == error::NUM_ERRORS,
|
|
"mismatching generic error status message and generic error status.");
|
|
|
|
if (code >= 0 && code < error::NUM_ERRORS)
|
|
return kGenericErrorStatusMessage[code];
|
|
return std::to_string(code);
|
|
}
|
|
|
|
|
|
|
|
const util::ErrorSpace* Status::canonical_space() {
|
|
return GenericErrorSpace::Get();
|
|
}
|
|
|
|
std::string Status::ToString() const {
|
|
if (status_code_ == error::OK) return "OK";
|
|
return absl::StrCat("Errors::", error_space_->String(status_code_), ": ",
|
|
error_message_);
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os, const Status& x) {
|
|
os << x.ToString();
|
|
return os;
|
|
}
|
|
|
|
} // namespace widevine
|