在C++中为gRPC有效负载使用原始字节

jvlzgdj9  于 2023-02-26  发布在  其他
关注(0)|答案(1)|浏览(266)

我正在为gRPC服务做一个客户机/服务器实现,其中服务器和客户机都将用C编写。服务器和客户机将使用双向流进行通信,并且需要发送原始字节作为gRPC(HTTP)有效负载。目标是避免Protobuf的开销,并使用自定义序列化代码。我如何在没有任何序列化的情况下使用gRPC

b4qexyjb

b4qexyjb1#

序列化由SerializationTraits的专门化控制。存在built-in one for the grpc::ByteBuffer type
因此,如果可以使用grpc::ByteBuffer作为缓冲区类型,那么使用grpc::ServerAsyncResponseWriter<grpc::ByteBuffer>grpc::ServerWriteReactor<grpc::ByteBuffer>之类的类型应该已经可以工作了。
如果没有,您可以提供自己的专门化。
注:ProtoBuf代码生成器编写了大量的粘合代码来为您想要公开的各种方法注册"处理程序"代码。2如果您想要使用原始字节缓冲区,你需要自己编写这些代码。我已经有一段时间没有看到protoc生成什么了。我会从在helloworld上运行codegen开始。proto文件,并查看它为Greeter::AsyncServiceGreeter::CallbackService基类发出的内容。
我也没有在C++中使用回调/React器模型,只有"异步"/完成队列模型。我 * 假设 * 回调/React器模型也使用SerializationTraits

相关问题