status_util.cc
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2017 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
20 
22 
23 #include <string.h>
24 
26 
28  const char* str;
30 };
32  {"OK", GRPC_STATUS_OK},
33  {"CANCELLED", GRPC_STATUS_CANCELLED},
34  {"UNKNOWN", GRPC_STATUS_UNKNOWN},
35  {"INVALID_ARGUMENT", GRPC_STATUS_INVALID_ARGUMENT},
36  {"DEADLINE_EXCEEDED", GRPC_STATUS_DEADLINE_EXCEEDED},
37  {"NOT_FOUND", GRPC_STATUS_NOT_FOUND},
38  {"ALREADY_EXISTS", GRPC_STATUS_ALREADY_EXISTS},
39  {"PERMISSION_DENIED", GRPC_STATUS_PERMISSION_DENIED},
40  {"UNAUTHENTICATED", GRPC_STATUS_UNAUTHENTICATED},
41  {"RESOURCE_EXHAUSTED", GRPC_STATUS_RESOURCE_EXHAUSTED},
42  {"FAILED_PRECONDITION", GRPC_STATUS_FAILED_PRECONDITION},
43  {"ABORTED", GRPC_STATUS_ABORTED},
44  {"OUT_OF_RANGE", GRPC_STATUS_OUT_OF_RANGE},
45  {"UNIMPLEMENTED", GRPC_STATUS_UNIMPLEMENTED},
46  {"INTERNAL", GRPC_STATUS_INTERNAL},
47  {"UNAVAILABLE", GRPC_STATUS_UNAVAILABLE},
48  {"DATA_LOSS", GRPC_STATUS_DATA_LOSS},
49 };
50 
51 bool grpc_status_code_from_string(const char* status_str,
53  for (size_t i = 0; i < GPR_ARRAY_SIZE(g_status_string_entries); ++i) {
54  if (strcmp(status_str, g_status_string_entries[i].str) == 0) {
56  return true;
57  }
58  }
59  return false;
60 }
61 
63  switch (status) {
64  case GRPC_STATUS_OK:
65  return "OK";
67  return "CANCELLED";
69  return "UNKNOWN";
71  return "INVALID_ARGUMENT";
73  return "DEADLINE_EXCEEDED";
75  return "NOT_FOUND";
77  return "ALREADY_EXISTS";
79  return "PERMISSION_DENIED";
81  return "RESOURCE_EXHAUSTED";
83  return "FAILED_PRECONDITION";
85  return "ABORTED";
87  return "OUT_OF_RANGE";
89  return "UNIMPLEMENTED";
91  return "INTERNAL";
93  return "UNAVAILABLE";
95  return "DATA_LOSS";
97  return "UNAUTHENTICATED";
98  default:
99  return "UNKNOWN";
100  }
101 }
102 
104  // The range of status code enum is [0, 16], 0 is OK, 16 is UNAUTHENTICATED.
105  if (status_int < GRPC_STATUS_OK || status_int > GRPC_STATUS_UNAUTHENTICATED) {
107  return false;
108  }
109  *status = static_cast<grpc_status_code>(status_int);
110  return true;
111 }
xds_interop_client.str
str
Definition: xds_interop_client.py:487
GRPC_STATUS_UNAVAILABLE
@ GRPC_STATUS_UNAVAILABLE
Definition: include/grpc/impl/codegen/status.h:143
GRPC_STATUS_UNAUTHENTICATED
@ GRPC_STATUS_UNAUTHENTICATED
Definition: include/grpc/impl/codegen/status.h:72
status_util.h
string.h
GRPC_STATUS_PERMISSION_DENIED
@ GRPC_STATUS_PERMISSION_DENIED
Definition: include/grpc/impl/codegen/status.h:68
useful.h
grpc_status_code
grpc_status_code
Definition: include/grpc/impl/codegen/status.h:28
GRPC_STATUS_NOT_FOUND
@ GRPC_STATUS_NOT_FOUND
Definition: include/grpc/impl/codegen/status.h:56
status_string_entry::status
grpc_status_code status
Definition: status_util.cc:29
status
absl::Status status
Definition: rls.cc:251
grpc_status_code_from_int
bool grpc_status_code_from_int(int status_int, grpc_status_code *status)
Definition: status_util.cc:103
GRPC_STATUS_CANCELLED
@ GRPC_STATUS_CANCELLED
Definition: include/grpc/impl/codegen/status.h:33
GRPC_STATUS_DEADLINE_EXCEEDED
@ GRPC_STATUS_DEADLINE_EXCEEDED
Definition: include/grpc/impl/codegen/status.h:53
GRPC_STATUS_INVALID_ARGUMENT
@ GRPC_STATUS_INVALID_ARGUMENT
Definition: include/grpc/impl/codegen/status.h:46
GRPC_STATUS_RESOURCE_EXHAUSTED
@ GRPC_STATUS_RESOURCE_EXHAUSTED
Definition: include/grpc/impl/codegen/status.h:76
g_status_string_entries
static const status_string_entry g_status_string_entries[]
Definition: status_util.cc:31
GRPC_STATUS_OK
@ GRPC_STATUS_OK
Definition: include/grpc/impl/codegen/status.h:30
status_string_entry::str
const char * str
Definition: status_util.cc:28
GRPC_STATUS_ALREADY_EXISTS
@ GRPC_STATUS_ALREADY_EXISTS
Definition: include/grpc/impl/codegen/status.h:60
GRPC_STATUS_DATA_LOSS
@ GRPC_STATUS_DATA_LOSS
Definition: include/grpc/impl/codegen/status.h:146
GRPC_STATUS_OUT_OF_RANGE
@ GRPC_STATUS_OUT_OF_RANGE
Definition: include/grpc/impl/codegen/status.h:121
grpc_status_code_from_string
bool grpc_status_code_from_string(const char *status_str, grpc_status_code *status)
Definition: status_util.cc:51
GPR_ARRAY_SIZE
#define GPR_ARRAY_SIZE(array)
Definition: useful.h:129
GRPC_STATUS_ABORTED
@ GRPC_STATUS_ABORTED
Definition: include/grpc/impl/codegen/status.h:104
status_string_entry
Definition: status_util.cc:27
GRPC_STATUS_UNIMPLEMENTED
@ GRPC_STATUS_UNIMPLEMENTED
Definition: include/grpc/impl/codegen/status.h:124
GRPC_STATUS_FAILED_PRECONDITION
@ GRPC_STATUS_FAILED_PRECONDITION
Definition: include/grpc/impl/codegen/status.h:97
GRPC_STATUS_INTERNAL
@ GRPC_STATUS_INTERNAL
Definition: include/grpc/impl/codegen/status.h:129
grpc_status_code_to_string
const char * grpc_status_code_to_string(grpc_status_code status)
Returns the string form of status, or "UNKNOWN" if invalid.
Definition: status_util.cc:62
i
uint64_t i
Definition: abseil-cpp/absl/container/btree_benchmark.cc:230
GRPC_STATUS_UNKNOWN
@ GRPC_STATUS_UNKNOWN
Definition: include/grpc/impl/codegen/status.h:40
port_platform.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:22