protobuf工具业内用的比较广泛,到处都可以找到,这里记录一下自己在日常开发中用到的消息大致定义范式
your_tool_cli_msg.proto
syntax = "proto3";
package your_tool_proto;
message Request {
// Type of elements within the data tree.
enum ReqType {
UNDEFINED = 0;
DO_1 = 1;
DO_2 = 2;
DO_3 = 3;
}
ReqType type = 1; // The type of data being requested.
string file_content = 2;
string module = 3;
string filename = 4;
}
message Response {
enum Status
{
SUCCESS = 0;
FAILED = 1;
}
Status status = 1;
string xmlData = 2;
string errorinfo = 3;
}
message CliCommand
{
enum Type {
UNDEFINED = 0;
CLI_ADD = 1;
CLI_DELETE = 2;
CLI_MODIFY = 3;
}
Type type = 1;
}
message climsg {
CliCommand command = 1;
oneof inner_msg {
Request request = 2;
Response response = 3;
}
}
protobuf 的一大好处就是参数默认为optional,可扩展性极强,在工具开发中,适用于client/server之间交互的消息的格式定义,轻易不动序号的话,是比较容易达到成向兼容的。
后面会将该proto文件用起来