|
|
@ -18,51 +18,55 @@ |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* gRPC error codes. |
|
|
|
* gRPC error codes. |
|
|
|
* Note that a few of these are never produced by the gRPC libraries, but are of general utility for |
|
|
|
* Note that a few of these are never produced by the gRPC libraries, but are of |
|
|
|
* server applications to produce. |
|
|
|
* general utility for server applications to produce. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
typedef NS_ENUM(NSUInteger, GRPCErrorCode) { |
|
|
|
typedef NS_ENUM(NSUInteger, GRPCErrorCode) { |
|
|
|
/** The operation was cancelled (typically by the caller). */ |
|
|
|
/** The operation was cancelled (typically by the caller). */ |
|
|
|
GRPCErrorCodeCancelled = 1, |
|
|
|
GRPCErrorCodeCancelled = 1, |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Unknown error. Errors raised by APIs that do not return enough error information may be |
|
|
|
* Unknown error. Errors raised by APIs that do not return enough error |
|
|
|
* converted to this error. |
|
|
|
* information may be converted to this error. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
GRPCErrorCodeUnknown = 2, |
|
|
|
GRPCErrorCodeUnknown = 2, |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* The client specified an invalid argument. Note that this differs from FAILED_PRECONDITION. |
|
|
|
* The client specified an invalid argument. Note that this differs from |
|
|
|
* INVALID_ARGUMENT indicates arguments that are problematic regardless of the state of the |
|
|
|
* FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments that are |
|
|
|
* server (e.g., a malformed file name). |
|
|
|
* problematic regardless of the state of the server (e.g., a malformed file |
|
|
|
|
|
|
|
* name). |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
GRPCErrorCodeInvalidArgument = 3, |
|
|
|
GRPCErrorCodeInvalidArgument = 3, |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Deadline expired before operation could complete. For operations that change the state of the |
|
|
|
* Deadline expired before operation could complete. For operations that |
|
|
|
* server, this error may be returned even if the operation has completed successfully. For |
|
|
|
* change the state of the server, this error may be returned even if the |
|
|
|
* example, a successful response from the server could have been delayed long enough for the |
|
|
|
* operation has completed successfully. For example, a successful response |
|
|
|
* deadline to expire. |
|
|
|
* from the server could have been delayed long enough for the deadline to |
|
|
|
|
|
|
|
* expire. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
GRPCErrorCodeDeadlineExceeded = 4, |
|
|
|
GRPCErrorCodeDeadlineExceeded = 4, |
|
|
|
|
|
|
|
|
|
|
|
/** Some requested entity (e.g., file or directory) was not found. */ |
|
|
|
/** Some requested entity (e.g., file or directory) was not found. */ |
|
|
|
GRPCErrorCodeNotFound = 5, |
|
|
|
GRPCErrorCodeNotFound = 5, |
|
|
|
|
|
|
|
|
|
|
|
/** Some entity that we attempted to create (e.g., file or directory) already exists. */ |
|
|
|
/** Some entity that we attempted to create (e.g., file or directory) already
|
|
|
|
|
|
|
|
exists. */ |
|
|
|
GRPCErrorCodeAlreadyExists = 6, |
|
|
|
GRPCErrorCodeAlreadyExists = 6, |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* The caller does not have permission to execute the specified operation. PERMISSION_DENIED isn't |
|
|
|
* The caller does not have permission to execute the specified operation. |
|
|
|
* used for rejections caused by exhausting some resource (RESOURCE_EXHAUSTED is used instead for |
|
|
|
* PERMISSION_DENIED isn't used for rejections caused by exhausting some |
|
|
|
* those errors). PERMISSION_DENIED doesn't indicate a failure to identify the caller |
|
|
|
* resource (RESOURCE_EXHAUSTED is used instead for those errors). |
|
|
|
|
|
|
|
* PERMISSION_DENIED doesn't indicate a failure to identify the caller |
|
|
|
* (UNAUTHENTICATED is used instead for those errors). |
|
|
|
* (UNAUTHENTICATED is used instead for those errors). |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
GRPCErrorCodePermissionDenied = 7, |
|
|
|
GRPCErrorCodePermissionDenied = 7, |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* The request does not have valid authentication credentials for the operation (e.g. the caller's |
|
|
|
* The request does not have valid authentication credentials for the |
|
|
|
* identity can't be verified). |
|
|
|
* operation (e.g. the caller's identity can't be verified). |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
GRPCErrorCodeUnauthenticated = 16, |
|
|
|
GRPCErrorCodeUnauthenticated = 16, |
|
|
|
|
|
|
|
|
|
|
@ -70,43 +74,45 @@ typedef NS_ENUM(NSUInteger, GRPCErrorCode) { |
|
|
|
GRPCErrorCodeResourceExhausted = 8, |
|
|
|
GRPCErrorCodeResourceExhausted = 8, |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* The RPC was rejected because the server is not in a state required for the procedure's |
|
|
|
* The RPC was rejected because the server is not in a state required for the |
|
|
|
* execution. For example, a directory to be deleted may be non-empty, etc. |
|
|
|
* procedure's execution. For example, a directory to be deleted may be |
|
|
|
* The client should not retry until the server state has been explicitly fixed (e.g. by |
|
|
|
* non-empty, etc. The client should not retry until the server state has been |
|
|
|
* performing another RPC). The details depend on the service being called, and should be found in |
|
|
|
* explicitly fixed (e.g. by performing another RPC). The details depend on |
|
|
|
* the NSError's userInfo. |
|
|
|
* the service being called, and should be found in the NSError's userInfo. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
GRPCErrorCodeFailedPrecondition = 9, |
|
|
|
GRPCErrorCodeFailedPrecondition = 9, |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* The RPC was aborted, typically due to a concurrency issue like sequencer check failures, |
|
|
|
* The RPC was aborted, typically due to a concurrency issue like sequencer |
|
|
|
* transaction aborts, etc. The client should retry at a higher-level (e.g., restarting a read- |
|
|
|
* check failures, transaction aborts, etc. The client should retry at a |
|
|
|
* modify-write sequence). |
|
|
|
* higher-level (e.g., restarting a read- modify-write sequence). |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
GRPCErrorCodeAborted = 10, |
|
|
|
GRPCErrorCodeAborted = 10, |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* The RPC was attempted past the valid range. E.g., enumerating past the end of a list. |
|
|
|
* The RPC was attempted past the valid range. E.g., enumerating past the end |
|
|
|
* Unlike INVALID_ARGUMENT, this error indicates a problem that may be fixed if the system state |
|
|
|
* of a list. Unlike INVALID_ARGUMENT, this error indicates a problem that may |
|
|
|
* changes. For example, an RPC to get elements of a list will generate INVALID_ARGUMENT if asked |
|
|
|
* be fixed if the system state changes. For example, an RPC to get elements |
|
|
|
* to return the element at a negative index, but it will generate OUT_OF_RANGE if asked to return |
|
|
|
* of a list will generate INVALID_ARGUMENT if asked to return the element at |
|
|
|
* the element at an index past the current size of the list. |
|
|
|
* a negative index, but it will generate OUT_OF_RANGE if asked to return the |
|
|
|
|
|
|
|
* element at an index past the current size of the list. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
GRPCErrorCodeOutOfRange = 11, |
|
|
|
GRPCErrorCodeOutOfRange = 11, |
|
|
|
|
|
|
|
|
|
|
|
/** The procedure is not implemented or not supported/enabled in this server. */ |
|
|
|
/** The procedure is not implemented or not supported/enabled in this server.
|
|
|
|
|
|
|
|
*/ |
|
|
|
GRPCErrorCodeUnimplemented = 12, |
|
|
|
GRPCErrorCodeUnimplemented = 12, |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Internal error. Means some invariant expected by the server application or the gRPC library has |
|
|
|
* Internal error. Means some invariant expected by the server application or |
|
|
|
* been broken. |
|
|
|
* the gRPC library has been broken. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
GRPCErrorCodeInternal = 13, |
|
|
|
GRPCErrorCodeInternal = 13, |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* The server is currently unavailable. This is most likely a transient condition and may be |
|
|
|
* The server is currently unavailable. This is most likely a transient |
|
|
|
* corrected by retrying with a backoff. Note that it is not always safe to retry |
|
|
|
* condition and may be corrected by retrying with a backoff. Note that it is |
|
|
|
* non-idempotent operations. |
|
|
|
* not always safe to retry non-idempotent operations. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
GRPCErrorCodeUnavailable = 14, |
|
|
|
GRPCErrorCodeUnavailable = 14, |
|
|
|
|
|
|
|
|
|
|
@ -155,14 +161,14 @@ typedef NS_ENUM(NSUInteger, GRPCTransportType) { |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
/** Domain of NSError objects produced by gRPC. */ |
|
|
|
/** Domain of NSError objects produced by gRPC. */ |
|
|
|
extern NSString *const kGRPCErrorDomain; |
|
|
|
extern NSString* const kGRPCErrorDomain; |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Keys used in |NSError|'s |userInfo| dictionary to store the response headers and trailers sent by |
|
|
|
* Keys used in |NSError|'s |userInfo| dictionary to store the response headers |
|
|
|
* the server. |
|
|
|
* and trailers sent by the server. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
extern NSString *const kGRPCHeadersKey; |
|
|
|
extern NSString* const kGRPCHeadersKey; |
|
|
|
extern NSString *const kGRPCTrailersKey; |
|
|
|
extern NSString* const kGRPCTrailersKey; |
|
|
|
|
|
|
|
|
|
|
|
/** The id of a transport implementation. */ |
|
|
|
/** The id of a transport implementation. */ |
|
|
|
typedef char *GRPCTransportId; |
|
|
|
typedef char* GRPCTransportId; |
|
|
|