aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/core/include/firebase/firestore/firestore_errors.h
blob: 92c0c92e3af405e86b913abd7b03409b0f0ece10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/*
 * Copyright 2018 Google
 *
 * 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 FIRESTORE_CORE_INCLUDE_FIREBASE_FIRESTORE_FIRESTORE_ERRORS_H_
#define FIRESTORE_CORE_INCLUDE_FIREBASE_FIRESTORE_FIRESTORE_ERRORS_H_

namespace firebase {
namespace firestore {

/**
 * Error codes used by Cloud Firestore.
 *
 * The codes are in sync with the Firestore iOS client SDK header file
 * FIRFirestoreErrors.h.
 */
enum FirestoreErrorCode {
  /**
   * The operation completed successfully. NSError objects will never have a
   * code with this value.
   */
  Ok = 0,

  /** The operation was cancelled (typically by the caller). */
  Cancelled = 1,

  /** Unknown error or an error from a different error domain. */
  Unknown = 2,

  /**
   * Client specified an invalid argument. Note that this differs from
   * FailedPrecondition. InvalidArgument indicates arguments that are
   * problematic regardless of the state of the system (e.g., an invalid field
   * name).
   */
  InvalidArgument = 3,

  /**
   * Deadline expired before 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.
   */
  DeadlineExceeded = 4,

  /** Some requested document was not found. */
  NotFound = 5,

  /** Some document that we attempted to create already exists. */
  AlreadyExists = 6,

  /** The caller does not have permission to execute the specified operation. */
  PermissionDenied = 7,

  /**
   * Some resource has been exhausted, perhaps a per-user quota, or perhaps the
   * entire file system is out of space.
   */
  ResourceExhausted = 8,

  /**
   * Operation was rejected because the system is not in a state required for
   * the operation's execution.
   */
  FailedPrecondition = 9,

  /**
   * The operation was aborted, typically due to a concurrency issue like
   * transaction aborts, etc.
   */
  Aborted = 10,

  /** Operation was attempted past the valid range. */
  OutOfRange = 11,

  /** Operation is not implemented or not supported/enabled. */
  Unimplemented = 12,

  /**
   * Internal errors. Means some invariants expected by underlying system has
   * been broken. If you see one of these errors, something is very broken.
   */
  Internal = 13,

  /**
   * The service is currently unavailable. This is a most likely a transient
   * condition and may be corrected by retrying with a backoff.
   */
  Unavailable = 14,

  /** Unrecoverable data loss or corruption. */
  DataLoss = 15,

  /** The request does not have valid authentication credentials for the
     operation. */
  Unauthenticated = 16
};

// TODO(zxu123): decide whether we actually want an Error class or just use
// enum.
using Error = FirestoreErrorCode;

}  // namespace firestore
}  // namespace firebase

#endif  // FIRESTORE_CORE_INCLUDE_FIREBASE_FIRESTORE_FIRESTORE_ERRORS_H_