我使用的是C++的gRPC gRPC需要需要在 .proto 中定义所需的service 和message ,随后grpc编译器会帮你生成.pb.h 文件。 这里主要说一下.proto 和.pb.h 中Message如何操作问题。 这里是一个.proto 样例代码:
service DgnnProtoService{
rpc serverSendNode(NodeMessage) returns(NodeMessage){}
}
我们声明了一个gRPC函数,名字是serverSendNode ,它的request的Message是NodeMessage ,reply的Message是NodeMessage 。 NodeMessage格式如下
message NodeMessage{
repeated int32 nodes = 1;
int32 layid=2;
}
现在来看看.pb.h 文件对应生成的代码是什么,注意这里的.pb.h 是C++的头文件: 生成了一个class NodeMessage;
class NodeMessage;
这个类中部分方法
void clear_layid();
void set_layid(::PROTOBUF_NAMESPACE_ID::int32 value);
void _internal_set_layid(::PROTOBUF_NAMESPACE_ID::int32 value);
inline void NodeMessage::set_layid(::PROTOBUF_NAMESPACE_ID::int32 value)
我选取的是layid这个观察样本,并不是说nodes相关的函数就没有哈。 一个规律就是: gRPC对于Message的成员操作是:操作方法+下划线+成员名 比如set;clear等。 Message还有一个repeated关键字,加了这个关键字的成员操作则没有set ,而是add 。 回头有空了再写Message的嵌套相关的操作。
这些都是我看别人代码,对照着proto,pb.h,和使用代码反向推出来的。
|