From 5d81c822d8636a17ddbde021f84d02bfdac9f619 Mon Sep 17 00:00:00 2001 From: Christian Blichmann Date: Thu, 20 Feb 2020 04:26:01 -0800 Subject: [PATCH] Automated rollback of commit e56f562fe226da5ec87cd8cb0610fceca1ad638c. PiperOrigin-RevId: 296178631 Change-Id: I0f871aeecd70e9d2f99c7d52d94c6043a1668325 --- 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/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 - 28 files changed, 140 insertions(+), 31 deletions(-) diff --git a/sandboxed_api/embed_file.cc b/sandboxed_api/embed_file.cc index d8ecc06..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 "util/task/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 f3a40c0..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 "util/task/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 e19e707..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 "util/task/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 fcb077c..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 "util/task/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 a073dfc..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 "util/task/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 aedce3c..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 "util/task/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 f2682b9..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 "util/task/canonical_errors.h" namespace sandbox2 { diff --git a/sandboxed_api/sandbox2/client.cc b/sandboxed_api/sandbox2/client.cc index be870f4..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 "util/task/canonical_errors.h" namespace sandbox2 { diff --git a/sandboxed_api/sandbox2/forkserver.cc b/sandboxed_api/sandbox2/forkserver.cc index b8c791d..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 "util/task/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 81723f1..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 "util/task/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 2e26864..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 "util/task/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 99d2d8a..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 "util/task/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 fc65662..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 "util/task/canonical_errors.h" namespace sandbox2 { diff --git a/sandboxed_api/sandbox2/result.cc b/sandboxed_api/sandbox2/result.cc index 4f0ac0c..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 "util/task/canonical_errors.h" namespace sandbox2 { diff --git a/sandboxed_api/sandbox2/sandbox2.cc b/sandboxed_api/sandbox2/sandbox2.cc index 88c3bcb..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 "util/task/canonical_errors.h" namespace sandbox2 { diff --git a/sandboxed_api/sandbox2/util.cc b/sandboxed_api/sandbox2/util.cc index 01bfb48..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 "util/task/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 097fa82..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 "util/task/canonical_errors.h" namespace sandbox2 { diff --git a/sandboxed_api/sandbox2/util/minielf.cc b/sandboxed_api/sandbox2/util/minielf.cc index c913cf8..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 "util/task/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 d51e514..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 "util/task/canonical_errors.h" namespace sandbox2 { diff --git a/sandboxed_api/transaction.cc b/sandboxed_api/transaction.cc index 61f7931..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 "util/task/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 2b4856e..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 "util/task/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/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 651f272..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 "util/task/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 45152ae..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 "util/task/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 f17b0d0..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 "util/task/canonical_errors.h" #include "sandboxed_api/util/status_macros.h" namespace sapi::v {