google protobuf 编译器不会为服务标签生成 class?
google protobuf compiler doesn't generate class for service tag?
我正在尝试使用 protobuf 生成使用 RpcChannel 和 RpcController 的服务。我参考了 google protobuf 的语言指南和:
我有这样的示例原型文件:
语法="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 文件。但是当我搜索生成的代码时,我只找到 classes for "Request" and "Response",但没有找到 class for "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),需要使用class of "SearchService": 但在生成的代码中,没有搜索服务。该指南未提供 RpcChannel/RpcController 用法的完整示例。
那么我怎样才能修复这个例子让它工作呢?我搜索了 google 但没有找到任何好的 cpp 示例来提供 RpcChannel/RpcController 如何工作的完整示例。任何提示或链接?
谢谢!
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
我正在尝试使用 protobuf 生成使用 RpcChannel 和 RpcController 的服务。我参考了 google protobuf 的语言指南和:
我有这样的示例原型文件:
语法="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 文件。但是当我搜索生成的代码时,我只找到 classes for "Request" and "Response",但没有找到 class for "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),需要使用class of "SearchService": 但在生成的代码中,没有搜索服务。该指南未提供 RpcChannel/RpcController 用法的完整示例。
那么我怎样才能修复这个例子让它工作呢?我搜索了 google 但没有找到任何好的 cpp 示例来提供 RpcChannel/RpcController 如何工作的完整示例。任何提示或链接?
谢谢!
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