谷歌protobuf编译器不生成服务标签的类?

时间:2017-01-25 07:35:59

标签: c++ controller protocol-buffers rpc channel

我正在尝试使用protobuf使用RpcChannel和RpcController生成服务。我提到了google protobuf的语言指南,并且:

我有这样的示例原型文件:

syntax =“proto2”;

message SearchRequest
{
    required string Request = 1;
}

message SearchResponse
{
    required string Response = 2;
}

service SearchService {
    rpc Search (SearchRequest) returns (SearchResponse);
}

然后我用:

编译了它
protoc --cpp_out=./ examples.proto

我有.h和.cc文件。但是当我搜索生成的代码时,我只找到“请求”和“响应”的类,但不是“SearchService”的类:

examples.pb.h:class SearchRequest;
examples.pb.h:class SearchResponse;
examples.pb.h:class SearchRequest : public ::google::protobuf::Message {
examples.pb.h:  // @@protoc_insertion_point(class_scope:SearchRequest)
examples.pb.h:class SearchResponse : public ::google::protobuf::Message {
examples.pb.h:  // @@protoc_insertion_point(class_scope:SearchResponse)

语言指南网页提供了一个示例(https://developers.google.com/protocol-buffers/docs/proto#services),它需要使用“SearchService”类:但在生成的代码中,没有搜索服务。该指南未提供RpcChannel / RpcController用法的完整示例。

那么如何修复示例以使其工作?我搜索了谷歌,但没有找到任何好的cpp示例,提供了RpcChannel / RpcController如何工作的完整示例。任何提示或链接?

谢谢!

1 个答案:

答案 0 :(得分:3)

protobuf本身不提供RPC实现;你应该使用插件界面创建自己的,或使用grpc。

例如,grpc使用grpc_cpp_plugin插件。

$ protoc -I ../../protos --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` ../../protos/route_guide.proto

https://github.com/grpc/grpc/blob/master/examples/cpp/cpptutorial.md