liuxiaolong
2021-07-20 d70afff273df67d0eb029ea16fa68a84faa9c200
proto/source/bhome_msg.proto
@@ -1,54 +1,36 @@
syntax = "proto3";
option optimize_for = LITE_RUNTIME;
option go_package="./bhome_msg";
import "google/protobuf/descriptor.proto";
// import "google/protobuf/descriptor.proto";
import "bhome_msg_api.proto";
import "error_msg.proto";
package bhome.msg;
package bhome_msg;
// message format : header(BHMsgHead) + body(variable types)
message BHAddress {
   bytes mq_id = 1; // mqid, uuid
   bytes ip = 2;   //
   int32 port = 3;
}
message ProcInfo
{
   bytes id = 1; // serial number, maybe managed
   bytes name = 2;
   bytes public_info = 3;
   bytes private_info = 4;
}
// message format : head_len(4) + head(BHMsgHead) + body_len(4) + body(variable types)
message BHMsgHead {
   bytes msg_id = 1;
   repeated BHAddress route = 2; // for reply and proxy.
   int64 timestamp = 3;
   int32 type = 4;
   ProcInfo proc = 5;
   bytes topic = 6; // for request route
   uint64 ssn_id = 5; // node mq id
   bytes proc_id = 6;
   bytes topic = 7; // for request route
   BHAddress dest = 8; // other host
}
message BHMsgBody {
   bytes data = 1;
}
message BHMsg { // deprecated
   bytes msg_id = 1;
   int64 timestamp = 2;
   int32 type = 3;
   repeated BHAddress route = 4; // for reply and proxy.
   bytes body = 5;
}
enum MsgType {
   kMsgTypeInvalid = 0;
   kMsgTypeRawData = 1;
   kMsgTypeCommonReply = 2;
   kMsgTypeProcInit = 8;
   kMsgTypeProcInitReply = 9;
   kMsgTypeRegister= 10;
   // kMsgTypeRegisterReply= 11;
   kMsgTypeHeartbeat = 12;
@@ -57,60 +39,66 @@
   kMsgTypeQueryTopicReply = 15;
   kMsgTypeRequestTopic = 16;
   kMsgTypeRequestTopicReply = 17;
   kMsgTypeRegisterRPC = 18;
   // reply
   kMsgTypePublish = 100;
   // kMsgTypePublishReply = 101;
   kMsgTypeSubscribe = 102;
   // kMsgTypeSubscribeReply = 103;
   kMsgTypeUnsubscribe = 104;
   // kMsgTypeUnsubscribeReply = 105;
   kMsgTypePublish = 20;
   // kMsgTypePublishReply = 21;
   kMsgTypeSubscribe = 22;
   // kMsgTypeSubscribeReply = 23;
   kMsgTypeUnsubscribe = 24;
   // kMsgTypeUnsubscribeReply = 25;
   kMsgTypeUnregister = 26;
   // kMsgTypeUnregisterReply = 27;
   kMsgTypeQueryProc = 28;
   kMsgTypeQueryProcReply = 29;
}
message MsgPub {
   bytes topic = 1;
   bytes data = 2;
message MsgSubscribe {
   MsgTopicList topics = 1;
   bool network = 2;
}
message MsgUnsubscribe {
   MsgTopicList topics = 1;
   bool network = 2;
}
message MsgRegisterRPC {
   MsgTopicList topics = 1;
}
message MsgSub {
   repeated bytes topics = 1;
}
message MsgProcInit{
   int32 extra_mq_num = 1;
} // proc_id is in header.
message MsgCommonReply {
message MsgProcInitReply {
   ErrorMsg errmsg = 1;
}
message MsgRequestTopic {
   bytes topic = 1;
   bytes data = 2;
}
message MsgRequestTopicReply {
   ErrorMsg errmsg = 1;
   bytes data = 2;
}
message MsgRegister
{
   ProcInfo proc = 1;
   repeated bytes topics = 2;
}
message MsgHeartbeat
{
   ProcInfo proc = 1;
}
message MsgQueryTopic {
   bytes topic = 1;
}
message MsgQueryTopicReply {
   ErrorMsg errmsg = 1;
   BHAddress address = 2;
   int32 proc_index = 2;
   repeated BHAddress extra_mqs = 3;
}
service TopicRPC {
   rpc Query (MsgQueryTopic) returns (MsgQueryTopicReply);
   rpc Request (MsgRequestTopic) returns (MsgQueryTopicReply);
}
message MsgRequest {
   // oneof body;
   oneof request {
      MsgRegister register = 1;
      MsgRequestTopic topic_request = 2;
      MsgQueryTopic topic_query = 3;
   }
}
message MsgReply {
   ErrorMsg err_msg = 1;
   // oneof reply
}
message BHMsgBody {
   oneof reqrep {
      MsgRequest request = 1;
      MsgReply reply = 2;
   }
}