1#ifndef NEFORCE_NETWORK_HTTP_GRPC_HPP__
2#define NEFORCE_NETWORK_HTTP_GRPC_HPP__
12NEFORCE_BEGIN_NAMESPACE__
53NEFORCE_INLINE17
constexpr string_view GRPC_CONTENT_TYPE =
"application/grpc";
54NEFORCE_INLINE17
constexpr string_view GRPC_CONTENT_TYPE_PROTO =
"application/grpc+proto";
64 DEADLINE_EXCEEDED = 4,
67 PERMISSION_DENIED = 7,
68 RESOURCE_EXHAUSTED = 8,
69 FAILED_PRECONDITION = 9,
89 bool compressed{
false};
92 grpc_message() =
default;
104class NEFORCE_API grpc_framer {
156class NEFORCE_API grpc_handler {
161 grpc_handler() =
default;
162 virtual ~grpc_handler() =
default;
195NEFORCE_END_NAMESPACE__
byte_size max_receive_size
最大接收消息大小(默认4MB)
static byte_vector encode(const grpc_message &msg)
编码消息为gRPC帧格式的字节块
int decode(const byte_t *data, size_t len, vector< grpc_message > &out)
从字节块解码gRPC帧
static byte_vector encode_messages(const vector< grpc_message > &messages)
编码多个消息(连续写入同一buffer)
static void send_error(http_response &response, grpc_status status, const string &message)
发送gRPC错误响应
void process_unary(http_request &request, http_response &response, unary_handler handler)
处理一元(unary) gRPC调用
static http_status grpc_to_http_status(grpc_status status) noexcept
将gRPC状态映射到HTTP状态码
vector< byte_t > byte_vector
字节向量类型别名
unsigned char byte_t
字节类型,定义为无符号字符
unsigned char uint8_t
8位无符号整数类型
http_server_response http_response
HTTP响应类型别名
http_server_request http_request
HTTP请求类型别名
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素
basic_string_view< char > string_view
字符字符串视图
constexpr decltype(auto) data(Container &cont) noexcept(noexcept(cont.data()))
获取容器的底层数据指针