10#define GRPC_STATUS_MAP(XX) \
12 XX(1, CANCELLED, "Cancelled") \
13 XX(2, UNKNOWN, "Unknown") \
14 XX(3, INVALID_ARGUMENT, "Invalid Argument") \
15 XX(4, DEADLINE_EXCEEDED, "Deadline Exceeded") \
16 XX(5, NOT_FOUND, "Not Found") \
17 XX(6, ALREADY_EXISTS, "Already Exists") \
18 XX(7, PERMISSION_DENIED, "Permission Denied") \
19 XX(8, RESOURCE_EXHAUSTED, "Resource Exhausted") \
20 XX(9, FAILED_PRECONDITION, "Failed Precondition") \
21 XX(10, ABORTED, "Aborted") \
22 XX(11, OUT_OF_RANGE, "Out Of Range") \
23 XX(12, UNIMPLEMENTED, "Unimplemented") \
24 XX(13, INTERNAL, "Internal") \
25 XX(14, UNAVAILABLE, "Unavailable") \
26 XX(15, DATA_LOSS, "Data Loss") \
27 XX(16, UNAUTHENTICATED, "Unauthenticated")
31#define XX(num, name, string) GRPC_STATUS_##name = num,
36static inline const char* grpc_status_str(
enum grpc_status s)
40#define XX(num, name, string) \
41 case GRPC_STATUS_##name: \
62 case HTTP_STATUS_UNAUTHORIZED:
63 return GRPC_STATUS_UNAUTHENTICATED;
64 case HTTP_STATUS_FORBIDDEN:
65 return GRPC_STATUS_PERMISSION_DENIED;
66 case HTTP_STATUS_NOT_FOUND:
67 return GRPC_STATUS_NOT_FOUND;
68 case HTTP_STATUS_CONFLICT:
69 return GRPC_STATUS_ALREADY_EXISTS;
70 case HTTP_STATUS_PRECONDITION_FAILED:
71 return GRPC_STATUS_FAILED_PRECONDITION;
72 case HTTP_STATUS_RANGE_NOT_SATISFIABLE:
73 return GRPC_STATUS_OUT_OF_RANGE;
74 case HTTP_STATUS_TOO_MANY_REQUESTS:
75 return GRPC_STATUS_RESOURCE_EXHAUSTED;
76 case HTTP_STATUS_NOT_IMPLEMENTED:
77 return GRPC_STATUS_UNIMPLEMENTED;
78 case HTTP_STATUS_SERVICE_UNAVAILABLE:
79 return GRPC_STATUS_UNAVAILABLE;
80 case HTTP_STATUS_GATEWAY_TIMEOUT:
81 return GRPC_STATUS_DEADLINE_EXCEEDED;
85 if (s >= 200 && s < 300)
86 return GRPC_STATUS_OK;
87 else if (s >= 400 && s < 500)
88 return GRPC_STATUS_INVALID_ARGUMENT;
90 return GRPC_STATUS_INTERNAL;
92 return GRPC_STATUS_UNKNOWN;
100 {ccf::http::headers::CONTENT_TYPE, http::headervalues::contenttype::GRPC}};
102 static constexpr auto TRAILER_STATUS =
"grpc-status";
103 static constexpr auto TRAILER_MESSAGE =
"grpc-message";
107 return {TRAILER_STATUS, std::to_string(code)};
112 return {TRAILER_MESSAGE, msg};
#define XX(num, name, string)
Definition grpc_status.h:31
#define GRPC_STATUS_MAP(XX)
Definition grpc_status.h:10
grpc_status
Definition grpc_status.h:30
llhttp_status http_status
Definition http_status.h:7
Definition grpc_status.h:98
std::map< std::string, std::string, std::less<> > HeaderMap
Definition http_header_map.h:10
HeaderMap::value_type HeaderKeyValue
Definition http_header_map.h:11