| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| library fuchsia.firebase.messaging; |
| |
| /// From FIRMessagingError at |
| /// https://github.com/firebase/firebase-ios-sdk/blob/HEAD/Firebase/Messaging/Public/FIRMessaging.h |
| type MessagingErrorCode = strict enum { |
| /// Couldn't validate request from this client. |
| AUTHENTICATION = 1; |
| |
| /// InstanceID service cannot be accessed. |
| NO_ACCESS = 2; |
| |
| /// Request to InstanceID backend timed out. |
| TIMEOUT = 3; |
| |
| /// No network available to reach the servers. |
| NETWORK = 4; |
| |
| /// Another similar operation in progress, bailing this one. |
| OPERATION_IN_PROGRESS = 5; |
| |
| /// Some parameters of the request were invalid. |
| INVALID_REQUEST = 7; |
| |
| /// Topic name is invalid for subscription/unsubscription. |
| INVALID_TOPIC_NAME = 8; |
| }; |
| |
| /// From https://github.com/grpc/grpc/blob/HEAD/doc/statuscodes.md. |
| type CoreErrorCode = strict enum { |
| /// Not an error; returned on success. |
| OK = 0; |
| |
| /// The operation was cancelled, typically by the caller. |
| CANCELLED = 1; |
| |
| /// Unknown error. For example, this error may be returned when a Status |
| /// value received from another address space belongs to an error space that |
| /// is not known in this address space. Also errors raised by APIs that do |
| /// not return enough error information may be converted to this error. |
| UNKNOWN = 2; |
| |
| /// The client specified an invalid argument. Note that this differs from |
| /// `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments that are |
| /// problematic regardless of the state of the system (e.g., a malformed |
| /// file name). |
| INVALID_ARGUMENT = 3; |
| |
| /// The deadline expired before the operation could complete. For operations |
| /// that change the state of the system, this error may be returned even if |
| /// the operation has completed successfully. For example, a successful |
| /// response from a server could have been delayed long enough for the |
| /// deadline to expire. |
| DEADLINE_EXCEEDED = 4; |
| |
| /// Some requested entity (e.g., file or directory) was not found. |
| NOT_FOUND = 5; |
| |
| /// The entity that a client attempted to create (e.g., file or directory) |
| /// already exists. |
| ALREADY_EXISTS = 6; |
| |
| /// The caller does not have permission to execute the specified operation. |
| /// This error code does not imply the request is valid or the requested |
| /// entity exists or satisfies other pre-conditions. |
| PERMISSION_DENIED = 7; |
| |
| /// The request does not have valid authentication credentials for the |
| /// operation. |
| UNAUTHENTICATED = 16; |
| |
| /// Some resource has been exhausted, perhaps a per-user quota, or perhaps |
| /// the entire file system is out of space. |
| RESOURCE_EXHAUSTED = 8; |
| |
| /// The operation was rejected because the system is not in a state required |
| /// for the operation's execution. For example, the directory to be deleted |
| /// is non-empty, an rmdir operation is applied to a non-directory, etc. |
| FAILED_PRECONDITION = 9; |
| |
| /// The operation was aborted, typically due to a concurrency issue such as |
| /// a sequencer check failure or transaction abort. |
| ABORTED = 10; |
| |
| /// The operation was attempted past the valid range. E.g., seeking or |
| /// reading past end-of-file. Unlike `INVALID_ARGUMENT`, this error indicates |
| /// a problem that may be fixed if the system state changes. For example, a |
| /// 32-bit file system will generate `INVALID_ARGUMENT` if asked to read at an |
| /// offset that is not in the range [0,2^32-1], but it will generate |
| /// `OUT_OF_RANGE` if asked to read from an offset past the current file size. |
| OUT_OF_RANGE = 11; |
| |
| /// The operation is not implemented or is not supported/enabled in this |
| /// service. |
| UNIMPLEMENTED = 12; |
| |
| /// Internal errors. This means that some invariants expected by the |
| /// underlying system have been broken. This error code is reserved for |
| /// serious errors. |
| INTERNAL = 13; |
| |
| /// The service is currently unavailable. This is most likely a transient |
| /// condition, which can be corrected by retrying with a backoff. Note that |
| /// it is not always safe to retry non-idempotent operations. |
| UNAVAILABLE = 14; |
| |
| /// Unrecoverable data loss or corruption. |
| DATA_LOSS = 15; |
| }; |
| |
| type ServiceError = struct { |
| domain string; |
| code string; |
| message string:optional; |
| }; |
| |
| type ErrorValue = flexible union { |
| 1: messaging MessagingErrorCode; |
| 2: core CoreErrorCode; |
| 3: http uint32; |
| 4: service ServiceError; |
| }; |
| |
| type Error = struct { |
| error ErrorValue; |
| |
| /// This error may be caused by an error in the local infrastructure, |
| /// reachability, firebase service, the backend service, or any other layer |
| /// of the operation. In this case, a higher layer may wrap a lower level |
| /// error with its own error to provide more information. |
| inner box<Error>; |
| }; |