syntax = "proto3"; option optimize_for = LITE_RUNTIME; import "google/protobuf/descriptor.proto"; import "error_msg.proto"; 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 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 } 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; kMsgTypeCommonReply = 2; kMsgTypeRegister= 10; // kMsgTypeRegisterReply= 11; kMsgTypeHeartbeat = 12; // kMsgTypeHeartbeatReply = 13; kMsgTypeQueryTopic = 14; kMsgTypeQueryTopicReply = 15; kMsgTypeRequestTopic = 16; kMsgTypeRequestTopicReply = 17; kMsgTypePublish = 100; // kMsgTypePublishReply = 101; kMsgTypeSubscribe = 102; // kMsgTypeSubscribeReply = 103; kMsgTypeUnsubscribe = 104; // kMsgTypeUnsubscribeReply = 105; } message MsgPub { bytes topic = 1; bytes data = 2; } message MsgSub { repeated bytes topics = 1; } message MsgCommonReply { 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; } service TopicRPC { rpc Query (MsgQueryTopic) returns (MsgQueryTopicReply); rpc Request (MsgRequestTopic) returns (MsgQueryTopicReply); }