From 4eede550e73d1afee2fb0a730f32732f44d10ed5 Mon Sep 17 00:00:00 2001 From: Christian Blichmann Date: Wed, 19 Feb 2020 04:43:06 -0800 Subject: [PATCH] Prepare for upcoming changes in Abseil - Move canonical errors into status. PiperOrigin-RevId: 295941935 Change-Id: I9408d21b6d34239b0ef3f3cd24975f39f1405505 --- sandboxed_api/embed_file.cc | 1 - .../examples/stringop/main_stringop.cc | 1 - sandboxed_api/examples/sum/main_sum.cc | 1 - sandboxed_api/proto_helper.h | 1 - sandboxed_api/rpcchannel.cc | 1 - sandboxed_api/sandbox.cc | 1 - sandboxed_api/sandbox2/buffer.cc | 1 - sandboxed_api/sandbox2/client.cc | 1 - sandboxed_api/sandbox2/forkserver.cc | 1 - sandboxed_api/sandbox2/mounts.cc | 1 - .../sandbox2/network_proxy_client.cc | 1 - sandboxed_api/sandbox2/policybuilder.cc | 1 - sandboxed_api/sandbox2/regs.cc | 1 - sandboxed_api/sandbox2/result.cc | 1 - sandboxed_api/sandbox2/sandbox2.cc | 1 - sandboxed_api/sandbox2/util.cc | 1 - sandboxed_api/sandbox2/util/maps_parser.cc | 1 - sandboxed_api/sandbox2/util/minielf.cc | 1 - sandboxed_api/sandbox2/util/temp_file.cc | 1 - sandboxed_api/transaction.cc | 1 - sandboxed_api/transaction.h | 1 - sandboxed_api/util/BUILD.bazel | 6 +- sandboxed_api/util/CMakeLists.txt | 2 - sandboxed_api/util/canonical_errors.cc | 117 ------------------ sandboxed_api/util/canonical_errors.h | 67 ---------- sandboxed_api/util/status.cc | 98 +++++++++++++++ sandboxed_api/util/status.h | 41 ++++++ sandboxed_api/var_abstract.cc | 1 - sandboxed_api/var_array.h | 1 - sandboxed_api/var_int.cc | 1 - 30 files changed, 140 insertions(+), 215 deletions(-) delete mode 100644 sandboxed_api/util/canonical_errors.cc delete mode 100644 sandboxed_api/util/canonical_errors.h diff --git a/sandboxed_api/embed_file.cc b/sandboxed_api/embed_file.cc index a4039a0..6d8868f 100644 --- a/sandboxed_api/embed_file.cc +++ b/sandboxed_api/embed_file.cc @@ -27,7 +27,6 @@ #include "sandboxed_api/sandbox2/util/fileops.h" #include "sandboxed_api/sandbox2/util/strerror.h" #include "sandboxed_api/util/raw_logging.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status.h" namespace file_util = ::sandbox2::file_util; diff --git a/sandboxed_api/examples/stringop/main_stringop.cc b/sandboxed_api/examples/stringop/main_stringop.cc index 84d63d7..2a431c8 100644 --- a/sandboxed_api/examples/stringop/main_stringop.cc +++ b/sandboxed_api/examples/stringop/main_stringop.cc @@ -28,7 +28,6 @@ #include "sandboxed_api/transaction.h" #include "sandboxed_api/util/status_matchers.h" #include "sandboxed_api/vars.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status.h" #include "sandboxed_api/util/status_macros.h" diff --git a/sandboxed_api/examples/sum/main_sum.cc b/sandboxed_api/examples/sum/main_sum.cc index 662acd9..631c3f0 100644 --- a/sandboxed_api/examples/sum/main_sum.cc +++ b/sandboxed_api/examples/sum/main_sum.cc @@ -25,7 +25,6 @@ #include "sandboxed_api/examples/sum/lib/sum_params.pb.h" #include "sandboxed_api/transaction.h" #include "sandboxed_api/vars.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status.h" namespace { diff --git a/sandboxed_api/proto_helper.h b/sandboxed_api/proto_helper.h index 453ceb1..c9080ee 100644 --- a/sandboxed_api/proto_helper.h +++ b/sandboxed_api/proto_helper.h @@ -22,7 +22,6 @@ #include #include "sandboxed_api/proto_arg.pb.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status.h" #include "sandboxed_api/util/statusor.h" diff --git a/sandboxed_api/rpcchannel.cc b/sandboxed_api/rpcchannel.cc index f148516..21fcd47 100644 --- a/sandboxed_api/rpcchannel.cc +++ b/sandboxed_api/rpcchannel.cc @@ -19,7 +19,6 @@ #include "absl/synchronization/mutex.h" #include "sandboxed_api/call.h" #include "sandboxed_api/sandbox2/comms.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status_macros.h" namespace sapi { diff --git a/sandboxed_api/sandbox.cc b/sandboxed_api/sandbox.cc index 6fa2615..2598052 100644 --- a/sandboxed_api/sandbox.cc +++ b/sandboxed_api/sandbox.cc @@ -39,7 +39,6 @@ #include "sandboxed_api/sandbox2/util/fileops.h" #include "sandboxed_api/sandbox2/util/path.h" #include "sandboxed_api/sandbox2/util/runfiles.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status_macros.h" namespace file = ::sandbox2::file; diff --git a/sandboxed_api/sandbox2/buffer.cc b/sandboxed_api/sandbox2/buffer.cc index 170ddce..6cedccf 100644 --- a/sandboxed_api/sandbox2/buffer.cc +++ b/sandboxed_api/sandbox2/buffer.cc @@ -24,7 +24,6 @@ #include "absl/strings/str_cat.h" #include "sandboxed_api/sandbox2/util.h" #include "sandboxed_api/sandbox2/util/strerror.h" -#include "sandboxed_api/util/canonical_errors.h" namespace sandbox2 { diff --git a/sandboxed_api/sandbox2/client.cc b/sandboxed_api/sandbox2/client.cc index 235ec19..f8490eb 100644 --- a/sandboxed_api/sandbox2/client.cc +++ b/sandboxed_api/sandbox2/client.cc @@ -44,7 +44,6 @@ #include "sandboxed_api/sandbox2/sanitizer.h" #include "sandboxed_api/sandbox2/util/strerror.h" #include "sandboxed_api/util/raw_logging.h" -#include "sandboxed_api/util/canonical_errors.h" namespace sandbox2 { diff --git a/sandboxed_api/sandbox2/forkserver.cc b/sandboxed_api/sandbox2/forkserver.cc index 205cf22..ab6ece4 100644 --- a/sandboxed_api/sandbox2/forkserver.cc +++ b/sandboxed_api/sandbox2/forkserver.cc @@ -57,7 +57,6 @@ #include "sandboxed_api/sandbox2/util/fileops.h" #include "sandboxed_api/sandbox2/util/strerror.h" #include "sandboxed_api/util/raw_logging.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status.h" #include "sandboxed_api/util/statusor.h" diff --git a/sandboxed_api/sandbox2/mounts.cc b/sandboxed_api/sandbox2/mounts.cc index ab18403..7579c09 100644 --- a/sandboxed_api/sandbox2/mounts.cc +++ b/sandboxed_api/sandbox2/mounts.cc @@ -38,7 +38,6 @@ #include "sandboxed_api/sandbox2/util/path.h" #include "sandboxed_api/sandbox2/util/strerror.h" #include "sandboxed_api/util/raw_logging.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status_macros.h" #include "sandboxed_api/util/statusor.h" diff --git a/sandboxed_api/sandbox2/network_proxy_client.cc b/sandboxed_api/sandbox2/network_proxy_client.cc index 5e214e9..cae5d65 100644 --- a/sandboxed_api/sandbox2/network_proxy_client.cc +++ b/sandboxed_api/sandbox2/network_proxy_client.cc @@ -27,7 +27,6 @@ #include "absl/memory/memory.h" #include "absl/strings/str_cat.h" #include "sandboxed_api/sandbox2/util/strerror.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status.h" #include "sandboxed_api/util/status_macros.h" diff --git a/sandboxed_api/sandbox2/policybuilder.cc b/sandboxed_api/sandbox2/policybuilder.cc index c731e97..bde3f6f 100644 --- a/sandboxed_api/sandbox2/policybuilder.cc +++ b/sandboxed_api/sandbox2/policybuilder.cc @@ -39,7 +39,6 @@ #include "sandboxed_api/sandbox2/namespace.h" #include "sandboxed_api/sandbox2/util/bpf_helper.h" #include "sandboxed_api/sandbox2/util/path.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status_macros.h" namespace sandbox2 { diff --git a/sandboxed_api/sandbox2/regs.cc b/sandboxed_api/sandbox2/regs.cc index 3735ed8..4292ebb 100644 --- a/sandboxed_api/sandbox2/regs.cc +++ b/sandboxed_api/sandbox2/regs.cc @@ -25,7 +25,6 @@ #include "absl/strings/str_cat.h" #include "sandboxed_api/sandbox2/util/strerror.h" -#include "sandboxed_api/util/canonical_errors.h" namespace sandbox2 { diff --git a/sandboxed_api/sandbox2/result.cc b/sandboxed_api/sandbox2/result.cc index 1fa194f..f359822 100644 --- a/sandboxed_api/sandbox2/result.cc +++ b/sandboxed_api/sandbox2/result.cc @@ -19,7 +19,6 @@ #include "absl/strings/str_cat.h" #include "sandboxed_api/sandbox2/syscall.h" #include "sandboxed_api/sandbox2/util.h" -#include "sandboxed_api/util/canonical_errors.h" namespace sandbox2 { diff --git a/sandboxed_api/sandbox2/sandbox2.cc b/sandboxed_api/sandbox2/sandbox2.cc index 8f066cd..0a730ba 100644 --- a/sandboxed_api/sandbox2/sandbox2.cc +++ b/sandboxed_api/sandbox2/sandbox2.cc @@ -24,7 +24,6 @@ #include "absl/time/time.h" #include "sandboxed_api/sandbox2/monitor.h" #include "sandboxed_api/sandbox2/result.h" -#include "sandboxed_api/util/canonical_errors.h" namespace sandbox2 { diff --git a/sandboxed_api/sandbox2/util.cc b/sandboxed_api/sandbox2/util.cc index e43cf0a..f490b96 100644 --- a/sandboxed_api/sandbox2/util.cc +++ b/sandboxed_api/sandbox2/util.cc @@ -43,7 +43,6 @@ #include "sandboxed_api/sandbox2/util/path.h" #include "sandboxed_api/sandbox2/util/strerror.h" #include "sandboxed_api/util/raw_logging.h" -#include "sandboxed_api/util/canonical_errors.h" namespace sandbox2 { namespace util { diff --git a/sandboxed_api/sandbox2/util/maps_parser.cc b/sandboxed_api/sandbox2/util/maps_parser.cc index d6314a9..a1b8bff 100644 --- a/sandboxed_api/sandbox2/util/maps_parser.cc +++ b/sandboxed_api/sandbox2/util/maps_parser.cc @@ -14,7 +14,6 @@ #include "sandboxed_api/sandbox2/util/maps_parser.h" #include "absl/strings/str_split.h" -#include "sandboxed_api/util/canonical_errors.h" namespace sandbox2 { diff --git a/sandboxed_api/sandbox2/util/minielf.cc b/sandboxed_api/sandbox2/util/minielf.cc index 3aa47b0..d392a7e 100644 --- a/sandboxed_api/sandbox2/util/minielf.cc +++ b/sandboxed_api/sandbox2/util/minielf.cc @@ -25,7 +25,6 @@ #include "sandboxed_api/sandbox2/util.h" #include "sandboxed_api/sandbox2/util/strerror.h" #include "sandboxed_api/util/raw_logging.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status.h" #include "sandboxed_api/util/status_macros.h" diff --git a/sandboxed_api/sandbox2/util/temp_file.cc b/sandboxed_api/sandbox2/util/temp_file.cc index 552e79c..04dbae9 100644 --- a/sandboxed_api/sandbox2/util/temp_file.cc +++ b/sandboxed_api/sandbox2/util/temp_file.cc @@ -25,7 +25,6 @@ #include "absl/strings/str_cat.h" #include "sandboxed_api/sandbox2/util/fileops.h" #include "sandboxed_api/sandbox2/util/strerror.h" -#include "sandboxed_api/util/canonical_errors.h" namespace sandbox2 { diff --git a/sandboxed_api/transaction.cc b/sandboxed_api/transaction.cc index b2d4bd1..f4f6d15 100644 --- a/sandboxed_api/transaction.cc +++ b/sandboxed_api/transaction.cc @@ -13,7 +13,6 @@ // limitations under the License. #include "sandboxed_api/transaction.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status_macros.h" namespace sapi { diff --git a/sandboxed_api/transaction.h b/sandboxed_api/transaction.h index 4edab9e..4cbb382 100644 --- a/sandboxed_api/transaction.h +++ b/sandboxed_api/transaction.h @@ -21,7 +21,6 @@ #include "absl/strings/str_cat.h" #include "absl/time/time.h" #include "sandboxed_api/sandbox.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status.h" #include "sandboxed_api/util/status_macros.h" diff --git a/sandboxed_api/util/BUILD.bazel b/sandboxed_api/util/BUILD.bazel index e7b165c..36a53c5 100644 --- a/sandboxed_api/util/BUILD.bazel +++ b/sandboxed_api/util/BUILD.bazel @@ -28,12 +28,8 @@ sapi_proto_library( # replaced once Abseil releases absl::Status. cc_library( name = "status", - srcs = [ - "canonical_errors.cc", - "status.cc", - ], + srcs = ["status.cc"], hdrs = [ - "canonical_errors.h", "status.h", "status_internal.h", "status_macros.h", diff --git a/sandboxed_api/util/CMakeLists.txt b/sandboxed_api/util/CMakeLists.txt index e7b485e..4206565 100644 --- a/sandboxed_api/util/CMakeLists.txt +++ b/sandboxed_api/util/CMakeLists.txt @@ -28,8 +28,6 @@ target_link_libraries(sapi_util_status_proto # sandboxed_api/util:status add_library(sapi_util_status STATIC - canonical_errors.cc - canonical_errors.h status.cc status.h status_internal.h diff --git a/sandboxed_api/util/canonical_errors.cc b/sandboxed_api/util/canonical_errors.cc deleted file mode 100644 index 651e62d..0000000 --- a/sandboxed_api/util/canonical_errors.cc +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2019 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "sandboxed_api/util/canonical_errors.h" - -namespace sapi { - -Status AbortedError(absl::string_view message) { - return Status{StatusCode::kAborted, message}; -} -Status AlreadyExistsError(absl::string_view message) { - return Status{StatusCode::kAlreadyExists, message}; -} -Status CancelledError(absl::string_view message) { - return Status{StatusCode::kCancelled, message}; -} -Status DataLossError(absl::string_view message) { - return Status{StatusCode::kDataLoss, message}; -} -Status DeadlineExceededError(absl::string_view message) { - return Status{StatusCode::kDeadlineExceeded, message}; -} -Status FailedPreconditionError(absl::string_view message) { - return Status{StatusCode::kFailedPrecondition, message}; -} -Status InternalError(absl::string_view message) { - return Status{StatusCode::kInternal, message}; -} -Status InvalidArgumentError(absl::string_view message) { - return Status{StatusCode::kInvalidArgument, message}; -} -Status NotFoundError(absl::string_view message) { - return Status{StatusCode::kNotFound, message}; -} -Status OutOfRangeError(absl::string_view message) { - return Status{StatusCode::kOutOfRange, message}; -} -Status PermissionDeniedError(absl::string_view message) { - return Status{StatusCode::kPermissionDenied, message}; -} -Status ResourceExhaustedError(absl::string_view message) { - return Status{StatusCode::kResourceExhausted, message}; -} -Status UnauthenticatedError(absl::string_view message) { - return Status{StatusCode::kUnauthenticated, message}; -} -Status UnavailableError(absl::string_view message) { - return Status{StatusCode::kUnavailable, message}; -} -Status UnimplementedError(absl::string_view message) { - return Status{StatusCode::kUnimplemented, message}; -} -Status UnknownError(absl::string_view message) { - return Status{StatusCode::kUnknown, message}; -} - -bool IsAborted(const Status& status) { - return status.code() == StatusCode::kAborted; -} -bool IsAlreadyExists(const Status& status) { - return status.code() == StatusCode::kAlreadyExists; -} -bool IsCancelled(const Status& status) { - return status.code() == StatusCode::kCancelled; -} -bool IsDataLoss(const Status& status) { - return status.code() == StatusCode::kDataLoss; -} -bool IsDeadlineExceeded(const Status& status) { - return status.code() == StatusCode::kDeadlineExceeded; -} -bool IsFailedPrecondition(const Status& status) { - return status.code() == StatusCode::kFailedPrecondition; -} -bool IsInternal(const Status& status) { - return status.code() == StatusCode::kInternal; -} -bool IsInvalidArgument(const Status& status) { - return status.code() == StatusCode::kInvalidArgument; -} -bool IsNotFound(const Status& status) { - return status.code() == StatusCode::kNotFound; -} -bool IsOutOfRange(const Status& status) { - return status.code() == StatusCode::kOutOfRange; -} -bool IsPermissionDenied(const Status& status) { - return status.code() == StatusCode::kPermissionDenied; -} -bool IsResourceExhausted(const Status& status) { - return status.code() == StatusCode::kResourceExhausted; -} -bool IsUnauthenticated(const Status& status) { - return status.code() == StatusCode::kUnauthenticated; -} -bool IsUnavailable(const Status& status) { - return status.code() == StatusCode::kUnavailable; -} -bool IsUnimplemented(const Status& status) { - return status.code() == StatusCode::kUnimplemented; -} -bool IsUnknown(const Status& status) { - return status.code() == StatusCode::kUnknown; -} - -} // namespace sapi diff --git a/sandboxed_api/util/canonical_errors.h b/sandboxed_api/util/canonical_errors.h deleted file mode 100644 index b86afa2..0000000 --- a/sandboxed_api/util/canonical_errors.h +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2019 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef SANDBOXED_API_UTIL_CANONICAL_ERRORS_H_ -#define SANDBOXED_API_UTIL_CANONICAL_ERRORS_H_ - -#include "absl/base/attributes.h" -#include "absl/strings/string_view.h" -#include "sandboxed_api/util/status.h" - -namespace sapi { - -// Each of the functions below creates a canonical error with the given -// message. The error code of the returned status object matches the name of -// the function. -Status AbortedError(absl::string_view message); -Status AlreadyExistsError(absl::string_view message); -Status CancelledError(absl::string_view message); -Status DataLossError(absl::string_view message); -Status DeadlineExceededError(absl::string_view message); -Status FailedPreconditionError(absl::string_view message); -Status InternalError(absl::string_view message); -Status InvalidArgumentError(absl::string_view message); -Status NotFoundError(absl::string_view message); -Status OutOfRangeError(absl::string_view message); -Status PermissionDeniedError(absl::string_view message); -Status ResourceExhaustedError(absl::string_view message); -Status UnauthenticatedError(absl::string_view message); -Status UnavailableError(absl::string_view message); -Status UnimplementedError(absl::string_view message); -Status UnknownError(absl::string_view message); - -// Each of the functions below returns true if the given status matches the -// canonical error code implied by the function's name. If necessary, the -// status will be converted to the canonical error space to perform the -// comparison. -ABSL_MUST_USE_RESULT bool IsAborted(const Status& status); -ABSL_MUST_USE_RESULT bool IsAlreadyExists(const Status& status); -ABSL_MUST_USE_RESULT bool IsCancelled(const Status& status); -ABSL_MUST_USE_RESULT bool IsDataLoss(const Status& status); -ABSL_MUST_USE_RESULT bool IsDeadlineExceeded(const Status& status); -ABSL_MUST_USE_RESULT bool IsFailedPrecondition(const Status& status); -ABSL_MUST_USE_RESULT bool IsInternal(const Status& status); -ABSL_MUST_USE_RESULT bool IsInvalidArgument(const Status& status); -ABSL_MUST_USE_RESULT bool IsNotFound(const Status& status); -ABSL_MUST_USE_RESULT bool IsOutOfRange(const Status& status); -ABSL_MUST_USE_RESULT bool IsPermissionDenied(const Status& status); -ABSL_MUST_USE_RESULT bool IsResourceExhausted(const Status& status); -ABSL_MUST_USE_RESULT bool IsUnauthenticated(const Status& status); -ABSL_MUST_USE_RESULT bool IsUnavailable(const Status& status); -ABSL_MUST_USE_RESULT bool IsUnimplemented(const Status& status); -ABSL_MUST_USE_RESULT bool IsUnknown(const Status& status); - -} // namespace sapi - -#endif // SANDBOXED_API_UTIL_CANONICAL_ERRORS_H_ diff --git a/sandboxed_api/util/status.cc b/sandboxed_api/util/status.cc index 3a1dd56..f8ccf85 100644 --- a/sandboxed_api/util/status.cc +++ b/sandboxed_api/util/status.cc @@ -89,4 +89,102 @@ std::ostream& operator<<(std::ostream& os, const Status& status) { return os << status.ToString(); } +Status AbortedError(absl::string_view message) { + return Status{StatusCode::kAborted, message}; +} +Status AlreadyExistsError(absl::string_view message) { + return Status{StatusCode::kAlreadyExists, message}; +} +Status CancelledError(absl::string_view message) { + return Status{StatusCode::kCancelled, message}; +} +Status DataLossError(absl::string_view message) { + return Status{StatusCode::kDataLoss, message}; +} +Status DeadlineExceededError(absl::string_view message) { + return Status{StatusCode::kDeadlineExceeded, message}; +} +Status FailedPreconditionError(absl::string_view message) { + return Status{StatusCode::kFailedPrecondition, message}; +} +Status InternalError(absl::string_view message) { + return Status{StatusCode::kInternal, message}; +} +Status InvalidArgumentError(absl::string_view message) { + return Status{StatusCode::kInvalidArgument, message}; +} +Status NotFoundError(absl::string_view message) { + return Status{StatusCode::kNotFound, message}; +} +Status OutOfRangeError(absl::string_view message) { + return Status{StatusCode::kOutOfRange, message}; +} +Status PermissionDeniedError(absl::string_view message) { + return Status{StatusCode::kPermissionDenied, message}; +} +Status ResourceExhaustedError(absl::string_view message) { + return Status{StatusCode::kResourceExhausted, message}; +} +Status UnauthenticatedError(absl::string_view message) { + return Status{StatusCode::kUnauthenticated, message}; +} +Status UnavailableError(absl::string_view message) { + return Status{StatusCode::kUnavailable, message}; +} +Status UnimplementedError(absl::string_view message) { + return Status{StatusCode::kUnimplemented, message}; +} +Status UnknownError(absl::string_view message) { + return Status{StatusCode::kUnknown, message}; +} + +bool IsAborted(const Status& status) { + return status.code() == StatusCode::kAborted; +} +bool IsAlreadyExists(const Status& status) { + return status.code() == StatusCode::kAlreadyExists; +} +bool IsCancelled(const Status& status) { + return status.code() == StatusCode::kCancelled; +} +bool IsDataLoss(const Status& status) { + return status.code() == StatusCode::kDataLoss; +} +bool IsDeadlineExceeded(const Status& status) { + return status.code() == StatusCode::kDeadlineExceeded; +} +bool IsFailedPrecondition(const Status& status) { + return status.code() == StatusCode::kFailedPrecondition; +} +bool IsInternal(const Status& status) { + return status.code() == StatusCode::kInternal; +} +bool IsInvalidArgument(const Status& status) { + return status.code() == StatusCode::kInvalidArgument; +} +bool IsNotFound(const Status& status) { + return status.code() == StatusCode::kNotFound; +} +bool IsOutOfRange(const Status& status) { + return status.code() == StatusCode::kOutOfRange; +} +bool IsPermissionDenied(const Status& status) { + return status.code() == StatusCode::kPermissionDenied; +} +bool IsResourceExhausted(const Status& status) { + return status.code() == StatusCode::kResourceExhausted; +} +bool IsUnauthenticated(const Status& status) { + return status.code() == StatusCode::kUnauthenticated; +} +bool IsUnavailable(const Status& status) { + return status.code() == StatusCode::kUnavailable; +} +bool IsUnimplemented(const Status& status) { + return status.code() == StatusCode::kUnimplemented; +} +bool IsUnknown(const Status& status) { + return status.code() == StatusCode::kUnknown; +} + } // namespace sapi diff --git a/sandboxed_api/util/status.h b/sandboxed_api/util/status.h index c5a2dcd..983f5c6 100644 --- a/sandboxed_api/util/status.h +++ b/sandboxed_api/util/status.h @@ -123,6 +123,47 @@ inline bool operator!=(const Status& lhs, const Status& rhs) { return !(lhs == rhs); } +// Each of the functions below creates a canonical error with the given +// message. The error code of the returned status object matches the name of +// the function. +Status AbortedError(absl::string_view message); +Status AlreadyExistsError(absl::string_view message); +Status CancelledError(absl::string_view message); +Status DataLossError(absl::string_view message); +Status DeadlineExceededError(absl::string_view message); +Status FailedPreconditionError(absl::string_view message); +Status InternalError(absl::string_view message); +Status InvalidArgumentError(absl::string_view message); +Status NotFoundError(absl::string_view message); +Status OutOfRangeError(absl::string_view message); +Status PermissionDeniedError(absl::string_view message); +Status ResourceExhaustedError(absl::string_view message); +Status UnauthenticatedError(absl::string_view message); +Status UnavailableError(absl::string_view message); +Status UnimplementedError(absl::string_view message); +Status UnknownError(absl::string_view message); + +// Each of the functions below returns true if the given status matches the +// canonical error code implied by the function's name. If necessary, the +// status will be converted to the canonical error space to perform the +// comparison. +ABSL_MUST_USE_RESULT bool IsAborted(const Status& status); +ABSL_MUST_USE_RESULT bool IsAlreadyExists(const Status& status); +ABSL_MUST_USE_RESULT bool IsCancelled(const Status& status); +ABSL_MUST_USE_RESULT bool IsDataLoss(const Status& status); +ABSL_MUST_USE_RESULT bool IsDeadlineExceeded(const Status& status); +ABSL_MUST_USE_RESULT bool IsFailedPrecondition(const Status& status); +ABSL_MUST_USE_RESULT bool IsInternal(const Status& status); +ABSL_MUST_USE_RESULT bool IsInvalidArgument(const Status& status); +ABSL_MUST_USE_RESULT bool IsNotFound(const Status& status); +ABSL_MUST_USE_RESULT bool IsOutOfRange(const Status& status); +ABSL_MUST_USE_RESULT bool IsPermissionDenied(const Status& status); +ABSL_MUST_USE_RESULT bool IsResourceExhausted(const Status& status); +ABSL_MUST_USE_RESULT bool IsUnauthenticated(const Status& status); +ABSL_MUST_USE_RESULT bool IsUnavailable(const Status& status); +ABSL_MUST_USE_RESULT bool IsUnimplemented(const Status& status); +ABSL_MUST_USE_RESULT bool IsUnknown(const Status& status); + std::ostream& operator<<(std::ostream& os, const Status& status); inline void SaveStatusToProto(const Status& status, StatusProto* out) { diff --git a/sandboxed_api/var_abstract.cc b/sandboxed_api/var_abstract.cc index ae17b29..17310b9 100644 --- a/sandboxed_api/var_abstract.cc +++ b/sandboxed_api/var_abstract.cc @@ -22,7 +22,6 @@ #include "sandboxed_api/sandbox2/comms.h" #include "absl/strings/str_cat.h" #include "sandboxed_api/rpcchannel.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status_macros.h" namespace sapi::v { diff --git a/sandboxed_api/var_array.h b/sandboxed_api/var_array.h index ab620a1..4717eba 100644 --- a/sandboxed_api/var_array.h +++ b/sandboxed_api/var_array.h @@ -24,7 +24,6 @@ #include "sandboxed_api/var_abstract.h" #include "sandboxed_api/var_pointable.h" #include "sandboxed_api/var_ptr.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status_macros.h" namespace sapi::v { diff --git a/sandboxed_api/var_int.cc b/sandboxed_api/var_int.cc index c0a9c96..4da621e 100644 --- a/sandboxed_api/var_int.cc +++ b/sandboxed_api/var_int.cc @@ -14,7 +14,6 @@ #include "sandboxed_api/var_int.h" #include "sandboxed_api/rpcchannel.h" -#include "sandboxed_api/util/canonical_errors.h" #include "sandboxed_api/util/status_macros.h" namespace sapi::v {