Index: mojo/public/c/include/mojo/result.h |
diff --git a/mojo/public/c/include/mojo/result.h b/mojo/public/c/include/mojo/result.h |
deleted file mode 100644 |
index def3792f726906161d3fc5b79d83799418177394..0000000000000000000000000000000000000000 |
--- a/mojo/public/c/include/mojo/result.h |
+++ /dev/null |
@@ -1,217 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-// This file contains the definition of |MojoResult| and related macros. |
-// |
-// Note: This header should be compilable as C. |
-// |
-// TODO(vtl): Should separate out "system" error space stuff to a separate |
-// header, mojo/system/result.h. |
- |
-#ifndef MOJO_PUBLIC_C_INCLUDE_MOJO_RESULT_H_ |
-#define MOJO_PUBLIC_C_INCLUDE_MOJO_RESULT_H_ |
- |
-#include <stdint.h> |
- |
-// |MojoResult|: A type to hold error codes, which are composed of a generic |
-// portion (the base error code) and a more specific portion (the error subcode |
-// and the error space). |
-// |
-// The format of a |MojoResult| is, bitwise (least significant bits on the |
-// right): |
-// |
-// sSSSSSSSSSSSSSSSeeeeeeeeeeeeEEEE |
-// |
-// where: |
-// - EEEE is the base error code (4 bits, 0-15); |
-// - eeeeeeeeeeee is the error subcode (12 bits, 0-4095); and |
-// - sSSSSSSSSSSSSSSS (16 bits, 0-65535) is the error space. |
-// |
-// The meaning of the base error codes is always the same. |MOJO_ERROR_CODE_OK|, |
-// 0, always means "OK"; for this case, both the error subcode and error space |
-// must also be 0. See the definitions of the |MOJO_ERROR_CODE_...| below for |
-// information on the other base error codes. |
-// |
-// The meaning of the error subcode depends on both the error space and also the |
-// base error code, though |MOJO_ERROR_SUBCODE_GENERIC|, 0, always means |
-// "generic"/"unspecified". |
-// |
-// The error space gives meaning to error subcodes: |
-// - Error spaces with the high ('s') bit set (i.e., greater than or equal to |
-// 32768) are reserved for private use, i.e., should not be used in public |
-// interfaces. |
-// - Error spaces without the high bit set are assigned "centrally", with |
-// error subcodes within them assigned by their "owners". (TODO(vtl): Figure |
-// out what all of this means.) |
-// - |MOJO_ERROR_SPACE_SYSTEM|, 0, is the system/generic error space. Error |
-// subcodes for this error space are assigned below. |
- |
-typedef uint32_t MojoResult; |
- |
-// |MOJO_RESULT_MAKE()|: Helper macro to make a |MojoResult| from the base error |
-// code, the error space, and the error subcode. |
-#define MOJO_RESULT_MAKE(base_error_code, error_space, error_subcode) \ |
- ((base_error_code) | ((error_space) << 16u) | ((error_subcode) << 4u)) |
- |
-// |MOJO_RESULT_GET_{CODE,SPACE,SUBCODE}()|: Helper macros to get the base error |
-// code, the error space, and the error subcode from a |MojoResult|. |
-#define MOJO_RESULT_GET_CODE(result) ((result) & ((MojoResult)0xfu)) |
-#define MOJO_RESULT_GET_SPACE(result) \ |
- (((result) & ((MojoResult)0xffff0000u)) >> 16u) |
-#define MOJO_RESULT_GET_SUBCODE(result) \ |
- (((result) & ((MojoResult)0xfff0u)) >> 4u) |
- |
-// Base error codes ------------------------------------------------------------ |
- |
-// The base error code indicates the general type of error (as described below). |
-// For non-success codes, additional information may be conveyed via the error |
-// space and error subcodes (for |MOJO_ERROR_CODE_OK|, the error space and error |
-// subcode must be zero): |
-// |MOJO_ERROR_CODE_OK| - Not an error; returned on success. |
-// |MOJO_ERROR_CODE_CANCELLED| - Operation was cancelled, typically by the |
-// caller. |
-// |MOJO_ERROR_CODE_UNKNOWN| - Unknown error (e.g., if not enough information |
-// is available for a more specific error). |
-// |MOJO_ERROR_CODE_INVALID_ARGUMENT| - Caller specified an invalid argument. |
-// This differs from |MOJO_ERROR_CODE_FAILED_PRECONDITION| in that the |
-// former indicates arguments that are invalid regardless of the state of |
-// the system. |
-// |MOJO_ERROR_CODE_DEADLINE_EXCEEDED| - Deadline expired before the operation |
-// could complete. |
-// |MOJO_ERROR_CODE_NOT_FOUND| - Some requested entity was not found (i.e., |
-// does not exist). |
-// |MOJO_ERROR_CODE_ALREADY_EXISTS| - Some entity or condition that we |
-// attempted to create already exists. |
-// |MOJO_ERROR_CODE_PERMISSION_DENIED| - The caller does not have permission |
-// to for the operation (use |MOJO_ERROR_CODE_RESOURCE_EXHAUSTED| for |
-// rejections caused by exhausting some resource instead). |
-// |MOJO_ERROR_CODE_RESOURCE_EXHAUSTED| - Some resource required for the call |
-// (possibly some quota) has been exhausted. |
-// |MOJO_ERROR_CODE_FAILED_PRECONDITION| - The system is not in a state |
-// required for the operation (use this if the caller must do something to |
-// rectify the state before retrying). |
-// |MOJO_ERROR_CODE_ABORTED| - The operation was aborted by the system, |
-// possibly due to a concurrency issue (use this if the caller may retry |
-// at a higher level). |
-// |MOJO_ERROR_CODE_OUT_OF_RANGE| - The operation was attempted past the valid |
-// range. Unlike |MOJO_ERROR_CODE_INVALID_ARGUMENT|, this indicates that |
-// the operation may be/become valid depending on the system state. (This |
-// error is similar to |MOJO_ERROR_CODE_FAILED_PRECONDITION|, but is more |
-// specific.) |
-// |MOJO_ERROR_CODE_UNIMPLEMENTED| - The operation is not implemented, |
-// supported, or enabled. |
-// |MOJO_ERROR_CODE_INTERNAL| - Internal error: this should never happen and |
-// indicates that some invariant expected by the system has been broken. |
-// |MOJO_ERROR_CODE_UNAVAILABLE| - The operation is (temporarily) currently |
-// unavailable. The caller may simply retry the operation (possibly with a |
-// backoff). |
-// |MOJO_ERROR_CODE_DATA_LOSS| - Unrecoverable data loss or corruption. |
-// |
-// The codes correspond to Google3's canonical error codes. |
- |
-#define MOJO_ERROR_CODE_OK ((MojoResult)0x0u) |
-#define MOJO_ERROR_CODE_CANCELLED ((MojoResult)0x1u) |
-#define MOJO_ERROR_CODE_UNKNOWN ((MojoResult)0x2u) |
-#define MOJO_ERROR_CODE_INVALID_ARGUMENT ((MojoResult)0x3u) |
-#define MOJO_ERROR_CODE_DEADLINE_EXCEEDED ((MojoResult)0x4u) |
-#define MOJO_ERROR_CODE_NOT_FOUND ((MojoResult)0x5u) |
-#define MOJO_ERROR_CODE_ALREADY_EXISTS ((MojoResult)0x6u) |
-#define MOJO_ERROR_CODE_PERMISSION_DENIED ((MojoResult)0x7u) |
-#define MOJO_ERROR_CODE_RESOURCE_EXHAUSTED ((MojoResult)0x8u) |
-#define MOJO_ERROR_CODE_FAILED_PRECONDITION ((MojoResult)0x9u) |
-#define MOJO_ERROR_CODE_ABORTED ((MojoResult)0xau) |
-#define MOJO_ERROR_CODE_OUT_OF_RANGE ((MojoResult)0xbu) |
-#define MOJO_ERROR_CODE_UNIMPLEMENTED ((MojoResult)0xcu) |
-#define MOJO_ERROR_CODE_INTERNAL ((MojoResult)0xdu) |
-#define MOJO_ERROR_CODE_UNAVAILABLE ((MojoResult)0xeu) |
-#define MOJO_ERROR_CODE_DATA_LOSS ((MojoResult)0xfu) |
- |
-// System/generic error space -------------------------------------------------- |
- |
-#define MOJO_ERROR_SPACE_SYSTEM ((MojoResult)0x0000u) |
- |
-// Common/generic subcode, valid for all error codes: |
-// |MOJO_ERROR_SUBCODE_GENERIC| - No additional details about the error are |
-// specified. |
-#define MOJO_ERROR_SUBCODE_GENERIC ((MojoResult)0x000u) |
- |
-// Subcodes valid for |MOJO_ERROR_CODE_FAILED_PRECONDITION|: |
-// |MOJO_ERROR_CODE_FAILED_PRECONDITION_SUBCODE_BUSY| - One of the resources |
-// involved is currently being used (possibly on another thread) in a way |
-// that prevents the current operation from proceeding, e.g., if the other |
-// operation may result in the resource being invalidated. TODO(vtl): We |
-// should probably get rid of this, and report "invalid argument" instead |
-// (with a different subcode scheme). This is here now for ease of |
-// conversion with the existing |MOJO_RESULT_BUSY|. |
-#define MOJO_ERROR_CODE_FAILED_PRECONDITION_SUBCODE_BUSY ((MojoResult)0x001u) |
- |
-// Subcodes valid for MOJO_ERROR_CODE_UNAVAILABLE: |
-// |MOJO_ERROR_CODE_UNAVAILABLE_SUBCODE_SHOULD_WAIT| - The request cannot |
-// currently be completed (e.g., if the data requested is not yet |
-// available). The caller should wait for it to be feasible using one of |
-// the wait primitives. |
-#define MOJO_ERROR_CODE_UNAVAILABLE_SUBCODE_SHOULD_WAIT ((MojoResult)0x001u) |
- |
-// Complete results: |
- |
-// Generic results: |
-#define MOJO_RESULT_OK \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_OK, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_CANCELLED \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_CANCELLED, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_UNKNOWN \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_UNKNOWN, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_INVALID_ARGUMENT \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_INVALID_ARGUMENT, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_DEADLINE_EXCEEDED \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_DEADLINE_EXCEEDED, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_NOT_FOUND \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_NOT_FOUND, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_ALREADY_EXISTS \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_ALREADY_EXISTS, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_PERMISSION_DENIED \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_PERMISSION_DENIED, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_RESOURCE_EXHAUSTED \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_RESOURCE_EXHAUSTED, \ |
- MOJO_ERROR_SPACE_SYSTEM, MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_FAILED_PRECONDITION \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_FAILED_PRECONDITION, \ |
- MOJO_ERROR_SPACE_SYSTEM, MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_ABORTED \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_ABORTED, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_OUT_OF_RANGE \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_OUT_OF_RANGE, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_UNIMPLEMENTED \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_UNIMPLEMENTED, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_INTERNAL \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_INTERNAL, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_UNAVAILABLE \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_UNAVAILABLE, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_SUBCODE_GENERIC) |
-#define MOJO_RESULT_DATA_LOSS \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_DATA_LOSS, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_SUBCODE_GENERIC) |
- |
-// Specific results (for backwards compatibility): |
-#define MOJO_RESULT_BUSY \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_FAILED_PRECONDITION, \ |
- MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_CODE_FAILED_PRECONDITION_SUBCODE_BUSY) |
-#define MOJO_RESULT_SHOULD_WAIT \ |
- MOJO_RESULT_MAKE(MOJO_ERROR_CODE_UNAVAILABLE, MOJO_ERROR_SPACE_SYSTEM, \ |
- MOJO_ERROR_CODE_UNAVAILABLE_SUBCODE_SHOULD_WAIT) |
- |
-#endif // MOJO_PUBLIC_C_INCLUDE_MOJO_RESULT_H_ |