From 7f1a74b5762290cb873da577f1c77299fef49cbc Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 1 Apr 2022 20:40:58 +0800 Subject: [PATCH 01/23] panic fix --- internal/api/auth/auth.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/internal/api/auth/auth.go b/internal/api/auth/auth.go index 85d427fb8..fed744d4f 100644 --- a/internal/api/auth/auth.go +++ b/internal/api/auth/auth.go @@ -35,10 +35,16 @@ func UserRegister(c *gin.Context) { etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAuthName) client := rpc.NewAuthClient(etcdConn) reply, err := client.UserRegister(context.Background(), req) - if err != nil || reply.CommonResp.ErrCode != 0 { - log.NewError(req.OperationID, "UserRegister failed ", err, reply.CommonResp.ErrCode) + if err != nil { + log.NewError(req.OperationID, "call rpc err ", err) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "internal service err"}) + return + } + if reply.CommonResp.ErrCode != 0 { + log.NewError(req.OperationID, "UserRegister failed ", err) c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": reply.CommonResp.ErrMsg}) return + } pbDataToken := &rpc.UserTokenReq{Platform: params.Platform, FromUserID: params.UserID, OperationID: params.OperationID} From f4921d1317541d174b59cb142229f91a813c8b04 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 5 Apr 2022 10:27:34 +0800 Subject: [PATCH 02/23] tag and set private tips --- config/config.yaml | 5 +- internal/msg_gateway/gate/logic.go | 40 +- internal/push/getui/push.go | 12 + internal/push/jpush/push.go | 3 + internal/push/push_interface.go | 6 + pkg/common/config/config.go | 4 + pkg/proto/rtc/rtc.pb.go | 2557 +++++++++++++++++++++++++--- pkg/proto/rtc/rtc.proto | 156 +- 8 files changed, 2519 insertions(+), 264 deletions(-) create mode 100644 internal/push/getui/push.go create mode 100644 internal/push/push_interface.go diff --git a/config/config.yaml b/config/config.yaml index 2fd18ff0e..452d529a6 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -588,5 +588,6 @@ demo: smtpAddr: "smtp.qq.com" smtpPort: 25 #需开放此端口 出口方向 - - +rtc: + port: 11300 + address: 127.0.0.1 \ No newline at end of file diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index b891de437..be3053e6a 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -6,13 +6,17 @@ import ( "Open_IM/pkg/common/log" "Open_IM/pkg/grpc-etcdv3/getcdv3" pbChat "Open_IM/pkg/proto/chat" + pbRtc "Open_IM/pkg/proto/rtc" sdk_ws "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" "bytes" "context" "encoding/gob" "github.com/golang/protobuf/proto" "github.com/gorilla/websocket" + "google.golang.org/grpc" "runtime" + "strconv" "strings" ) @@ -200,8 +204,28 @@ func (ws *WServer) sendSignalMsgReq(conn *UserConn, m *Req) { nReply := new(pbChat.SendMsgResp) isPass, errCode, errMsg, pData := ws.argsValidate(m, constant.WSSendSignalMsg) if isPass { - isPass2, errCode2, errMsg2, signalResp, msgData := ws.signalMessageAssemble(pData.(*sdk_ws.SignalReq), m.OperationID) - if isPass2 { + signalResp := pbRtc.SignalResp{} + //isPass2, errCode2, errMsg2, signalResp, msgData := ws.signalMessageAssemble(pData.(*sdk_ws.SignalReq), m.OperationID) + connGrpc, err := grpc.Dial(config.Config.Rtc.Address+":"+strconv.Itoa(config.Config.Rtc.Port), grpc.WithInsecure()) + if err != nil { + log.NewError(m.OperationID, utils.GetSelfFuncName(), "grpc.Dial failed", err.Error()) + ws.sendSignalMsgResp(conn, 204, "create grpc failed"+err.Error(), m, nil) + return + } + rtcClient := pbRtc.NewRtcServiceClient(connGrpc) + req := &pbRtc.SignalMessageAssembleReq{ + SignalReq: pData.(*pbRtc.SignalReq), + } + respPb, err := rtcClient.SignalMessageAssemble(context.Background(), req) + if err != nil { + log.NewError(m.OperationID, utils.GetSelfFuncName(), "SignalMessageAssemble", err.Error()) + ws.sendSignalMsgResp(conn, 204, "grpc SignalMessageAssemble failed: "+err.Error(), m, &signalResp) + return + } + signalResp.Payload = respPb.SignalResp.Payload + msgData := &sdk_ws.MsgData{} + utils.CopyStructFields(msgData, respPb.MsgData) + if respPb.IsPass { pbData := pbChat.SendMsgReq{ Token: m.Token, OperationID: m.OperationID, @@ -212,24 +236,24 @@ func (ws *WServer) sendSignalMsgReq(conn *UserConn, m *Req) { client := pbChat.NewChatClient(etcdConn) reply, err := client.SendMsg(context.Background(), &pbData) if err != nil { - log.NewError(pbData.OperationID, "rpc sendMsg err", err.Error()) + log.NewError(pbData.OperationID, utils.GetSelfFuncName(), "rpc sendMsg err", err.Error()) nReply.ErrCode = 200 nReply.ErrMsg = err.Error() - ws.sendSignalMsgResp(conn, 200, err.Error(), m, signalResp) + ws.sendSignalMsgResp(conn, 200, err.Error(), m, &signalResp) } else { log.NewInfo(pbData.OperationID, "rpc call success to sendMsgReq", reply.String()) - ws.sendSignalMsgResp(conn, 0, "", m, signalResp) + ws.sendSignalMsgResp(conn, 0, "", m, &signalResp) } } else { - log.NewError(m.OperationID, isPass2, errCode2, errMsg2) - ws.sendSignalMsgResp(conn, errCode2, errMsg2, m, signalResp) + log.NewError(m.OperationID, utils.GetSelfFuncName(), respPb.IsPass, respPb.CommonResp.ErrCode, respPb.CommonResp.ErrMsg) + ws.sendSignalMsgResp(conn, respPb.CommonResp.ErrCode, respPb.CommonResp.ErrMsg, m, &signalResp) } } else { ws.sendSignalMsgResp(conn, errCode, errMsg, m, nil) } } -func (ws *WServer) sendSignalMsgResp(conn *UserConn, errCode int32, errMsg string, m *Req, pb *sdk_ws.SignalResp) { +func (ws *WServer) sendSignalMsgResp(conn *UserConn, errCode int32, errMsg string, m *Req, pb *pbRtc.SignalResp) { // := make(map[string]interface{}) b, _ := proto.Marshal(pb) diff --git a/internal/push/getui/push.go b/internal/push/getui/push.go new file mode 100644 index 000000000..18d6fd0fc --- /dev/null +++ b/internal/push/getui/push.go @@ -0,0 +1,12 @@ +package getui + +type Getui struct { +} + +func (g *Getui) Push(userIDList []string, alert, detailContent, platform string) (resp string, err error) { + return "", nil +} + +func (g *Getui) Auth(apiKey, secretKey string, timeStamp int64) (token string, err error) { + return "", nil +} diff --git a/internal/push/jpush/push.go b/internal/push/jpush/push.go index f0843a3f0..fbcdb9884 100644 --- a/internal/push/jpush/push.go +++ b/internal/push/jpush/push.go @@ -13,6 +13,9 @@ import ( type JPushResp struct { } +type JPush struct { +} + func JGAccountListPush(accounts []string, alert, detailContent, platform string) ([]byte, error) { var pf requestBody.Platform diff --git a/internal/push/push_interface.go b/internal/push/push_interface.go new file mode 100644 index 000000000..ea752d149 --- /dev/null +++ b/internal/push/push_interface.go @@ -0,0 +1,6 @@ +package push + +type offlinePusher interface { + auth(apiKey, secretKey string, timeStamp int64) (token string, err error) + push(userIDList []string, alert, detailContent, platform string) (resp string, err error) +} diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index a25972447..d93385632 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -377,6 +377,10 @@ type config struct { SmtpPort int `yaml:"smtpPort"` } } + Rtc struct { + Port int `yaml:"rtcPort"` + Address string `yaml:"address"` + } `yaml:"rtc"` } type PConversation struct { ReliabilityLevel int `yaml:"reliabilityLevel"` diff --git a/pkg/proto/rtc/rtc.pb.go b/pkg/proto/rtc/rtc.pb.go index 314ec9705..a546f0f12 100644 --- a/pkg/proto/rtc/rtc.pb.go +++ b/pkg/proto/rtc/rtc.pb.go @@ -2,7 +2,7 @@ // versions: // protoc-gen-go v1.27.1 // protoc v3.15.5 -// source: rtc.proto +// source: proto/rtc.proto package proto @@ -36,7 +36,7 @@ type CommonResp struct { func (x *CommonResp) Reset() { *x = CommonResp{} if protoimpl.UnsafeEnabled { - mi := &file_rtc_proto_msgTypes[0] + mi := &file_proto_rtc_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -49,7 +49,7 @@ func (x *CommonResp) String() string { func (*CommonResp) ProtoMessage() {} func (x *CommonResp) ProtoReflect() protoreflect.Message { - mi := &file_rtc_proto_msgTypes[0] + mi := &file_proto_rtc_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -62,7 +62,7 @@ func (x *CommonResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CommonResp.ProtoReflect.Descriptor instead. func (*CommonResp) Descriptor() ([]byte, []int) { - return file_rtc_proto_rawDescGZIP(), []int{0} + return file_proto_rtc_proto_rawDescGZIP(), []int{0} } func (x *CommonResp) GetErrCode() int32 { @@ -79,6 +79,189 @@ func (x *CommonResp) GetErrMsg() string { return "" } +type MsgData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SendID string `protobuf:"bytes,1,opt,name=sendID,proto3" json:"sendID,omitempty"` + RecvID string `protobuf:"bytes,2,opt,name=recvID,proto3" json:"recvID,omitempty"` + GroupID string `protobuf:"bytes,3,opt,name=groupID,proto3" json:"groupID,omitempty"` + ClientMsgID string `protobuf:"bytes,4,opt,name=clientMsgID,proto3" json:"clientMsgID,omitempty"` + ServerMsgID string `protobuf:"bytes,5,opt,name=serverMsgID,proto3" json:"serverMsgID,omitempty"` + SenderPlatformID int32 `protobuf:"varint,6,opt,name=senderPlatformID,proto3" json:"senderPlatformID,omitempty"` + SenderNickname string `protobuf:"bytes,7,opt,name=senderNickname,proto3" json:"senderNickname,omitempty"` + SenderFaceURL string `protobuf:"bytes,8,opt,name=senderFaceURL,proto3" json:"senderFaceURL,omitempty"` + SessionType int32 `protobuf:"varint,9,opt,name=sessionType,proto3" json:"sessionType,omitempty"` + MsgFrom int32 `protobuf:"varint,10,opt,name=msgFrom,proto3" json:"msgFrom,omitempty"` + ContentType int32 `protobuf:"varint,11,opt,name=contentType,proto3" json:"contentType,omitempty"` + Content []byte `protobuf:"bytes,12,opt,name=content,proto3" json:"content,omitempty"` + Seq uint32 `protobuf:"varint,14,opt,name=seq,proto3" json:"seq,omitempty"` + SendTime int64 `protobuf:"varint,15,opt,name=sendTime,proto3" json:"sendTime,omitempty"` + CreateTime int64 `protobuf:"varint,16,opt,name=createTime,proto3" json:"createTime,omitempty"` + Status int32 `protobuf:"varint,17,opt,name=status,proto3" json:"status,omitempty"` + Options map[string]bool `protobuf:"bytes,18,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,19,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` +} + +func (x *MsgData) Reset() { + *x = MsgData{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgData) ProtoMessage() {} + +func (x *MsgData) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MsgData.ProtoReflect.Descriptor instead. +func (*MsgData) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{1} +} + +func (x *MsgData) GetSendID() string { + if x != nil { + return x.SendID + } + return "" +} + +func (x *MsgData) GetRecvID() string { + if x != nil { + return x.RecvID + } + return "" +} + +func (x *MsgData) GetGroupID() string { + if x != nil { + return x.GroupID + } + return "" +} + +func (x *MsgData) GetClientMsgID() string { + if x != nil { + return x.ClientMsgID + } + return "" +} + +func (x *MsgData) GetServerMsgID() string { + if x != nil { + return x.ServerMsgID + } + return "" +} + +func (x *MsgData) GetSenderPlatformID() int32 { + if x != nil { + return x.SenderPlatformID + } + return 0 +} + +func (x *MsgData) GetSenderNickname() string { + if x != nil { + return x.SenderNickname + } + return "" +} + +func (x *MsgData) GetSenderFaceURL() string { + if x != nil { + return x.SenderFaceURL + } + return "" +} + +func (x *MsgData) GetSessionType() int32 { + if x != nil { + return x.SessionType + } + return 0 +} + +func (x *MsgData) GetMsgFrom() int32 { + if x != nil { + return x.MsgFrom + } + return 0 +} + +func (x *MsgData) GetContentType() int32 { + if x != nil { + return x.ContentType + } + return 0 +} + +func (x *MsgData) GetContent() []byte { + if x != nil { + return x.Content + } + return nil +} + +func (x *MsgData) GetSeq() uint32 { + if x != nil { + return x.Seq + } + return 0 +} + +func (x *MsgData) GetSendTime() int64 { + if x != nil { + return x.SendTime + } + return 0 +} + +func (x *MsgData) GetCreateTime() int64 { + if x != nil { + return x.CreateTime + } + return 0 +} + +func (x *MsgData) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *MsgData) GetOptions() map[string]bool { + if x != nil { + return x.Options + } + return nil +} + +func (x *MsgData) GetOfflinePushInfo() *OfflinePushInfo { + if x != nil { + return x.OfflinePushInfo + } + return nil +} + type GroupInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -101,7 +284,7 @@ type GroupInfo struct { func (x *GroupInfo) Reset() { *x = GroupInfo{} if protoimpl.UnsafeEnabled { - mi := &file_rtc_proto_msgTypes[1] + mi := &file_proto_rtc_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -114,7 +297,7 @@ func (x *GroupInfo) String() string { func (*GroupInfo) ProtoMessage() {} func (x *GroupInfo) ProtoReflect() protoreflect.Message { - mi := &file_rtc_proto_msgTypes[1] + mi := &file_proto_rtc_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -127,7 +310,7 @@ func (x *GroupInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupInfo.ProtoReflect.Descriptor instead. func (*GroupInfo) Descriptor() ([]byte, []int) { - return file_rtc_proto_rawDescGZIP(), []int{1} + return file_proto_rtc_proto_rawDescGZIP(), []int{2} } func (x *GroupInfo) GetGroupID() string { @@ -234,7 +417,7 @@ type GroupMemberFullInfo struct { func (x *GroupMemberFullInfo) Reset() { *x = GroupMemberFullInfo{} if protoimpl.UnsafeEnabled { - mi := &file_rtc_proto_msgTypes[2] + mi := &file_proto_rtc_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -247,7 +430,7 @@ func (x *GroupMemberFullInfo) String() string { func (*GroupMemberFullInfo) ProtoMessage() {} func (x *GroupMemberFullInfo) ProtoReflect() protoreflect.Message { - mi := &file_rtc_proto_msgTypes[2] + mi := &file_proto_rtc_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -260,7 +443,7 @@ func (x *GroupMemberFullInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupMemberFullInfo.ProtoReflect.Descriptor instead. func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) { - return file_rtc_proto_rawDescGZIP(), []int{2} + return file_proto_rtc_proto_rawDescGZIP(), []int{3} } func (x *GroupMemberFullInfo) GetGroupID() string { @@ -346,7 +529,7 @@ type ParticipantMetaData struct { func (x *ParticipantMetaData) Reset() { *x = ParticipantMetaData{} if protoimpl.UnsafeEnabled { - mi := &file_rtc_proto_msgTypes[3] + mi := &file_proto_rtc_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -359,7 +542,7 @@ func (x *ParticipantMetaData) String() string { func (*ParticipantMetaData) ProtoMessage() {} func (x *ParticipantMetaData) ProtoReflect() protoreflect.Message { - mi := &file_rtc_proto_msgTypes[3] + mi := &file_proto_rtc_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -372,7 +555,7 @@ func (x *ParticipantMetaData) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantMetaData.ProtoReflect.Descriptor instead. func (*ParticipantMetaData) Descriptor() ([]byte, []int) { - return file_rtc_proto_rawDescGZIP(), []int{3} + return file_proto_rtc_proto_rawDescGZIP(), []int{4} } func (x *ParticipantMetaData) GetGroupInfo() *GroupInfo { @@ -411,7 +594,7 @@ type PublicUserInfo struct { func (x *PublicUserInfo) Reset() { *x = PublicUserInfo{} if protoimpl.UnsafeEnabled { - mi := &file_rtc_proto_msgTypes[4] + mi := &file_proto_rtc_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -424,7 +607,7 @@ func (x *PublicUserInfo) String() string { func (*PublicUserInfo) ProtoMessage() {} func (x *PublicUserInfo) ProtoReflect() protoreflect.Message { - mi := &file_rtc_proto_msgTypes[4] + mi := &file_proto_rtc_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -437,7 +620,7 @@ func (x *PublicUserInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use PublicUserInfo.ProtoReflect.Descriptor instead. func (*PublicUserInfo) Descriptor() ([]byte, []int) { - return file_rtc_proto_rawDescGZIP(), []int{4} + return file_proto_rtc_proto_rawDescGZIP(), []int{5} } func (x *PublicUserInfo) GetUserID() string { @@ -489,7 +672,7 @@ type GetJoinTokenReq struct { func (x *GetJoinTokenReq) Reset() { *x = GetJoinTokenReq{} if protoimpl.UnsafeEnabled { - mi := &file_rtc_proto_msgTypes[5] + mi := &file_proto_rtc_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -502,7 +685,7 @@ func (x *GetJoinTokenReq) String() string { func (*GetJoinTokenReq) ProtoMessage() {} func (x *GetJoinTokenReq) ProtoReflect() protoreflect.Message { - mi := &file_rtc_proto_msgTypes[5] + mi := &file_proto_rtc_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -515,7 +698,7 @@ func (x *GetJoinTokenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetJoinTokenReq.ProtoReflect.Descriptor instead. func (*GetJoinTokenReq) Descriptor() ([]byte, []int) { - return file_rtc_proto_rawDescGZIP(), []int{5} + return file_proto_rtc_proto_rawDescGZIP(), []int{6} } func (x *GetJoinTokenReq) GetRoom() string { @@ -559,7 +742,7 @@ type GetJoinTokenResp struct { func (x *GetJoinTokenResp) Reset() { *x = GetJoinTokenResp{} if protoimpl.UnsafeEnabled { - mi := &file_rtc_proto_msgTypes[6] + mi := &file_proto_rtc_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -572,7 +755,7 @@ func (x *GetJoinTokenResp) String() string { func (*GetJoinTokenResp) ProtoMessage() {} func (x *GetJoinTokenResp) ProtoReflect() protoreflect.Message { - mi := &file_rtc_proto_msgTypes[6] + mi := &file_proto_rtc_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -585,7 +768,7 @@ func (x *GetJoinTokenResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetJoinTokenResp.ProtoReflect.Descriptor instead. func (*GetJoinTokenResp) Descriptor() ([]byte, []int) { - return file_rtc_proto_rawDescGZIP(), []int{6} + return file_proto_rtc_proto_rawDescGZIP(), []int{7} } func (x *GetJoinTokenResp) GetCommonResp() *CommonResp { @@ -609,219 +792,1859 @@ func (x *GetJoinTokenResp) GetLiveURL() string { return "" } -var File_rtc_proto protoreflect.FileDescriptor - -var file_rtc_proto_rawDesc = []byte{ - 0x0a, 0x09, 0x72, 0x74, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x72, 0x74, 0x63, - 0x22, 0x3e, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, - 0x0a, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x4d, - 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, - 0x22, 0xf5, 0x02, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, - 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, - 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, - 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, - 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x22, 0xb7, 0x02, 0x0a, 0x13, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x1a, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, - 0x55, 0x52, 0x4c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, - 0x52, 0x4c, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x4d, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x4d, - 0x61, 0x6e, 0x67, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x6a, 0x6f, - 0x69, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x65, 0x78, 0x22, 0xb8, 0x01, 0x0a, 0x13, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, - 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x09, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x72, 0x74, 0x63, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42, 0x0a, 0x0f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x72, 0x74, 0x63, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2f, 0x0a, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x72, 0x74, 0x63, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x86, 0x01, - 0x0a, 0x0e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x16, - 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0x99, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4a, 0x6f, - 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, - 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x1a, - 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x72, - 0x74, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x44, 0x22, 0x6f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x74, 0x63, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6a, 0x77, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x76, - 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x76, 0x65, - 0x55, 0x52, 0x4c, 0x32, 0x49, 0x0a, 0x0a, 0x52, 0x74, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x14, 0x2e, 0x72, 0x74, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x72, 0x74, 0x63, 0x2e, 0x47, 0x65, - 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0b, - 0x5a, 0x09, 0x2e, 0x2f, 0x72, 0x74, 0x63, 0x3b, 0x72, 0x74, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, -} +type OfflinePushInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var ( - file_rtc_proto_rawDescOnce sync.Once - file_rtc_proto_rawDescData = file_rtc_proto_rawDesc -) + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Desc string `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"` + Ex string `protobuf:"bytes,3,opt,name=ex,proto3" json:"ex,omitempty"` + IOSPushSound string `protobuf:"bytes,4,opt,name=iOSPushSound,proto3" json:"iOSPushSound,omitempty"` + IOSBadgeCount bool `protobuf:"varint,5,opt,name=iOSBadgeCount,proto3" json:"iOSBadgeCount,omitempty"` +} -func file_rtc_proto_rawDescGZIP() []byte { - file_rtc_proto_rawDescOnce.Do(func() { - file_rtc_proto_rawDescData = protoimpl.X.CompressGZIP(file_rtc_proto_rawDescData) - }) - return file_rtc_proto_rawDescData -} - -var file_rtc_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_rtc_proto_goTypes = []interface{}{ - (*CommonResp)(nil), // 0: rtc.CommonResp - (*GroupInfo)(nil), // 1: rtc.GroupInfo - (*GroupMemberFullInfo)(nil), // 2: rtc.GroupMemberFullInfo - (*ParticipantMetaData)(nil), // 3: rtc.ParticipantMetaData - (*PublicUserInfo)(nil), // 4: rtc.PublicUserInfo - (*GetJoinTokenReq)(nil), // 5: rtc.GetJoinTokenReq - (*GetJoinTokenResp)(nil), // 6: rtc.GetJoinTokenResp -} -var file_rtc_proto_depIdxs = []int32{ - 1, // 0: rtc.ParticipantMetaData.groupInfo:type_name -> rtc.GroupInfo - 2, // 1: rtc.ParticipantMetaData.groupMemberInfo:type_name -> rtc.GroupMemberFullInfo - 4, // 2: rtc.ParticipantMetaData.userInfo:type_name -> rtc.PublicUserInfo - 3, // 3: rtc.GetJoinTokenReq.metaData:type_name -> rtc.ParticipantMetaData - 0, // 4: rtc.GetJoinTokenResp.CommonResp:type_name -> rtc.CommonResp - 5, // 5: rtc.RtcService.GetJoinToken:input_type -> rtc.GetJoinTokenReq - 6, // 6: rtc.RtcService.GetJoinToken:output_type -> rtc.GetJoinTokenResp - 6, // [6:7] is the sub-list for method output_type - 5, // [5:6] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name -} - -func init() { file_rtc_proto_init() } -func file_rtc_proto_init() { - if File_rtc_proto != nil { - return +func (x *OfflinePushInfo) Reset() { + *x = OfflinePushInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - if !protoimpl.UnsafeEnabled { - file_rtc_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommonResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_rtc_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_rtc_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupMemberFullInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_rtc_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ParticipantMetaData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } +} + +func (x *OfflinePushInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OfflinePushInfo) ProtoMessage() {} + +func (x *OfflinePushInfo) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - file_rtc_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PublicUserInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OfflinePushInfo.ProtoReflect.Descriptor instead. +func (*OfflinePushInfo) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{8} +} + +func (x *OfflinePushInfo) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *OfflinePushInfo) GetDesc() string { + if x != nil { + return x.Desc + } + return "" +} + +func (x *OfflinePushInfo) GetEx() string { + if x != nil { + return x.Ex + } + return "" +} + +func (x *OfflinePushInfo) GetIOSPushSound() string { + if x != nil { + return x.IOSPushSound + } + return "" +} + +func (x *OfflinePushInfo) GetIOSBadgeCount() bool { + if x != nil { + return x.IOSBadgeCount + } + return false +} + +type SignalReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Payload: + // *SignalReq_Invite + // *SignalReq_InviteInGroup + // *SignalReq_Cancel + // *SignalReq_Accept + // *SignalReq_HungUp + // *SignalReq_Reject + Payload isSignalReq_Payload `protobuf_oneof:"payload"` +} + +func (x *SignalReq) Reset() { + *x = SignalReq{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalReq) ProtoMessage() {} + +func (x *SignalReq) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - file_rtc_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetJoinTokenReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalReq.ProtoReflect.Descriptor instead. +func (*SignalReq) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{9} +} + +func (m *SignalReq) GetPayload() isSignalReq_Payload { + if m != nil { + return m.Payload + } + return nil +} + +func (x *SignalReq) GetInvite() *SignalInviteReq { + if x, ok := x.GetPayload().(*SignalReq_Invite); ok { + return x.Invite + } + return nil +} + +func (x *SignalReq) GetInviteInGroup() *SignalInviteInGroupReq { + if x, ok := x.GetPayload().(*SignalReq_InviteInGroup); ok { + return x.InviteInGroup + } + return nil +} + +func (x *SignalReq) GetCancel() *SignalCancelReq { + if x, ok := x.GetPayload().(*SignalReq_Cancel); ok { + return x.Cancel + } + return nil +} + +func (x *SignalReq) GetAccept() *SignalAcceptReq { + if x, ok := x.GetPayload().(*SignalReq_Accept); ok { + return x.Accept + } + return nil +} + +func (x *SignalReq) GetHungUp() *SignalHungUpReq { + if x, ok := x.GetPayload().(*SignalReq_HungUp); ok { + return x.HungUp + } + return nil +} + +func (x *SignalReq) GetReject() *SignalRejectReq { + if x, ok := x.GetPayload().(*SignalReq_Reject); ok { + return x.Reject + } + return nil +} + +type isSignalReq_Payload interface { + isSignalReq_Payload() +} + +type SignalReq_Invite struct { + Invite *SignalInviteReq `protobuf:"bytes,1,opt,name=invite,proto3,oneof"` +} + +type SignalReq_InviteInGroup struct { + InviteInGroup *SignalInviteInGroupReq `protobuf:"bytes,2,opt,name=inviteInGroup,proto3,oneof"` +} + +type SignalReq_Cancel struct { + Cancel *SignalCancelReq `protobuf:"bytes,3,opt,name=cancel,proto3,oneof"` +} + +type SignalReq_Accept struct { + Accept *SignalAcceptReq `protobuf:"bytes,4,opt,name=accept,proto3,oneof"` +} + +type SignalReq_HungUp struct { + HungUp *SignalHungUpReq `protobuf:"bytes,5,opt,name=hungUp,proto3,oneof"` +} + +type SignalReq_Reject struct { + Reject *SignalRejectReq `protobuf:"bytes,6,opt,name=reject,proto3,oneof"` +} + +func (*SignalReq_Invite) isSignalReq_Payload() {} + +func (*SignalReq_InviteInGroup) isSignalReq_Payload() {} + +func (*SignalReq_Cancel) isSignalReq_Payload() {} + +func (*SignalReq_Accept) isSignalReq_Payload() {} + +func (*SignalReq_HungUp) isSignalReq_Payload() {} + +func (*SignalReq_Reject) isSignalReq_Payload() {} + +type SignalResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Payload: + // *SignalResp_Invite + // *SignalResp_InviteInGroup + // *SignalResp_Cancel + // *SignalResp_Accept + // *SignalResp_HungUp + // *SignalResp_Reject + Payload isSignalResp_Payload `protobuf_oneof:"payload"` +} + +func (x *SignalResp) Reset() { + *x = SignalResp{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalResp) ProtoMessage() {} + +func (x *SignalResp) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalResp.ProtoReflect.Descriptor instead. +func (*SignalResp) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{10} +} + +func (m *SignalResp) GetPayload() isSignalResp_Payload { + if m != nil { + return m.Payload + } + return nil +} + +func (x *SignalResp) GetInvite() *SignalInviteReply { + if x, ok := x.GetPayload().(*SignalResp_Invite); ok { + return x.Invite + } + return nil +} + +func (x *SignalResp) GetInviteInGroup() *SignalInviteInGroupReply { + if x, ok := x.GetPayload().(*SignalResp_InviteInGroup); ok { + return x.InviteInGroup + } + return nil +} + +func (x *SignalResp) GetCancel() *SignalCancelReply { + if x, ok := x.GetPayload().(*SignalResp_Cancel); ok { + return x.Cancel + } + return nil +} + +func (x *SignalResp) GetAccept() *SignalAcceptReply { + if x, ok := x.GetPayload().(*SignalResp_Accept); ok { + return x.Accept + } + return nil +} + +func (x *SignalResp) GetHungUp() *SignalHungUpReply { + if x, ok := x.GetPayload().(*SignalResp_HungUp); ok { + return x.HungUp + } + return nil +} + +func (x *SignalResp) GetReject() *SignalRejectReply { + if x, ok := x.GetPayload().(*SignalResp_Reject); ok { + return x.Reject + } + return nil +} + +type isSignalResp_Payload interface { + isSignalResp_Payload() +} + +type SignalResp_Invite struct { + Invite *SignalInviteReply `protobuf:"bytes,1,opt,name=invite,proto3,oneof"` +} + +type SignalResp_InviteInGroup struct { + InviteInGroup *SignalInviteInGroupReply `protobuf:"bytes,2,opt,name=inviteInGroup,proto3,oneof"` +} + +type SignalResp_Cancel struct { + Cancel *SignalCancelReply `protobuf:"bytes,3,opt,name=cancel,proto3,oneof"` +} + +type SignalResp_Accept struct { + Accept *SignalAcceptReply `protobuf:"bytes,4,opt,name=accept,proto3,oneof"` +} + +type SignalResp_HungUp struct { + HungUp *SignalHungUpReply `protobuf:"bytes,5,opt,name=hungUp,proto3,oneof"` +} + +type SignalResp_Reject struct { + Reject *SignalRejectReply `protobuf:"bytes,6,opt,name=reject,proto3,oneof"` +} + +func (*SignalResp_Invite) isSignalResp_Payload() {} + +func (*SignalResp_InviteInGroup) isSignalResp_Payload() {} + +func (*SignalResp_Cancel) isSignalResp_Payload() {} + +func (*SignalResp_Accept) isSignalResp_Payload() {} + +func (*SignalResp_HungUp) isSignalResp_Payload() {} + +func (*SignalResp_Reject) isSignalResp_Payload() {} + +type InvitationInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InviterUserID string `protobuf:"bytes,1,opt,name=inviterUserID,proto3" json:"inviterUserID,omitempty"` + InviteeUserIDList []string `protobuf:"bytes,2,rep,name=inviteeUserIDList,proto3" json:"inviteeUserIDList,omitempty"` + CustomData string `protobuf:"bytes,3,opt,name=customData,proto3" json:"customData,omitempty"` + GroupID string `protobuf:"bytes,4,opt,name=groupID,proto3" json:"groupID,omitempty"` + RoomID string `protobuf:"bytes,5,opt,name=roomID,proto3" json:"roomID,omitempty"` + Timeout int32 `protobuf:"varint,6,opt,name=timeout,proto3" json:"timeout,omitempty"` + MediaType string `protobuf:"bytes,7,opt,name=mediaType,proto3" json:"mediaType,omitempty"` + PlatformID int32 `protobuf:"varint,8,opt,name=platformID,proto3" json:"platformID,omitempty"` + SessionType int32 `protobuf:"varint,9,opt,name=sessionType,proto3" json:"sessionType,omitempty"` +} + +func (x *InvitationInfo) Reset() { + *x = InvitationInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InvitationInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InvitationInfo) ProtoMessage() {} + +func (x *InvitationInfo) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InvitationInfo.ProtoReflect.Descriptor instead. +func (*InvitationInfo) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{11} +} + +func (x *InvitationInfo) GetInviterUserID() string { + if x != nil { + return x.InviterUserID + } + return "" +} + +func (x *InvitationInfo) GetInviteeUserIDList() []string { + if x != nil { + return x.InviteeUserIDList + } + return nil +} + +func (x *InvitationInfo) GetCustomData() string { + if x != nil { + return x.CustomData + } + return "" +} + +func (x *InvitationInfo) GetGroupID() string { + if x != nil { + return x.GroupID + } + return "" +} + +func (x *InvitationInfo) GetRoomID() string { + if x != nil { + return x.RoomID + } + return "" +} + +func (x *InvitationInfo) GetTimeout() int32 { + if x != nil { + return x.Timeout + } + return 0 +} + +func (x *InvitationInfo) GetMediaType() string { + if x != nil { + return x.MediaType + } + return "" +} + +func (x *InvitationInfo) GetPlatformID() int32 { + if x != nil { + return x.PlatformID + } + return 0 +} + +func (x *InvitationInfo) GetSessionType() int32 { + if x != nil { + return x.SessionType + } + return 0 +} + +type SignalInviteReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpUserID string `protobuf:"bytes,1,opt,name=opUserID,proto3" json:"opUserID,omitempty"` + Invitation *InvitationInfo `protobuf:"bytes,2,opt,name=invitation,proto3" json:"invitation,omitempty"` + OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,3,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` + Participant *ParticipantMetaData `protobuf:"bytes,4,opt,name=participant,proto3" json:"participant,omitempty"` +} + +func (x *SignalInviteReq) Reset() { + *x = SignalInviteReq{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalInviteReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalInviteReq) ProtoMessage() {} + +func (x *SignalInviteReq) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalInviteReq.ProtoReflect.Descriptor instead. +func (*SignalInviteReq) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{12} +} + +func (x *SignalInviteReq) GetOpUserID() string { + if x != nil { + return x.OpUserID + } + return "" +} + +func (x *SignalInviteReq) GetInvitation() *InvitationInfo { + if x != nil { + return x.Invitation + } + return nil +} + +func (x *SignalInviteReq) GetOfflinePushInfo() *OfflinePushInfo { + if x != nil { + return x.OfflinePushInfo + } + return nil +} + +func (x *SignalInviteReq) GetParticipant() *ParticipantMetaData { + if x != nil { + return x.Participant + } + return nil +} + +type SignalInviteReply struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + RoomID string `protobuf:"bytes,2,opt,name=roomID,proto3" json:"roomID,omitempty"` + LiveURL string `protobuf:"bytes,3,opt,name=liveURL,proto3" json:"liveURL,omitempty"` +} + +func (x *SignalInviteReply) Reset() { + *x = SignalInviteReply{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalInviteReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalInviteReply) ProtoMessage() {} + +func (x *SignalInviteReply) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalInviteReply.ProtoReflect.Descriptor instead. +func (*SignalInviteReply) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{13} +} + +func (x *SignalInviteReply) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +func (x *SignalInviteReply) GetRoomID() string { + if x != nil { + return x.RoomID + } + return "" +} + +func (x *SignalInviteReply) GetLiveURL() string { + if x != nil { + return x.LiveURL + } + return "" +} + +type SignalInviteInGroupReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpUserID string `protobuf:"bytes,1,opt,name=opUserID,proto3" json:"opUserID,omitempty"` + Invitation *InvitationInfo `protobuf:"bytes,2,opt,name=invitation,proto3" json:"invitation,omitempty"` + OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,3,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` + Participant *ParticipantMetaData `protobuf:"bytes,4,opt,name=participant,proto3" json:"participant,omitempty"` +} + +func (x *SignalInviteInGroupReq) Reset() { + *x = SignalInviteInGroupReq{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalInviteInGroupReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalInviteInGroupReq) ProtoMessage() {} + +func (x *SignalInviteInGroupReq) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalInviteInGroupReq.ProtoReflect.Descriptor instead. +func (*SignalInviteInGroupReq) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{14} +} + +func (x *SignalInviteInGroupReq) GetOpUserID() string { + if x != nil { + return x.OpUserID + } + return "" +} + +func (x *SignalInviteInGroupReq) GetInvitation() *InvitationInfo { + if x != nil { + return x.Invitation + } + return nil +} + +func (x *SignalInviteInGroupReq) GetOfflinePushInfo() *OfflinePushInfo { + if x != nil { + return x.OfflinePushInfo + } + return nil +} + +func (x *SignalInviteInGroupReq) GetParticipant() *ParticipantMetaData { + if x != nil { + return x.Participant + } + return nil +} + +type SignalInviteInGroupReply struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + RoomID string `protobuf:"bytes,2,opt,name=roomID,proto3" json:"roomID,omitempty"` + LiveURL string `protobuf:"bytes,3,opt,name=liveURL,proto3" json:"liveURL,omitempty"` +} + +func (x *SignalInviteInGroupReply) Reset() { + *x = SignalInviteInGroupReply{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalInviteInGroupReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalInviteInGroupReply) ProtoMessage() {} + +func (x *SignalInviteInGroupReply) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalInviteInGroupReply.ProtoReflect.Descriptor instead. +func (*SignalInviteInGroupReply) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{15} +} + +func (x *SignalInviteInGroupReply) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +func (x *SignalInviteInGroupReply) GetRoomID() string { + if x != nil { + return x.RoomID + } + return "" +} + +func (x *SignalInviteInGroupReply) GetLiveURL() string { + if x != nil { + return x.LiveURL + } + return "" +} + +type SignalCancelReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpUserID string `protobuf:"bytes,1,opt,name=opUserID,proto3" json:"opUserID,omitempty"` + Invitation *InvitationInfo `protobuf:"bytes,2,opt,name=invitation,proto3" json:"invitation,omitempty"` + OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,3,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` + Participant *ParticipantMetaData `protobuf:"bytes,4,opt,name=participant,proto3" json:"participant,omitempty"` +} + +func (x *SignalCancelReq) Reset() { + *x = SignalCancelReq{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalCancelReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalCancelReq) ProtoMessage() {} + +func (x *SignalCancelReq) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalCancelReq.ProtoReflect.Descriptor instead. +func (*SignalCancelReq) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{16} +} + +func (x *SignalCancelReq) GetOpUserID() string { + if x != nil { + return x.OpUserID + } + return "" +} + +func (x *SignalCancelReq) GetInvitation() *InvitationInfo { + if x != nil { + return x.Invitation + } + return nil +} + +func (x *SignalCancelReq) GetOfflinePushInfo() *OfflinePushInfo { + if x != nil { + return x.OfflinePushInfo + } + return nil +} + +func (x *SignalCancelReq) GetParticipant() *ParticipantMetaData { + if x != nil { + return x.Participant + } + return nil +} + +type SignalCancelReply struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SignalCancelReply) Reset() { + *x = SignalCancelReply{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalCancelReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalCancelReply) ProtoMessage() {} + +func (x *SignalCancelReply) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalCancelReply.ProtoReflect.Descriptor instead. +func (*SignalCancelReply) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{17} +} + +type SignalAcceptReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpUserID string `protobuf:"bytes,1,opt,name=opUserID,proto3" json:"opUserID,omitempty"` + Invitation *InvitationInfo `protobuf:"bytes,2,opt,name=invitation,proto3" json:"invitation,omitempty"` + OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,3,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` + Participant *ParticipantMetaData `protobuf:"bytes,4,opt,name=participant,proto3" json:"participant,omitempty"` + OpUserPlatformID int32 `protobuf:"varint,5,opt,name=opUserPlatformID,proto3" json:"opUserPlatformID,omitempty"` +} + +func (x *SignalAcceptReq) Reset() { + *x = SignalAcceptReq{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalAcceptReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalAcceptReq) ProtoMessage() {} + +func (x *SignalAcceptReq) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalAcceptReq.ProtoReflect.Descriptor instead. +func (*SignalAcceptReq) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{18} +} + +func (x *SignalAcceptReq) GetOpUserID() string { + if x != nil { + return x.OpUserID + } + return "" +} + +func (x *SignalAcceptReq) GetInvitation() *InvitationInfo { + if x != nil { + return x.Invitation + } + return nil +} + +func (x *SignalAcceptReq) GetOfflinePushInfo() *OfflinePushInfo { + if x != nil { + return x.OfflinePushInfo + } + return nil +} + +func (x *SignalAcceptReq) GetParticipant() *ParticipantMetaData { + if x != nil { + return x.Participant + } + return nil +} + +func (x *SignalAcceptReq) GetOpUserPlatformID() int32 { + if x != nil { + return x.OpUserPlatformID + } + return 0 +} + +type SignalAcceptReply struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + RoomID string `protobuf:"bytes,2,opt,name=roomID,proto3" json:"roomID,omitempty"` + LiveURL string `protobuf:"bytes,3,opt,name=liveURL,proto3" json:"liveURL,omitempty"` +} + +func (x *SignalAcceptReply) Reset() { + *x = SignalAcceptReply{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalAcceptReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalAcceptReply) ProtoMessage() {} + +func (x *SignalAcceptReply) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalAcceptReply.ProtoReflect.Descriptor instead. +func (*SignalAcceptReply) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{19} +} + +func (x *SignalAcceptReply) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +func (x *SignalAcceptReply) GetRoomID() string { + if x != nil { + return x.RoomID + } + return "" +} + +func (x *SignalAcceptReply) GetLiveURL() string { + if x != nil { + return x.LiveURL + } + return "" +} + +type SignalHungUpReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpUserID string `protobuf:"bytes,1,opt,name=opUserID,proto3" json:"opUserID,omitempty"` + Invitation *InvitationInfo `protobuf:"bytes,2,opt,name=invitation,proto3" json:"invitation,omitempty"` + OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,3,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` +} + +func (x *SignalHungUpReq) Reset() { + *x = SignalHungUpReq{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalHungUpReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalHungUpReq) ProtoMessage() {} + +func (x *SignalHungUpReq) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalHungUpReq.ProtoReflect.Descriptor instead. +func (*SignalHungUpReq) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{20} +} + +func (x *SignalHungUpReq) GetOpUserID() string { + if x != nil { + return x.OpUserID + } + return "" +} + +func (x *SignalHungUpReq) GetInvitation() *InvitationInfo { + if x != nil { + return x.Invitation + } + return nil +} + +func (x *SignalHungUpReq) GetOfflinePushInfo() *OfflinePushInfo { + if x != nil { + return x.OfflinePushInfo + } + return nil +} + +type SignalHungUpReply struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SignalHungUpReply) Reset() { + *x = SignalHungUpReply{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalHungUpReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalHungUpReply) ProtoMessage() {} + +func (x *SignalHungUpReply) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalHungUpReply.ProtoReflect.Descriptor instead. +func (*SignalHungUpReply) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{21} +} + +type SignalRejectReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpUserID string `protobuf:"bytes,1,opt,name=opUserID,proto3" json:"opUserID,omitempty"` + Invitation *InvitationInfo `protobuf:"bytes,2,opt,name=invitation,proto3" json:"invitation,omitempty"` + OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,3,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` + Participant *ParticipantMetaData `protobuf:"bytes,4,opt,name=participant,proto3" json:"participant,omitempty"` + OpUserPlatformID int32 `protobuf:"varint,5,opt,name=opUserPlatformID,proto3" json:"opUserPlatformID,omitempty"` +} + +func (x *SignalRejectReq) Reset() { + *x = SignalRejectReq{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalRejectReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalRejectReq) ProtoMessage() {} + +func (x *SignalRejectReq) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalRejectReq.ProtoReflect.Descriptor instead. +func (*SignalRejectReq) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{22} +} + +func (x *SignalRejectReq) GetOpUserID() string { + if x != nil { + return x.OpUserID + } + return "" +} + +func (x *SignalRejectReq) GetInvitation() *InvitationInfo { + if x != nil { + return x.Invitation + } + return nil +} + +func (x *SignalRejectReq) GetOfflinePushInfo() *OfflinePushInfo { + if x != nil { + return x.OfflinePushInfo + } + return nil +} + +func (x *SignalRejectReq) GetParticipant() *ParticipantMetaData { + if x != nil { + return x.Participant + } + return nil +} + +func (x *SignalRejectReq) GetOpUserPlatformID() int32 { + if x != nil { + return x.OpUserPlatformID + } + return 0 +} + +type SignalRejectReply struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SignalRejectReply) Reset() { + *x = SignalRejectReply{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalRejectReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalRejectReply) ProtoMessage() {} + +func (x *SignalRejectReply) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalRejectReply.ProtoReflect.Descriptor instead. +func (*SignalRejectReply) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{23} +} + +type SignalMessageAssembleReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SignalReq *SignalReq `protobuf:"bytes,1,opt,name=signalReq,proto3" json:"signalReq,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID,proto3" json:"operationID,omitempty"` +} + +func (x *SignalMessageAssembleReq) Reset() { + *x = SignalMessageAssembleReq{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalMessageAssembleReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalMessageAssembleReq) ProtoMessage() {} + +func (x *SignalMessageAssembleReq) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalMessageAssembleReq.ProtoReflect.Descriptor instead. +func (*SignalMessageAssembleReq) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{24} +} + +func (x *SignalMessageAssembleReq) GetSignalReq() *SignalReq { + if x != nil { + return x.SignalReq + } + return nil +} + +func (x *SignalMessageAssembleReq) GetOperationID() string { + if x != nil { + return x.OperationID + } + return "" +} + +type SignalMessageAssembleResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + IsPass bool `protobuf:"varint,2,opt,name=isPass,proto3" json:"isPass,omitempty"` + SignalResp *SignalResp `protobuf:"bytes,3,opt,name=signalResp,proto3" json:"signalResp,omitempty"` + MsgData *MsgData `protobuf:"bytes,4,opt,name=msgData,proto3" json:"msgData,omitempty"` +} + +func (x *SignalMessageAssembleResp) Reset() { + *x = SignalMessageAssembleResp{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rtc_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignalMessageAssembleResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignalMessageAssembleResp) ProtoMessage() {} + +func (x *SignalMessageAssembleResp) ProtoReflect() protoreflect.Message { + mi := &file_proto_rtc_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignalMessageAssembleResp.ProtoReflect.Descriptor instead. +func (*SignalMessageAssembleResp) Descriptor() ([]byte, []int) { + return file_proto_rtc_proto_rawDescGZIP(), []int{25} +} + +func (x *SignalMessageAssembleResp) GetCommonResp() *CommonResp { + if x != nil { + return x.CommonResp + } + return nil +} + +func (x *SignalMessageAssembleResp) GetIsPass() bool { + if x != nil { + return x.IsPass + } + return false +} + +func (x *SignalMessageAssembleResp) GetSignalResp() *SignalResp { + if x != nil { + return x.SignalResp + } + return nil +} + +func (x *SignalMessageAssembleResp) GetMsgData() *MsgData { + if x != nil { + return x.MsgData + } + return nil +} + +var File_proto_rtc_proto protoreflect.FileDescriptor + +var file_proto_rtc_proto_rawDesc = []byte{ + 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x74, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3e, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xa4, 0x05, 0x0a, 0x07, 0x4d, 0x73, 0x67, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, + 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, + 0x63, 0x76, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x20, + 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, 0x44, + 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, + 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x26, + 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, + 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x46, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x20, 0x0a, 0x0b, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x6d, 0x73, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x40, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, + 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, + 0x6e, 0x66, 0x6f, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0xf5, 0x02, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, + 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, + 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x65, + 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x22, 0xb7, 0x02, 0x0a, 0x13, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x1a, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, + 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, + 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, + 0x52, 0x4c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, + 0x4c, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x4d, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x4d, 0x61, + 0x6e, 0x67, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x6a, 0x6f, 0x69, + 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6a, + 0x6f, 0x69, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, + 0x78, 0x22, 0xbe, 0x01, 0x0a, 0x13, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2e, 0x0a, 0x09, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x0f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x31, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x22, 0x86, 0x01, 0x0a, 0x0e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, + 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, + 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, + 0x55, 0x52, 0x4c, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x65, + 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0x9b, 0x01, 0x0a, 0x0f, + 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, + 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, + 0x6f, 0x6f, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, + 0x36, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, + 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x71, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, + 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x10, 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6a, + 0x77, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x55, 0x52, 0x4c, 0x22, 0x95, 0x01, 0x0a, + 0x0f, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x4f, + 0x53, 0x50, 0x75, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x69, 0x4f, 0x53, 0x50, 0x75, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x24, + 0x0a, 0x0d, 0x69, 0x4f, 0x53, 0x42, 0x61, 0x64, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x4f, 0x53, 0x42, 0x61, 0x64, 0x67, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xd7, 0x02, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, + 0x65, 0x71, 0x12, 0x30, 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x06, 0x69, 0x6e, + 0x76, 0x69, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, + 0x49, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6e, + 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x30, 0x0a, 0x06, 0x63, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, + 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, 0x30, 0x0a, + 0x06, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, + 0x30, 0x0a, 0x06, 0x68, 0x75, 0x6e, 0x67, 0x55, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x48, 0x75, + 0x6e, 0x67, 0x55, 0x70, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x06, 0x68, 0x75, 0x6e, 0x67, 0x55, + 0x70, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6a, + 0x65, 0x63, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xe4, + 0x02, 0x0a, 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, + 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x48, 0x00, 0x52, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x12, 0x47, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6e, 0x76, + 0x69, 0x74, 0x65, 0x49, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x32, 0x0a, 0x06, 0x63, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x48, 0x00, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, 0x32, + 0x0a, 0x06, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x68, 0x75, 0x6e, 0x67, 0x55, 0x70, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x48, 0x75, 0x6e, 0x67, 0x55, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x48, 0x00, 0x52, 0x06, + 0x68, 0x75, 0x6e, 0x67, 0x55, 0x70, 0x12, 0x32, 0x0a, 0x06, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xb0, 0x02, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, + 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x2c, + 0x0a, 0x11, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, + 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x44, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x18, + 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0xe4, 0x01, 0x0a, 0x0f, 0x53, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, + 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x35, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x40, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, + 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, + 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, + 0x5b, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, + 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, + 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x55, 0x52, 0x4c, 0x22, 0xeb, 0x01, 0x0a, + 0x16, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x44, 0x12, 0x35, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, + 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0f, 0x6f, 0x66, + 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x66, 0x66, 0x6c, + 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6f, 0x66, 0x66, + 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3c, 0x0a, 0x0b, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, + 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, 0x62, 0x0a, 0x18, 0x53, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, + 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x55, 0x52, 0x4c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x55, 0x52, 0x4c, 0x22, 0xe4, + 0x01, 0x0a, 0x0f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, + 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x35, + 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, + 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, + 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, + 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, + 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x43, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x90, 0x02, 0x0a, 0x0f, 0x53, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1a, + 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x35, 0x0a, 0x0a, 0x69, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x40, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, + 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, + 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6f, 0x70, 0x55, + 0x73, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x22, 0x5b, 0x0a, + 0x11, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x6f, 0x6d, + 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x44, + 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x55, 0x52, 0x4c, 0x22, 0xa6, 0x01, 0x0a, 0x0f, 0x53, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x48, 0x75, 0x6e, 0x67, 0x55, 0x70, 0x52, 0x65, 0x71, 0x12, 0x1a, + 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x35, 0x0a, 0x0a, 0x69, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x40, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, + 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, + 0x6e, 0x66, 0x6f, 0x22, 0x13, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x48, 0x75, 0x6e, + 0x67, 0x55, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x90, 0x02, 0x0a, 0x0f, 0x53, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, + 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x35, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x40, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, + 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, + 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, + 0x2a, 0x0a, 0x10, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6f, 0x70, 0x55, 0x73, 0x65, + 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x22, 0x13, 0x0a, 0x11, 0x53, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x22, 0x6c, 0x0a, 0x18, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x2e, 0x0a, 0x09, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, + 0x71, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0xc3, + 0x01, 0x0a, 0x19, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, 0x0a, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x16, 0x0a, 0x06, 0x69, 0x73, 0x50, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x69, 0x73, 0x50, 0x61, 0x73, 0x73, 0x12, 0x31, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x07, 0x6d, 0x73, + 0x67, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x6d, 0x73, 0x67, + 0x44, 0x61, 0x74, 0x61, 0x32, 0x68, 0x0a, 0x0a, 0x52, 0x74, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x5a, 0x0a, 0x15, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0b, + 0x5a, 0x09, 0x2e, 0x2f, 0x72, 0x74, 0x63, 0x3b, 0x72, 0x74, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_proto_rtc_proto_rawDescOnce sync.Once + file_proto_rtc_proto_rawDescData = file_proto_rtc_proto_rawDesc +) + +func file_proto_rtc_proto_rawDescGZIP() []byte { + file_proto_rtc_proto_rawDescOnce.Do(func() { + file_proto_rtc_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_rtc_proto_rawDescData) + }) + return file_proto_rtc_proto_rawDescData +} + +var file_proto_rtc_proto_msgTypes = make([]protoimpl.MessageInfo, 27) +var file_proto_rtc_proto_goTypes = []interface{}{ + (*CommonResp)(nil), // 0: proto.CommonResp + (*MsgData)(nil), // 1: proto.MsgData + (*GroupInfo)(nil), // 2: proto.GroupInfo + (*GroupMemberFullInfo)(nil), // 3: proto.GroupMemberFullInfo + (*ParticipantMetaData)(nil), // 4: proto.ParticipantMetaData + (*PublicUserInfo)(nil), // 5: proto.PublicUserInfo + (*GetJoinTokenReq)(nil), // 6: proto.GetJoinTokenReq + (*GetJoinTokenResp)(nil), // 7: proto.GetJoinTokenResp + (*OfflinePushInfo)(nil), // 8: proto.OfflinePushInfo + (*SignalReq)(nil), // 9: proto.SignalReq + (*SignalResp)(nil), // 10: proto.SignalResp + (*InvitationInfo)(nil), // 11: proto.InvitationInfo + (*SignalInviteReq)(nil), // 12: proto.SignalInviteReq + (*SignalInviteReply)(nil), // 13: proto.SignalInviteReply + (*SignalInviteInGroupReq)(nil), // 14: proto.SignalInviteInGroupReq + (*SignalInviteInGroupReply)(nil), // 15: proto.SignalInviteInGroupReply + (*SignalCancelReq)(nil), // 16: proto.SignalCancelReq + (*SignalCancelReply)(nil), // 17: proto.SignalCancelReply + (*SignalAcceptReq)(nil), // 18: proto.SignalAcceptReq + (*SignalAcceptReply)(nil), // 19: proto.SignalAcceptReply + (*SignalHungUpReq)(nil), // 20: proto.SignalHungUpReq + (*SignalHungUpReply)(nil), // 21: proto.SignalHungUpReply + (*SignalRejectReq)(nil), // 22: proto.SignalRejectReq + (*SignalRejectReply)(nil), // 23: proto.SignalRejectReply + (*SignalMessageAssembleReq)(nil), // 24: proto.SignalMessageAssembleReq + (*SignalMessageAssembleResp)(nil), // 25: proto.SignalMessageAssembleResp + nil, // 26: proto.MsgData.OptionsEntry +} +var file_proto_rtc_proto_depIdxs = []int32{ + 26, // 0: proto.MsgData.options:type_name -> proto.MsgData.OptionsEntry + 8, // 1: proto.MsgData.offlinePushInfo:type_name -> proto.OfflinePushInfo + 2, // 2: proto.ParticipantMetaData.groupInfo:type_name -> proto.GroupInfo + 3, // 3: proto.ParticipantMetaData.groupMemberInfo:type_name -> proto.GroupMemberFullInfo + 5, // 4: proto.ParticipantMetaData.userInfo:type_name -> proto.PublicUserInfo + 4, // 5: proto.GetJoinTokenReq.metaData:type_name -> proto.ParticipantMetaData + 0, // 6: proto.GetJoinTokenResp.CommonResp:type_name -> proto.CommonResp + 12, // 7: proto.SignalReq.invite:type_name -> proto.SignalInviteReq + 14, // 8: proto.SignalReq.inviteInGroup:type_name -> proto.SignalInviteInGroupReq + 16, // 9: proto.SignalReq.cancel:type_name -> proto.SignalCancelReq + 18, // 10: proto.SignalReq.accept:type_name -> proto.SignalAcceptReq + 20, // 11: proto.SignalReq.hungUp:type_name -> proto.SignalHungUpReq + 22, // 12: proto.SignalReq.reject:type_name -> proto.SignalRejectReq + 13, // 13: proto.SignalResp.invite:type_name -> proto.SignalInviteReply + 15, // 14: proto.SignalResp.inviteInGroup:type_name -> proto.SignalInviteInGroupReply + 17, // 15: proto.SignalResp.cancel:type_name -> proto.SignalCancelReply + 19, // 16: proto.SignalResp.accept:type_name -> proto.SignalAcceptReply + 21, // 17: proto.SignalResp.hungUp:type_name -> proto.SignalHungUpReply + 23, // 18: proto.SignalResp.reject:type_name -> proto.SignalRejectReply + 11, // 19: proto.SignalInviteReq.invitation:type_name -> proto.InvitationInfo + 8, // 20: proto.SignalInviteReq.offlinePushInfo:type_name -> proto.OfflinePushInfo + 4, // 21: proto.SignalInviteReq.participant:type_name -> proto.ParticipantMetaData + 11, // 22: proto.SignalInviteInGroupReq.invitation:type_name -> proto.InvitationInfo + 8, // 23: proto.SignalInviteInGroupReq.offlinePushInfo:type_name -> proto.OfflinePushInfo + 4, // 24: proto.SignalInviteInGroupReq.participant:type_name -> proto.ParticipantMetaData + 11, // 25: proto.SignalCancelReq.invitation:type_name -> proto.InvitationInfo + 8, // 26: proto.SignalCancelReq.offlinePushInfo:type_name -> proto.OfflinePushInfo + 4, // 27: proto.SignalCancelReq.participant:type_name -> proto.ParticipantMetaData + 11, // 28: proto.SignalAcceptReq.invitation:type_name -> proto.InvitationInfo + 8, // 29: proto.SignalAcceptReq.offlinePushInfo:type_name -> proto.OfflinePushInfo + 4, // 30: proto.SignalAcceptReq.participant:type_name -> proto.ParticipantMetaData + 11, // 31: proto.SignalHungUpReq.invitation:type_name -> proto.InvitationInfo + 8, // 32: proto.SignalHungUpReq.offlinePushInfo:type_name -> proto.OfflinePushInfo + 11, // 33: proto.SignalRejectReq.invitation:type_name -> proto.InvitationInfo + 8, // 34: proto.SignalRejectReq.offlinePushInfo:type_name -> proto.OfflinePushInfo + 4, // 35: proto.SignalRejectReq.participant:type_name -> proto.ParticipantMetaData + 9, // 36: proto.SignalMessageAssembleReq.signalReq:type_name -> proto.SignalReq + 0, // 37: proto.SignalMessageAssembleResp.commonResp:type_name -> proto.CommonResp + 10, // 38: proto.SignalMessageAssembleResp.signalResp:type_name -> proto.SignalResp + 1, // 39: proto.SignalMessageAssembleResp.msgData:type_name -> proto.MsgData + 24, // 40: proto.RtcService.SignalMessageAssemble:input_type -> proto.SignalMessageAssembleReq + 25, // 41: proto.RtcService.SignalMessageAssemble:output_type -> proto.SignalMessageAssembleResp + 41, // [41:42] is the sub-list for method output_type + 40, // [40:41] is the sub-list for method input_type + 40, // [40:40] is the sub-list for extension type_name + 40, // [40:40] is the sub-list for extension extendee + 0, // [0:40] is the sub-list for field type_name +} + +func init() { file_proto_rtc_proto_init() } +func file_proto_rtc_proto_init() { + if File_proto_rtc_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_proto_rtc_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommonResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GroupInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GroupMemberFullInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ParticipantMetaData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PublicUserInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetJoinTokenReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields default: return nil } } - file_rtc_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_proto_rtc_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetJoinTokenResp); i { case 0: return &v.state @@ -833,25 +2656,257 @@ func file_rtc_proto_init() { return nil } } + file_proto_rtc_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OfflinePushInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InvitationInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalInviteReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalInviteReply); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalInviteInGroupReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalInviteInGroupReply); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalCancelReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalCancelReply); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalAcceptReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalAcceptReply); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalHungUpReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalHungUpReply); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalRejectReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalRejectReply); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalMessageAssembleReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rtc_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignalMessageAssembleResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_proto_rtc_proto_msgTypes[9].OneofWrappers = []interface{}{ + (*SignalReq_Invite)(nil), + (*SignalReq_InviteInGroup)(nil), + (*SignalReq_Cancel)(nil), + (*SignalReq_Accept)(nil), + (*SignalReq_HungUp)(nil), + (*SignalReq_Reject)(nil), + } + file_proto_rtc_proto_msgTypes[10].OneofWrappers = []interface{}{ + (*SignalResp_Invite)(nil), + (*SignalResp_InviteInGroup)(nil), + (*SignalResp_Cancel)(nil), + (*SignalResp_Accept)(nil), + (*SignalResp_HungUp)(nil), + (*SignalResp_Reject)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_rtc_proto_rawDesc, + RawDescriptor: file_proto_rtc_proto_rawDesc, NumEnums: 0, - NumMessages: 7, + NumMessages: 27, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_rtc_proto_goTypes, - DependencyIndexes: file_rtc_proto_depIdxs, - MessageInfos: file_rtc_proto_msgTypes, + GoTypes: file_proto_rtc_proto_goTypes, + DependencyIndexes: file_proto_rtc_proto_depIdxs, + MessageInfos: file_proto_rtc_proto_msgTypes, }.Build() - File_rtc_proto = out.File - file_rtc_proto_rawDesc = nil - file_rtc_proto_goTypes = nil - file_rtc_proto_depIdxs = nil + File_proto_rtc_proto = out.File + file_proto_rtc_proto_rawDesc = nil + file_proto_rtc_proto_goTypes = nil + file_proto_rtc_proto_depIdxs = nil } // Reference imports to suppress errors if they are not otherwise used. @@ -866,7 +2921,7 @@ const _ = grpc.SupportPackageIsVersion6 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type RtcServiceClient interface { - GetJoinToken(ctx context.Context, in *GetJoinTokenReq, opts ...grpc.CallOption) (*GetJoinTokenResp, error) + SignalMessageAssemble(ctx context.Context, in *SignalMessageAssembleReq, opts ...grpc.CallOption) (*SignalMessageAssembleResp, error) } type rtcServiceClient struct { @@ -877,9 +2932,9 @@ func NewRtcServiceClient(cc grpc.ClientConnInterface) RtcServiceClient { return &rtcServiceClient{cc} } -func (c *rtcServiceClient) GetJoinToken(ctx context.Context, in *GetJoinTokenReq, opts ...grpc.CallOption) (*GetJoinTokenResp, error) { - out := new(GetJoinTokenResp) - err := c.cc.Invoke(ctx, "/rtc.RtcService/GetJoinToken", in, out, opts...) +func (c *rtcServiceClient) SignalMessageAssemble(ctx context.Context, in *SignalMessageAssembleReq, opts ...grpc.CallOption) (*SignalMessageAssembleResp, error) { + out := new(SignalMessageAssembleResp) + err := c.cc.Invoke(ctx, "/proto.RtcService/SignalMessageAssemble", in, out, opts...) if err != nil { return nil, err } @@ -888,48 +2943,48 @@ func (c *rtcServiceClient) GetJoinToken(ctx context.Context, in *GetJoinTokenReq // RtcServiceServer is the server API for RtcService service. type RtcServiceServer interface { - GetJoinToken(context.Context, *GetJoinTokenReq) (*GetJoinTokenResp, error) + SignalMessageAssemble(context.Context, *SignalMessageAssembleReq) (*SignalMessageAssembleResp, error) } // UnimplementedRtcServiceServer can be embedded to have forward compatible implementations. type UnimplementedRtcServiceServer struct { } -func (*UnimplementedRtcServiceServer) GetJoinToken(context.Context, *GetJoinTokenReq) (*GetJoinTokenResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetJoinToken not implemented") +func (*UnimplementedRtcServiceServer) SignalMessageAssemble(context.Context, *SignalMessageAssembleReq) (*SignalMessageAssembleResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method SignalMessageAssemble not implemented") } func RegisterRtcServiceServer(s *grpc.Server, srv RtcServiceServer) { s.RegisterService(&_RtcService_serviceDesc, srv) } -func _RtcService_GetJoinToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetJoinTokenReq) +func _RtcService_SignalMessageAssemble_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SignalMessageAssembleReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(RtcServiceServer).GetJoinToken(ctx, in) + return srv.(RtcServiceServer).SignalMessageAssemble(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/rtc.RtcService/GetJoinToken", + FullMethod: "/proto.RtcService/SignalMessageAssemble", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RtcServiceServer).GetJoinToken(ctx, req.(*GetJoinTokenReq)) + return srv.(RtcServiceServer).SignalMessageAssemble(ctx, req.(*SignalMessageAssembleReq)) } return interceptor(ctx, in, info, handler) } var _RtcService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "rtc.RtcService", + ServiceName: "proto.RtcService", HandlerType: (*RtcServiceServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "GetJoinToken", - Handler: _RtcService_GetJoinToken_Handler, + MethodName: "SignalMessageAssemble", + Handler: _RtcService_SignalMessageAssemble_Handler, }, }, Streams: []grpc.StreamDesc{}, - Metadata: "rtc.proto", + Metadata: "proto/rtc.proto", } diff --git a/pkg/proto/rtc/rtc.proto b/pkg/proto/rtc/rtc.proto index 02fc4358e..ce9ca472b 100644 --- a/pkg/proto/rtc/rtc.proto +++ b/pkg/proto/rtc/rtc.proto @@ -1,12 +1,34 @@ syntax = "proto3"; option go_package = "./rtc;rtc"; -package rtc; +package proto; message CommonResp{ int32 errCode = 1; string errMsg = 2; } +message MsgData { + string sendID = 1; + string recvID = 2; + string groupID = 3; + string clientMsgID = 4; + string serverMsgID = 5; + int32 senderPlatformID = 6; + string senderNickname = 7; + string senderFaceURL = 8; + int32 sessionType = 9; + int32 msgFrom = 10; + int32 contentType = 11; + bytes content = 12; + uint32 seq = 14; + int64 sendTime = 15; + int64 createTime = 16; + int32 status = 17; + map options = 18; + OfflinePushInfo offlinePushInfo = 19; +} + + message GroupInfo{ string groupID = 1; string groupName = 2; @@ -62,8 +84,136 @@ message GetJoinTokenResp{ string liveURL = 3; } -service RtcService { - rpc GetJoinToken(GetJoinTokenReq) returns(GetJoinTokenResp); +message OfflinePushInfo{ + string title = 1; + string desc = 2; + string ex = 3; + string iOSPushSound = 4; + bool iOSBadgeCount = 5; +} + +message SignalReq { + oneof payload { + SignalInviteReq invite = 1; + SignalInviteInGroupReq inviteInGroup= 2; + SignalCancelReq cancel = 3; + SignalAcceptReq accept = 4; + SignalHungUpReq hungUp = 5; + SignalRejectReq reject = 6; + } +} + +message SignalResp { + oneof payload { + SignalInviteReply invite = 1; + SignalInviteInGroupReply inviteInGroup= 2; + SignalCancelReply cancel = 3; + SignalAcceptReply accept = 4; + SignalHungUpReply hungUp = 5; + SignalRejectReply reject = 6; + } +} + +message InvitationInfo { + string inviterUserID = 1; + repeated string inviteeUserIDList = 2; + string customData = 3; + string groupID = 4; + string roomID = 5; + int32 timeout = 6; + string mediaType = 7; + int32 platformID = 8; + int32 sessionType = 9; +} + + +message SignalInviteReq { + string opUserID = 1; + InvitationInfo invitation = 2; + OfflinePushInfo offlinePushInfo = 3; + ParticipantMetaData participant = 4; + +} + +message SignalInviteReply { + string token = 1; + string roomID = 2; + string liveURL = 3; +} + +message SignalInviteInGroupReq { + string opUserID = 1; + InvitationInfo invitation = 2; + OfflinePushInfo offlinePushInfo = 3; + ParticipantMetaData participant = 4; +} + +message SignalInviteInGroupReply { + string token = 1; + string roomID = 2; + string liveURL = 3; +} + +message SignalCancelReq { + string opUserID = 1; + InvitationInfo invitation = 2; + OfflinePushInfo offlinePushInfo = 3; + ParticipantMetaData participant = 4; } +message SignalCancelReply { +} + +message SignalAcceptReq { + string opUserID = 1; + InvitationInfo invitation = 2; + OfflinePushInfo offlinePushInfo = 3; + ParticipantMetaData participant = 4; + int32 opUserPlatformID = 5; +} + +message SignalAcceptReply { + string token = 1; + string roomID = 2; + string liveURL = 3; +} + +message SignalHungUpReq { + string opUserID = 1; + InvitationInfo invitation = 2; + OfflinePushInfo offlinePushInfo = 3; +} + +message SignalHungUpReply { + +} + + +message SignalRejectReq { + string opUserID = 1; + InvitationInfo invitation = 2; + OfflinePushInfo offlinePushInfo = 3; + ParticipantMetaData participant = 4; + int32 opUserPlatformID = 5; +} + +message SignalRejectReply { + +} + +message SignalMessageAssembleReq { + SignalReq signalReq = 1; + string operationID = 2; +} + +message SignalMessageAssembleResp { + CommonResp commonResp = 1; + bool isPass = 2; + SignalResp signalResp = 3; + MsgData msgData = 4; +} + +service RtcService { + rpc SignalMessageAssemble(SignalMessageAssembleReq) returns(SignalMessageAssembleResp); +} From 7d6be79ba8359a264cd604bc171847671922d955 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 5 Apr 2022 10:33:50 +0800 Subject: [PATCH 03/23] tag and set private tips --- .../msg_gateway/gate/open_im_media/room.go | 67 ++--- internal/msg_gateway/gate/validate.go | 275 +++++++++--------- 2 files changed, 165 insertions(+), 177 deletions(-) diff --git a/internal/msg_gateway/gate/open_im_media/room.go b/internal/msg_gateway/gate/open_im_media/room.go index bddd36922..83796da29 100644 --- a/internal/msg_gateway/gate/open_im_media/room.go +++ b/internal/msg_gateway/gate/open_im_media/room.go @@ -1,14 +1,5 @@ package open_im_media -import ( - pbRtc "Open_IM/pkg/proto/rtc" - open_im_sdk "Open_IM/pkg/proto/sdk_ws" - "context" - "errors" - "github.com/jinzhu/copier" - "google.golang.org/grpc" -) - const ( // Address gRPC服务地址 Address = "127.0.0.1:11300" @@ -23,35 +14,35 @@ func NewMedia() *Media { return &Media{} } -func (m *Media) GetJoinToken(room, identity string, operationID string, data *open_im_sdk.ParticipantMetaData) (string, string, error) { - var newData pbRtc.ParticipantMetaData - copier.Copy(&newData, data) - conn, err := grpc.Dial(Address, grpc.WithInsecure()) - if err != nil { - return "", "", err - } - defer conn.Close() - c := pbRtc.NewRtcServiceClient(conn) - req := &pbRtc.GetJoinTokenReq{Room: room, OperationID: operationID, Identity: identity, MetaData: &newData} - resp, err := c.GetJoinToken(context.Background(), req) - if err != nil { - return "", "", err - } - if resp.CommonResp.ErrCode != 0 { - return "", "", errors.New(resp.CommonResp.ErrMsg) - } - return resp.Jwt, resp.LiveURL, nil - //at := auth.NewAccessToken(m.ApiKey, m.ApiSecret) - //grant := &auth.VideoGrant{ - // RoomJoin: true, - // Room: room, - //} - //at.AddGrant(grant). - // SetIdentity(identity). - // SetValidFor(time.Hour) - // - //return at.ToJWT() -} +//func (m *Media) GetJoinToken(room, identity string, operationID string, data *open_im_sdk.ParticipantMetaData) (string, string, error) { +// var newData pbRtc.ParticipantMetaData +// copier.Copy(&newData, data) +// conn, err := grpc.Dial(Address, grpc.WithInsecure()) +// if err != nil { +// return "", "", err +// } +// defer conn.Close() +// c := pbRtc.NewRtcServiceClient(conn) +// req := &pbRtc.GetJoinTokenReq{Room: room, OperationID: operationID, Identity: identity, MetaData: &newData} +// resp, err := c.GetJoinToken(context.Background(), req) +// if err != nil { +// return "", "", err +// } +// if resp.CommonResp.ErrCode != 0 { +// return "", "", errors.New(resp.CommonResp.ErrMsg) +// } +// return resp.Jwt, resp.LiveURL, nil +// //at := auth.NewAccessToken(m.ApiKey, m.ApiSecret) +// //grant := &auth.VideoGrant{ +// // RoomJoin: true, +// // Room: room, +// //} +// //at.AddGrant(grant). +// // SetIdentity(identity). +// // SetValidFor(time.Hour) +// // +// //return at.ToJWT() +//} func init() { //roomClient = lksdk.NewRoomServiceClient(MediaAddress, ApiKey, ApiSecret) diff --git a/internal/msg_gateway/gate/validate.go b/internal/msg_gateway/gate/validate.go index 378cbf1a7..d34883c5c 100644 --- a/internal/msg_gateway/gate/validate.go +++ b/internal/msg_gateway/gate/validate.go @@ -7,12 +7,9 @@ package gate import ( - "Open_IM/internal/msg_gateway/gate/open_im_media" "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" open_im_sdk "Open_IM/pkg/proto/sdk_ws" - "Open_IM/pkg/utils" - "errors" "github.com/golang/protobuf/proto" ) @@ -117,139 +114,139 @@ func (ws *WServer) argsValidate(m *Req, r int32) (isPass bool, errCode int32, er } -func (ws *WServer) signalMessageAssemble(s *open_im_sdk.SignalReq, operationID string) (isPass bool, errCode int32, errMsg string, r *open_im_sdk.SignalResp, msgData *open_im_sdk.MsgData) { - var msg open_im_sdk.MsgData - var resp open_im_sdk.SignalResp - media := open_im_media.NewMedia() - msg.MsgFrom = constant.UserMsgType - msg.ContentType = constant.SignalingNotification - reqData, e := proto.Marshal(s) - if e != nil { - return false, 201, e.Error(), nil, nil - } - msg.Content = reqData - msg.CreateTime = utils.GetCurrentTimestampByMill() - options := make(map[string]bool, 6) - utils.SetSwitchFromOptions(options, constant.IsHistory, false) - utils.SetSwitchFromOptions(options, constant.IsPersistent, false) - utils.SetSwitchFromOptions(options, constant.IsSenderSync, true) - utils.SetSwitchFromOptions(options, constant.IsConversationUpdate, false) - utils.SetSwitchFromOptions(options, constant.IsSenderConversationUpdate, false) - utils.SetSwitchFromOptions(options, constant.IsUnreadCount, false) - utils.SetSwitchFromOptions(options, constant.IsOfflinePush, true) - msg.Options = options - switch payload := s.Payload.(type) { - case *open_im_sdk.SignalReq_Invite: - token, liveURL, err2 := media.GetJoinToken(payload.Invite.Invitation.RoomID, payload.Invite.Invitation.InviterUserID, operationID, payload.Invite.Participant) - if err2 != nil { - return false, 202, err2.Error(), nil, nil - } - invite := open_im_sdk.SignalResp_Invite{&open_im_sdk.SignalInviteReply{ - Token: token, - RoomID: payload.Invite.Invitation.RoomID, - LiveURL: liveURL, - }} - resp.Payload = &invite - msg.SenderPlatformID = payload.Invite.Invitation.PlatformID - msg.SessionType = payload.Invite.Invitation.SessionType - msg.OfflinePushInfo = payload.Invite.OfflinePushInfo - msg.SendID = payload.Invite.Invitation.InviterUserID - if len(payload.Invite.Invitation.InviteeUserIDList) > 0 { - msg.RecvID = payload.Invite.Invitation.InviteeUserIDList[0] - } else { - return false, 203, errors.New("InviteeUserIDList is null").Error(), nil, nil - } - msg.ClientMsgID = utils.GetMsgID(payload.Invite.Invitation.InviterUserID) - return true, 0, "", &resp, &msg - case *open_im_sdk.SignalReq_InviteInGroup: - token, liveURL, err2 := media.GetJoinToken(payload.InviteInGroup.Invitation.RoomID, payload.InviteInGroup.Invitation.InviterUserID, operationID, payload.InviteInGroup.Participant) - if err2 != nil { - return false, 204, err2.Error(), nil, nil - } - inviteGroup := open_im_sdk.SignalResp_InviteInGroup{&open_im_sdk.SignalInviteInGroupReply{ - RoomID: payload.InviteInGroup.Invitation.RoomID, - Token: token, - LiveURL: liveURL, - }} - resp.Payload = &inviteGroup - msg.SenderPlatformID = payload.InviteInGroup.Invitation.PlatformID - msg.SessionType = payload.InviteInGroup.Invitation.SessionType - msg.OfflinePushInfo = payload.InviteInGroup.OfflinePushInfo - msg.SendID = payload.InviteInGroup.Invitation.InviterUserID - if len(payload.InviteInGroup.Invitation.InviteeUserIDList) > 0 { - msg.GroupID = payload.InviteInGroup.Invitation.GroupID - } else { - return false, 205, errors.New("InviteeUserIDList is null").Error(), nil, nil - } - msg.ClientMsgID = utils.GetMsgID(payload.InviteInGroup.Invitation.InviterUserID) - - return true, 0, "", &resp, &msg - case *open_im_sdk.SignalReq_Cancel: - cancel := open_im_sdk.SignalResp_Cancel{&open_im_sdk.SignalCancelReply{}} - resp.Payload = &cancel - msg.OfflinePushInfo = payload.Cancel.OfflinePushInfo - msg.SendID = payload.Cancel.Invitation.InviterUserID - msg.SenderPlatformID = payload.Cancel.Invitation.PlatformID - msg.SessionType = payload.Cancel.Invitation.SessionType - if len(payload.Cancel.Invitation.InviteeUserIDList) > 0 { - switch payload.Cancel.Invitation.SessionType { - case constant.SingleChatType: - msg.RecvID = payload.Cancel.Invitation.InviteeUserIDList[0] - case constant.GroupChatType: - msg.GroupID = payload.Cancel.Invitation.GroupID - } - } else { - return false, 206, errors.New("InviteeUserIDList is null").Error(), nil, nil - } - msg.ClientMsgID = utils.GetMsgID(payload.Cancel.OpUserID) - return true, 0, "", &resp, &msg - case *open_im_sdk.SignalReq_Accept: - token, liveURL, err2 := media.GetJoinToken(payload.Accept.Invitation.RoomID, payload.Accept.OpUserID, operationID, payload.Accept.Participant) - if err2 != nil { - return false, 207, err2.Error(), nil, nil - } - accept := open_im_sdk.SignalResp_Accept{&open_im_sdk.SignalAcceptReply{ - Token: token, - LiveURL: liveURL, - RoomID: payload.Accept.Invitation.RoomID, - }} - resp.Payload = &accept - msg.OfflinePushInfo = payload.Accept.OfflinePushInfo - msg.SendID = payload.Accept.OpUserID - msg.SenderPlatformID = payload.Accept.Invitation.PlatformID - msg.SessionType = payload.Accept.Invitation.SessionType - if len(payload.Accept.Invitation.InviteeUserIDList) > 0 { - switch payload.Accept.Invitation.SessionType { - case constant.SingleChatType: - msg.RecvID = payload.Accept.Invitation.InviterUserID - case constant.GroupChatType: - msg.GroupID = payload.Accept.Invitation.GroupID - } - } else { - return false, 208, errors.New("InviteeUserIDList is null").Error(), nil, nil - } - msg.ClientMsgID = utils.GetMsgID(payload.Accept.OpUserID) - return true, 0, "", &resp, &msg - case *open_im_sdk.SignalReq_HungUp: - case *open_im_sdk.SignalReq_Reject: - reject := open_im_sdk.SignalResp_Reject{&open_im_sdk.SignalRejectReply{}} - resp.Payload = &reject - msg.OfflinePushInfo = payload.Reject.OfflinePushInfo - msg.SendID = payload.Reject.OpUserID - msg.SenderPlatformID = payload.Reject.Invitation.PlatformID - msg.SessionType = payload.Reject.Invitation.SessionType - if len(payload.Reject.Invitation.InviteeUserIDList) > 0 { - switch payload.Reject.Invitation.SessionType { - case constant.SingleChatType: - msg.RecvID = payload.Reject.Invitation.InviterUserID - case constant.GroupChatType: - msg.GroupID = payload.Reject.Invitation.GroupID - } - } else { - return false, 209, errors.New("InviteeUserIDList is null").Error(), nil, nil - } - msg.ClientMsgID = utils.GetMsgID(payload.Reject.OpUserID) - return true, 0, "", &resp, &msg - } - return false, 210, errors.New("InviteeUserIDList is null").Error(), nil, nil -} +//func (ws *WServer) signalMessageAssemble(s *open_im_sdk.SignalReq, operationID string) (isPass bool, errCode int32, errMsg string, r *open_im_sdk.SignalResp, msgData *open_im_sdk.MsgData) { +// var msg open_im_sdk.MsgData +// var resp open_im_sdk.SignalResp +// media := open_im_media.NewMedia() +// msg.MsgFrom = constant.UserMsgType +// msg.ContentType = constant.SignalingNotification +// reqData, e := proto.Marshal(s) +// if e != nil { +// return false, 201, e.Error(), nil, nil +// } +// msg.Content = reqData +// msg.CreateTime = utils.GetCurrentTimestampByMill() +// options := make(map[string]bool, 6) +// utils.SetSwitchFromOptions(options, constant.IsHistory, false) +// utils.SetSwitchFromOptions(options, constant.IsPersistent, false) +// utils.SetSwitchFromOptions(options, constant.IsSenderSync, true) +// utils.SetSwitchFromOptions(options, constant.IsConversationUpdate, false) +// utils.SetSwitchFromOptions(options, constant.IsSenderConversationUpdate, false) +// utils.SetSwitchFromOptions(options, constant.IsUnreadCount, false) +// utils.SetSwitchFromOptions(options, constant.IsOfflinePush, true) +// msg.Options = options +// switch payload := s.Payload.(type) { +// case *open_im_sdk.SignalReq_Invite: +// token, liveURL, err2 := media.GetJoinToken(payload.Invite.Invitation.RoomID, payload.Invite.Invitation.InviterUserID, operationID, payload.Invite.Participant) +// if err2 != nil { +// return false, 202, err2.Error(), nil, nil +// } +// invite := open_im_sdk.SignalResp_Invite{&open_im_sdk.SignalInviteReply{ +// Token: token, +// RoomID: payload.Invite.Invitation.RoomID, +// LiveURL: liveURL, +// }} +// resp.Payload = &invite +// msg.SenderPlatformID = payload.Invite.Invitation.PlatformID +// msg.SessionType = payload.Invite.Invitation.SessionType +// msg.OfflinePushInfo = payload.Invite.OfflinePushInfo +// msg.SendID = payload.Invite.Invitation.InviterUserID +// if len(payload.Invite.Invitation.InviteeUserIDList) > 0 { +// msg.RecvID = payload.Invite.Invitation.InviteeUserIDList[0] +// } else { +// return false, 203, errors.New("InviteeUserIDList is null").Error(), nil, nil +// } +// msg.ClientMsgID = utils.GetMsgID(payload.Invite.Invitation.InviterUserID) +// return true, 0, "", &resp, &msg +// case *open_im_sdk.SignalReq_InviteInGroup: +// token, liveURL, err2 := media.GetJoinToken(payload.InviteInGroup.Invitation.RoomID, payload.InviteInGroup.Invitation.InviterUserID, operationID, payload.InviteInGroup.Participant) +// if err2 != nil { +// return false, 204, err2.Error(), nil, nil +// } +// inviteGroup := open_im_sdk.SignalResp_InviteInGroup{&open_im_sdk.SignalInviteInGroupReply{ +// RoomID: payload.InviteInGroup.Invitation.RoomID, +// Token: token, +// LiveURL: liveURL, +// }} +// resp.Payload = &inviteGroup +// msg.SenderPlatformID = payload.InviteInGroup.Invitation.PlatformID +// msg.SessionType = payload.InviteInGroup.Invitation.SessionType +// msg.OfflinePushInfo = payload.InviteInGroup.OfflinePushInfo +// msg.SendID = payload.InviteInGroup.Invitation.InviterUserID +// if len(payload.InviteInGroup.Invitation.InviteeUserIDList) > 0 { +// msg.GroupID = payload.InviteInGroup.Invitation.GroupID +// } else { +// return false, 205, errors.New("InviteeUserIDList is null").Error(), nil, nil +// } +// msg.ClientMsgID = utils.GetMsgID(payload.InviteInGroup.Invitation.InviterUserID) +// +// return true, 0, "", &resp, &msg +// case *open_im_sdk.SignalReq_Cancel: +// cancel := open_im_sdk.SignalResp_Cancel{&open_im_sdk.SignalCancelReply{}} +// resp.Payload = &cancel +// msg.OfflinePushInfo = payload.Cancel.OfflinePushInfo +// msg.SendID = payload.Cancel.Invitation.InviterUserID +// msg.SenderPlatformID = payload.Cancel.Invitation.PlatformID +// msg.SessionType = payload.Cancel.Invitation.SessionType +// if len(payload.Cancel.Invitation.InviteeUserIDList) > 0 { +// switch payload.Cancel.Invitation.SessionType { +// case constant.SingleChatType: +// msg.RecvID = payload.Cancel.Invitation.InviteeUserIDList[0] +// case constant.GroupChatType: +// msg.GroupID = payload.Cancel.Invitation.GroupID +// } +// } else { +// return false, 206, errors.New("InviteeUserIDList is null").Error(), nil, nil +// } +// msg.ClientMsgID = utils.GetMsgID(payload.Cancel.OpUserID) +// return true, 0, "", &resp, &msg +// case *open_im_sdk.SignalReq_Accept: +// token, liveURL, err2 := media.GetJoinToken(payload.Accept.Invitation.RoomID, payload.Accept.OpUserID, operationID, payload.Accept.Participant) +// if err2 != nil { +// return false, 207, err2.Error(), nil, nil +// } +// accept := open_im_sdk.SignalResp_Accept{&open_im_sdk.SignalAcceptReply{ +// Token: token, +// LiveURL: liveURL, +// RoomID: payload.Accept.Invitation.RoomID, +// }} +// resp.Payload = &accept +// msg.OfflinePushInfo = payload.Accept.OfflinePushInfo +// msg.SendID = payload.Accept.OpUserID +// msg.SenderPlatformID = payload.Accept.Invitation.PlatformID +// msg.SessionType = payload.Accept.Invitation.SessionType +// if len(payload.Accept.Invitation.InviteeUserIDList) > 0 { +// switch payload.Accept.Invitation.SessionType { +// case constant.SingleChatType: +// msg.RecvID = payload.Accept.Invitation.InviterUserID +// case constant.GroupChatType: +// msg.GroupID = payload.Accept.Invitation.GroupID +// } +// } else { +// return false, 208, errors.New("InviteeUserIDList is null").Error(), nil, nil +// } +// msg.ClientMsgID = utils.GetMsgID(payload.Accept.OpUserID) +// return true, 0, "", &resp, &msg +// case *open_im_sdk.SignalReq_HungUp: +// case *open_im_sdk.SignalReq_Reject: +// reject := open_im_sdk.SignalResp_Reject{&open_im_sdk.SignalRejectReply{}} +// resp.Payload = &reject +// msg.OfflinePushInfo = payload.Reject.OfflinePushInfo +// msg.SendID = payload.Reject.OpUserID +// msg.SenderPlatformID = payload.Reject.Invitation.PlatformID +// msg.SessionType = payload.Reject.Invitation.SessionType +// if len(payload.Reject.Invitation.InviteeUserIDList) > 0 { +// switch payload.Reject.Invitation.SessionType { +// case constant.SingleChatType: +// msg.RecvID = payload.Reject.Invitation.InviterUserID +// case constant.GroupChatType: +// msg.GroupID = payload.Reject.Invitation.GroupID +// } +// } else { +// return false, 209, errors.New("InviteeUserIDList is null").Error(), nil, nil +// } +// msg.ClientMsgID = utils.GetMsgID(payload.Reject.OpUserID) +// return true, 0, "", &resp, &msg +// } +// return false, 210, errors.New("InviteeUserIDList is null").Error(), nil, nil +//} From 634584400a8249fc8a9b7a6fb780e59c070c01f7 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 5 Apr 2022 11:50:26 +0800 Subject: [PATCH 04/23] tag and set private tips --- internal/msg_gateway/gate/logic.go | 3 ++- internal/msg_gateway/gate/validate.go | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index be3053e6a..ab3618c44 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -214,7 +214,8 @@ func (ws *WServer) sendSignalMsgReq(conn *UserConn, m *Req) { } rtcClient := pbRtc.NewRtcServiceClient(connGrpc) req := &pbRtc.SignalMessageAssembleReq{ - SignalReq: pData.(*pbRtc.SignalReq), + SignalReq: pData.(*pbRtc.SignalReq), + OperationID: m.OperationID, } respPb, err := rtcClient.SignalMessageAssemble(context.Background(), req) if err != nil { diff --git a/internal/msg_gateway/gate/validate.go b/internal/msg_gateway/gate/validate.go index d34883c5c..329f93655 100644 --- a/internal/msg_gateway/gate/validate.go +++ b/internal/msg_gateway/gate/validate.go @@ -9,6 +9,7 @@ package gate import ( "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" + pbRtc "Open_IM/pkg/proto/rtc" open_im_sdk "Open_IM/pkg/proto/sdk_ws" "github.com/golang/protobuf/proto" ) @@ -71,7 +72,7 @@ func (ws *WServer) argsValidate(m *Req, r int32) (isPass bool, errCode int32, er } return true, 0, "", data case constant.WSSendSignalMsg: - data := open_im_sdk.SignalReq{} + data := pbRtc.SignalReq{} if err := proto.Unmarshal(m.Data, &data); err != nil { log.ErrorByKv("Decode Data struct err", "", "err", err.Error(), "reqIdentifier", r) return false, 203, err.Error(), nil From 26f8172b1a7f76a60bfca68aef84c110554527a8 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 5 Apr 2022 11:55:40 +0800 Subject: [PATCH 05/23] tag and set private tips --- internal/msg_gateway/gate/logic.go | 6 +++--- pkg/proto/sdk_ws/ws.proto | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index ab3618c44..a8220a5e6 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -224,13 +224,13 @@ func (ws *WServer) sendSignalMsgReq(conn *UserConn, m *Req) { return } signalResp.Payload = respPb.SignalResp.Payload - msgData := &sdk_ws.MsgData{} - utils.CopyStructFields(msgData, respPb.MsgData) + msgData := sdk_ws.MsgData{} + utils.CopyStructFields(&msgData, respPb.MsgData) if respPb.IsPass { pbData := pbChat.SendMsgReq{ Token: m.Token, OperationID: m.OperationID, - MsgData: msgData, + MsgData: &msgData, } log.NewInfo(m.OperationID, "Ws call success to sendSignalMsgReq middle", m.ReqIdentifier, m.SendID, m.MsgIncr, msgData) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName) diff --git a/pkg/proto/sdk_ws/ws.proto b/pkg/proto/sdk_ws/ws.proto index 1f9cb5bb1..12ff7b15d 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -506,7 +506,7 @@ message DelMsgListReq{ } message DelMsgListResp{ - int32 errCode = 1; + int32 errCode = 1; string errMsg = 2; } From e7bc82d1527dc19f6d26dab5358a1a6e5d866a74 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 5 Apr 2022 12:03:54 +0800 Subject: [PATCH 06/23] tag and set private tips --- internal/msg_gateway/gate/logic.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index a8220a5e6..239f4711a 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -223,6 +223,7 @@ func (ws *WServer) sendSignalMsgReq(conn *UserConn, m *Req) { ws.sendSignalMsgResp(conn, 204, "grpc SignalMessageAssemble failed: "+err.Error(), m, &signalResp) return } + log.NewInfo(m.OperationID, utils.GetSelfFuncName(), respPb.String()) signalResp.Payload = respPb.SignalResp.Payload msgData := sdk_ws.MsgData{} utils.CopyStructFields(&msgData, respPb.MsgData) From 146aa497f9ad6a8a110451a3a72133926ebba186 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 5 Apr 2022 12:09:55 +0800 Subject: [PATCH 07/23] tag and set private tips --- pkg/common/config/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index d93385632..3c597fbbf 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -378,7 +378,7 @@ type config struct { } } Rtc struct { - Port int `yaml:"rtcPort"` + Port int `yaml:"port"` Address string `yaml:"address"` } `yaml:"rtc"` } From 6ba51fb3382c79787af0b6e15a85fd0eea2af75c Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 5 Apr 2022 14:27:13 +0800 Subject: [PATCH 08/23] tag and set private tips --- internal/msg_gateway/gate/logic.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index 239f4711a..4368c066a 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -219,20 +219,21 @@ func (ws *WServer) sendSignalMsgReq(conn *UserConn, m *Req) { } respPb, err := rtcClient.SignalMessageAssemble(context.Background(), req) if err != nil { - log.NewError(m.OperationID, utils.GetSelfFuncName(), "SignalMessageAssemble", err.Error()) + log.NewError(m.OperationID, utils.GetSelfFuncName(), "SignalMessageAssemble", err.Error(), config.Config.Rtc.Address+":"+strconv.Itoa(config.Config.Rtc.Port)) ws.sendSignalMsgResp(conn, 204, "grpc SignalMessageAssemble failed: "+err.Error(), m, &signalResp) return } - log.NewInfo(m.OperationID, utils.GetSelfFuncName(), respPb.String()) signalResp.Payload = respPb.SignalResp.Payload msgData := sdk_ws.MsgData{} utils.CopyStructFields(&msgData, respPb.MsgData) + log.NewInfo(m.OperationID, utils.GetSelfFuncName(), respPb.String()) if respPb.IsPass { pbData := pbChat.SendMsgReq{ Token: m.Token, OperationID: m.OperationID, MsgData: &msgData, } + log.NewInfo(m.OperationID, utils.GetSelfFuncName(), "pbData: ", pbData) log.NewInfo(m.OperationID, "Ws call success to sendSignalMsgReq middle", m.ReqIdentifier, m.SendID, m.MsgIncr, msgData) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName) client := pbChat.NewChatClient(etcdConn) From 5a9b5db99b9812884746f4e1d33a5ce2e44fd656 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 5 Apr 2022 14:47:47 +0800 Subject: [PATCH 09/23] Check environment before deployment --- cmd/Open-IM-SDK-Core | 2 +- script/env_check.sh | 30 +++++++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 7b66c0ab7..650b201aa 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 7b66c0ab78be494ce2cfe23de37543dd11c2d354 +Subproject commit 650b201aa792c30261ddc94be07b809e67238b78 diff --git a/script/env_check.sh b/script/env_check.sh index a3a9857f6..2d81390f7 100644 --- a/script/env_check.sh +++ b/script/env_check.sh @@ -1,12 +1,36 @@ #!/usr/bin/env bash source ./style_info.cfg -echo -e "check environment......................................." +echo -e "check login user........................................" +user=`whoami` +if [ $user == "root" ] ; then + echo -e ${GREEN_PREFIX} "ok: login user is root" ${COLOR_SUFFIX} +else + echo -e ${RED_PREFIX}"Warning: The current user is not root "${COLOR_SUFFIX} +fi + + + +echo -e "check docker............................................" +docker_running=`systemctl status docker | grep running | grep active | wc -l` + +docker_version=`docker-compose -v; docker -v` + +if [ $docker_running -gt 0 ]; then + echo -e ${GREEN_PREFIX} "ok: docker is running" ${COLOR_SUFFIX} + echo -e ${GREEN_PREFIX} $docker_version ${COLOR_SUFFIX} + +else + echo -e ${RED_PREFIX}"docker not running"${COLOR_SUFFIX} +fi + + +echo -e "check environment......................................." SYSTEM=`uname -s` if [ $SYSTEM != "Linux" ] ; then echo -e ${RED_PREFIX}"Warning: Currently only Linux is supported"${COLOR_SUFFIX} else - echo -e ${GREEN_PREFIX} "Linux system is ok"${COLOR_SUFFIX} + echo -e ${GREEN_PREFIX} "ok: system is linux"${COLOR_SUFFIX} fi echo -e "check memory............................................" @@ -15,5 +39,5 @@ if [ $available -lt 2000 ] ; then echo -e ${RED_PREFIX}"Warning: Your memory not enough, available is: " "$available"m${COLOR_SUFFIX}"\c" echo -e ${RED_PREFIX}", must be greater than 2000m"${COLOR_SUFFIX} else - echo -e ${GREEN_PREFIX} "Memory is ok, available is: "$available"m${COLOR_SUFFIX}" + echo -e ${GREEN_PREFIX} "ok: available memory is: "$available"m${COLOR_SUFFIX}" fi From 2945e6f8bf96e460345b08cdea3ca660b4f3fe38 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Tue, 5 Apr 2022 14:56:29 +0800 Subject: [PATCH 10/23] test --- cmd/Open-IM-SDK-Core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 7b66c0ab7..ec6685f88 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 7b66c0ab78be494ce2cfe23de37543dd11c2d354 +Subproject commit ec6685f881f4280810184d5d3af2cc10392f1488 From f87038622bdf6ca9eeba2e12eba136a9911fcf28 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 5 Apr 2022 15:07:34 +0800 Subject: [PATCH 11/23] set gin log --- cmd/Open-IM-SDK-Core | 2 +- cmd/open_im_api/main.go | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 650b201aa..e2b32de2f 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 650b201aa792c30261ddc94be07b809e67238b78 +Subproject commit e2b32de2f93ff46662104833c8de5d5b44a2f25d diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 45843432e..ce89a8564 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -14,6 +14,8 @@ import ( "Open_IM/pkg/common/log" "Open_IM/pkg/utils" "flag" + "io" + "os" "strconv" "github.com/gin-gonic/gin" @@ -21,7 +23,11 @@ import ( ) func main() { + gin.SetMode(gin.ReleaseMode) + f, _ := os.Create("../logs/api.log") + gin.DefaultWriter = io.MultiWriter(f) + r := gin.Default() r.Use(utils.CorsHandler()) // user routing group, which handles user registration and login services From 0a8fdc6cc88ce93e6b64fa2dd5b7ebbbc264b971 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 5 Apr 2022 16:24:34 +0800 Subject: [PATCH 12/23] set gin log --- cmd/open_im_demo/main.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cmd/open_im_demo/main.go b/cmd/open_im_demo/main.go index 58f5826db..d7688d4dd 100644 --- a/cmd/open_im_demo/main.go +++ b/cmd/open_im_demo/main.go @@ -6,12 +6,17 @@ import ( "Open_IM/pkg/common/log" "Open_IM/pkg/utils" "flag" + "io" + "os" "strconv" "github.com/gin-gonic/gin" ) func main() { + gin.SetMode(gin.ReleaseMode) + f, _ := os.Create("../logs/api.log") + gin.DefaultWriter = io.MultiWriter(f) r := gin.Default() r.Use(utils.CorsHandler()) From 6efe13d142a1373865ad683bf0e4381071e1f4cb Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 5 Apr 2022 16:41:37 +0800 Subject: [PATCH 13/23] log --- cmd/open_im_api/main.go | 3 +++ pkg/common/config/config.go | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index ce89a8564..7f1546022 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -10,6 +10,7 @@ import ( "Open_IM/internal/api/office" apiThird "Open_IM/internal/api/third" "Open_IM/internal/api/user" + "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" "Open_IM/pkg/utils" @@ -30,6 +31,8 @@ func main() { r := gin.Default() r.Use(utils.CorsHandler()) + + log.Info("load config: ", config.Config) // user routing group, which handles user registration and login services userRouterGroup := r.Group("/user") { diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 3c597fbbf..8b174f993 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -1,7 +1,6 @@ package config import ( - "fmt" "io/ioutil" "os" "path/filepath" @@ -420,5 +419,4 @@ func init() { if err = yaml.Unmarshal(bytes, &Config); err != nil { panic(err.Error()) } - fmt.Println("load config: ", Config) } From f58c94146a9ec58a90e1e486e9968b2d259a16c0 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Tue, 5 Apr 2022 17:20:22 +0800 Subject: [PATCH 14/23] test --- internal/msg_gateway/gate/logic.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index 4368c066a..64b5036d3 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -258,7 +258,7 @@ func (ws *WServer) sendSignalMsgReq(conn *UserConn, m *Req) { } func (ws *WServer) sendSignalMsgResp(conn *UserConn, errCode int32, errMsg string, m *Req, pb *pbRtc.SignalResp) { // := make(map[string]interface{}) - + log.Info(m.OperationID, "this is a test", pb.String()) b, _ := proto.Marshal(pb) mReply := Resp{ ReqIdentifier: m.ReqIdentifier, From 577a9249d15500ade4be2a9ea80504419988a1c0 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Tue, 5 Apr 2022 17:31:32 +0800 Subject: [PATCH 15/23] test --- internal/msg_gateway/gate/logic.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index 64b5036d3..567b4e8c1 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -258,7 +258,7 @@ func (ws *WServer) sendSignalMsgReq(conn *UserConn, m *Req) { } func (ws *WServer) sendSignalMsgResp(conn *UserConn, errCode int32, errMsg string, m *Req, pb *pbRtc.SignalResp) { // := make(map[string]interface{}) - log.Info(m.OperationID, "this is a test", pb.String()) + log.Debug(m.OperationID, "SignalMsgResp is", pb.String()) b, _ := proto.Marshal(pb) mReply := Resp{ ReqIdentifier: m.ReqIdentifier, From 08eba71c8afcfb7a0fa20985c3e98515c6ef84a4 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Tue, 5 Apr 2022 17:50:26 +0800 Subject: [PATCH 16/23] remove timer --- script/docker_start_all.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/script/docker_start_all.sh b/script/docker_start_all.sh index 09f0d162b..99887bff9 100644 --- a/script/docker_start_all.sh +++ b/script/docker_start_all.sh @@ -9,7 +9,6 @@ need_to_start_server_shell=( push_start.sh msg_transfer_start.sh sdk_svr_start.sh - timer_start.sh demo_svr_start.sh ) From 0232f522819f6d89a7b802e70a5b0398a52dd90a Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 5 Apr 2022 19:31:35 +0800 Subject: [PATCH 17/23] log --- cmd/open_im_api/main.go | 6 ++-- cmd/open_im_demo/main.go | 7 +++-- cmd/open_im_msg_gateway/main.go | 3 ++ cmd/open_im_msg_transfer/main.go | 3 ++ cmd/open_im_push/main.go | 3 ++ cmd/open_im_timer_task/main.go | 47 ++++++++++++++--------------- internal/api/third/minio_init.go | 17 ++++++----- internal/msg_gateway/gate/init.go | 5 ++- internal/msg_transfer/logic/init.go | 5 ++- internal/push/logic/init.go | 3 +- pkg/common/db/model.go | 12 ++++---- 11 files changed, 58 insertions(+), 53 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 7f1546022..8e76357f7 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -11,7 +11,6 @@ import ( apiThird "Open_IM/internal/api/third" "Open_IM/internal/api/user" "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" "Open_IM/pkg/utils" "flag" @@ -21,10 +20,11 @@ import ( "github.com/gin-gonic/gin" //"syscall" + "Open_IM/pkg/common/constant" ) func main() { - + log.NewPrivateLog(constant.LogFileName) gin.SetMode(gin.ReleaseMode) f, _ := os.Create("../logs/api.log") gin.DefaultWriter = io.MultiWriter(f) @@ -136,7 +136,7 @@ func main() { officeGroup.POST("/get_send_tag_log", office.GetTagSendLogs) } apiThird.MinioInit() - log.NewPrivateLog(constant.LogFileName) + log.Info("", "MinioInit fin") ginPort := flag.Int("port", 10000, "get ginServerPort from cmd,default 10000 as port") flag.Parse() r.Run(":" + strconv.Itoa(*ginPort)) diff --git a/cmd/open_im_demo/main.go b/cmd/open_im_demo/main.go index d7688d4dd..c35675e20 100644 --- a/cmd/open_im_demo/main.go +++ b/cmd/open_im_demo/main.go @@ -2,18 +2,19 @@ package main import ( "Open_IM/internal/demo/register" - "Open_IM/pkg/common/constant" - "Open_IM/pkg/common/log" "Open_IM/pkg/utils" "flag" "io" "os" "strconv" + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/log" "github.com/gin-gonic/gin" ) func main() { + log.NewPrivateLog(constant.LogFileName) gin.SetMode(gin.ReleaseMode) f, _ := os.Create("../logs/api.log") gin.DefaultWriter = io.MultiWriter(f) @@ -29,7 +30,7 @@ func main() { authRouterGroup.POST("/login", register.Login) authRouterGroup.POST("/reset_password", register.ResetPassword) } - log.NewPrivateLog(constant.LogFileName) + ginPort := flag.Int("port", 42233, "get ginServerPort from cmd,default 42233 as port") flag.Parse() r.Run(":" + strconv.Itoa(*ginPort)) diff --git a/cmd/open_im_msg_gateway/main.go b/cmd/open_im_msg_gateway/main.go index 196e6c005..5296c9bcf 100644 --- a/cmd/open_im_msg_gateway/main.go +++ b/cmd/open_im_msg_gateway/main.go @@ -2,11 +2,14 @@ package main import ( "Open_IM/internal/msg_gateway/gate" + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/log" "flag" "sync" ) func main() { + log.NewPrivateLog(constant.LogFileName) rpcPort := flag.Int("rpc_port", 10400, "rpc listening port") wsPort := flag.Int("ws_port", 17778, "ws listening port") flag.Parse() diff --git a/cmd/open_im_msg_transfer/main.go b/cmd/open_im_msg_transfer/main.go index c5487de26..2a54ac1d8 100644 --- a/cmd/open_im_msg_transfer/main.go +++ b/cmd/open_im_msg_transfer/main.go @@ -2,12 +2,15 @@ package main import ( "Open_IM/internal/msg_transfer/logic" + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/log" "sync" ) func main() { var wg sync.WaitGroup wg.Add(1) + log.NewPrivateLog(constant.LogFileName) logic.Init() logic.Run() wg.Wait() diff --git a/cmd/open_im_push/main.go b/cmd/open_im_push/main.go index 590793fbe..ba8dc65c1 100644 --- a/cmd/open_im_push/main.go +++ b/cmd/open_im_push/main.go @@ -2,6 +2,8 @@ package main import ( "Open_IM/internal/push/logic" + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/log" "flag" "sync" ) @@ -11,6 +13,7 @@ func main() { flag.Parse() var wg sync.WaitGroup wg.Add(1) + log.NewPrivateLog(constant.LogFileName) logic.Init(*rpcPort) logic.Run() wg.Wait() diff --git a/cmd/open_im_timer_task/main.go b/cmd/open_im_timer_task/main.go index 37265e285..20d9a4d1c 100644 --- a/cmd/open_im_timer_task/main.go +++ b/cmd/open_im_timer_task/main.go @@ -2,10 +2,7 @@ package main import ( "Open_IM/pkg/common/constant" - commonDB "Open_IM/pkg/common/db" - "Open_IM/pkg/common/db/mysql_model/im_mysql_model" "Open_IM/pkg/common/log" - "time" ) func main() { @@ -40,27 +37,27 @@ func main() { // time.Sleep(time.Duration(sleepTime) * time.Second) // } //} - for { - uidList, err := im_mysql_model.SelectAllUserID() - if err != nil { - //log.NewError("999999", err.Error()) - } else { - for _, v := range uidList { - minSeq, err := commonDB.DB.GetMinSeqFromMongo(v) - if err != nil { - //log.NewError("999999", "get user minSeq err", err.Error(), v) - continue - } else { - err := commonDB.DB.SetUserMinSeq(v, minSeq) - if err != nil { - //log.NewError("999999", "set user minSeq err", err.Error(), v) - } - } - time.Sleep(time.Duration(100) * time.Millisecond) - } - - } - - } + //for { + // uidList, err := im_mysql_model.SelectAllUserID() + // if err != nil { + // //log.NewError("999999", err.Error()) + // } else { + // for _, v := range uidList { + // minSeq, err := commonDB.DB.GetMinSeqFromMongo(v) + // if err != nil { + // //log.NewError("999999", "get user minSeq err", err.Error(), v) + // continue + // } else { + // err := commonDB.DB.SetUserMinSeq(v, minSeq) + // if err != nil { + // //log.NewError("999999", "set user minSeq err", err.Error(), v) + // } + // } + // time.Sleep(time.Duration(100) * time.Millisecond) + // } + // + // } + // + //} } diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index 564d19a1e..9a059cc0c 100644 --- a/internal/api/third/minio_init.go +++ b/internal/api/third/minio_init.go @@ -15,10 +15,11 @@ var ( ) func MinioInit() { - log.NewInfo("", utils.GetSelfFuncName()) + operationID := utils.OperationIDGenerator() + log.NewInfo(operationID, utils.GetSelfFuncName()) minioUrl, err := url2.Parse(config.Config.Credential.Minio.Endpoint) if err != nil { - log.NewError("", utils.GetSelfFuncName(), "parse failed, please check config/config.yaml", err.Error()) + log.NewError(operationID, utils.GetSelfFuncName(), "parse failed, please check config/config.yaml", err.Error()) return } minioClient, err = minio.New(minioUrl.Host, &minio.Options{ @@ -26,7 +27,7 @@ func MinioInit() { Secure: false, }) if err != nil { - log.NewError("", utils.GetSelfFuncName(), "init minio client failed", err.Error()) + log.NewError(operationID, utils.GetSelfFuncName(), "init minio client failed", err.Error()) return } opt := minio.MakeBucketOptions{ @@ -35,15 +36,15 @@ func MinioInit() { } err = minioClient.MakeBucket(context.Background(), config.Config.Credential.Minio.Bucket, opt) if err != nil { - log.NewInfo("", utils.GetSelfFuncName(), err.Error()) + log.NewInfo(operationID, utils.GetSelfFuncName(), err.Error()) exists, err := minioClient.BucketExists(context.Background(), config.Config.Credential.Minio.Bucket) if err == nil && exists { - log.NewInfo("", utils.GetSelfFuncName(), "We already own %s\n", config.Config.Credential.Minio.Bucket) + log.NewInfo(operationID, utils.GetSelfFuncName(), "We already own %s\n", config.Config.Credential.Minio.Bucket) } else { if err != nil { - log.NewError("", utils.GetSelfFuncName(), err.Error()) + log.NewError(operationID, utils.GetSelfFuncName(), err.Error()) } - log.NewError("", utils.GetSelfFuncName(), "create bucket failed and bucket not exists") + log.NewError(operationID, utils.GetSelfFuncName(), "create bucket failed and bucket not exists") return } } @@ -53,5 +54,5 @@ func MinioInit() { // log.NewError("", utils.GetSelfFuncName(), "SetBucketPolicy failed please set in web", err.Error()) // return //} - log.NewInfo("", utils.GetSelfFuncName(), "minio create and set policy success") + log.NewInfo(operationID, utils.GetSelfFuncName(), "minio create and set policy success") } diff --git a/internal/msg_gateway/gate/init.go b/internal/msg_gateway/gate/init.go index e62338d14..8f2f2e35b 100644 --- a/internal/msg_gateway/gate/init.go +++ b/internal/msg_gateway/gate/init.go @@ -2,8 +2,7 @@ package gate import ( "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" - "Open_IM/pkg/common/log" + "Open_IM/pkg/statistics" "fmt" "github.com/go-playground/validator/v10" @@ -21,7 +20,7 @@ var ( func Init(rpcPort, wsPort int) { //log initialization - log.NewPrivateLog(constant.LogFileName) + rwLock = new(sync.RWMutex) validate = validator.New() statistics.NewStatistics(&sendMsgCount, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second recv to msg_gateway sendMsgCount", sendMsgCount), 300) diff --git a/internal/msg_transfer/logic/init.go b/internal/msg_transfer/logic/init.go index e91f7dbe6..20326bbfc 100644 --- a/internal/msg_transfer/logic/init.go +++ b/internal/msg_transfer/logic/init.go @@ -2,9 +2,8 @@ package logic import ( "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/kafka" - "Open_IM/pkg/common/log" ) var ( @@ -14,7 +13,7 @@ var ( ) func Init() { - log.NewPrivateLog(constant.LogFileName) + persistentCH.Init() historyCH.Init() producer = kafka.NewKafkaProducer(config.Config.Kafka.Ms2pschat.Addr, config.Config.Kafka.Ms2pschat.Topic) diff --git a/internal/push/logic/init.go b/internal/push/logic/init.go index a41f60a6a..d2d127091 100644 --- a/internal/push/logic/init.go +++ b/internal/push/logic/init.go @@ -10,7 +10,6 @@ import ( "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" "Open_IM/pkg/common/kafka" - "Open_IM/pkg/common/log" "Open_IM/pkg/statistics" "fmt" ) @@ -24,7 +23,7 @@ var ( ) func Init(rpcPort int) { - log.NewPrivateLog(constant.LogFileName) + rpcServer.Init(rpcPort) pushCh.Init() pushTerminal = []int32{constant.IOSPlatformID, constant.AndroidPlatformID} diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index 21dae1667..f9550e7b3 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -2,8 +2,7 @@ package db import ( "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" - "Open_IM/pkg/common/log" + //"Open_IM/pkg/common/log" "Open_IM/pkg/utils" "fmt" "go.mongodb.org/mongo-driver/mongo/options" @@ -34,7 +33,7 @@ func key(dbAddress, dbName string) string { } func init() { - log.NewPrivateLog(constant.LogFileName) + //log.NewPrivateLog(constant.LogFileName) //var mgoSession *mgo.Session var mongoClient *mongo.Client var err1 error @@ -54,15 +53,16 @@ func init() { mongoClient, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) if err != nil { - log.NewError(" mongo.Connect failed, try ", utils.GetSelfFuncName(), err.Error(), uri) + fmt.Println(" mongo.Connect failed, try ", utils.GetSelfFuncName(), err.Error(), uri) time.Sleep(time.Duration(30) * time.Second) mongoClient, err1 = mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) if err1 != nil { - log.NewError(" mongo.Connect retry failed, panic", err.Error(), uri) + fmt.Println(" mongo.Connect retry failed, panic", err.Error(), uri) panic(err1.Error()) } } - log.NewInfo("0", utils.GetSelfFuncName(), "mongo driver client init success") + fmt.Println("0", utils.GetSelfFuncName(), "mongo driver client init success") + DB.mongoClient = mongoClient //mgoDailInfo := &mgo.DialInfo{ From 7604b24ffccfe1b1f1c790d4ab162ee3927af1c1 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 5 Apr 2022 19:48:31 +0800 Subject: [PATCH 18/23] log --- cmd/Open-IM-SDK-Core | 2 +- internal/api/third/minio_init.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index e2b32de2f..2257ac8ee 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit e2b32de2f93ff46662104833c8de5d5b44a2f25d +Subproject commit 2257ac8ee528fb1e0038f85e34c8770fbe4758e3 diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index 9a059cc0c..14fe4114b 100644 --- a/internal/api/third/minio_init.go +++ b/internal/api/third/minio_init.go @@ -16,7 +16,7 @@ var ( func MinioInit() { operationID := utils.OperationIDGenerator() - log.NewInfo(operationID, utils.GetSelfFuncName()) + log.NewInfo(operationID, utils.GetSelfFuncName(), "minio config: ", config.Config.Credential.Minio) minioUrl, err := url2.Parse(config.Config.Credential.Minio.Endpoint) if err != nil { log.NewError(operationID, utils.GetSelfFuncName(), "parse failed, please check config/config.yaml", err.Error()) From 40d58f6bc262f09b8784a40089cf7bcba439f3c7 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 5 Apr 2022 19:49:49 +0800 Subject: [PATCH 19/23] log --- internal/api/third/minio_init.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index 14fe4114b..209da863f 100644 --- a/internal/api/third/minio_init.go +++ b/internal/api/third/minio_init.go @@ -22,10 +22,12 @@ func MinioInit() { log.NewError(operationID, utils.GetSelfFuncName(), "parse failed, please check config/config.yaml", err.Error()) return } + log.NewInfo(operationID, utils.GetSelfFuncName(), "Parse ok ", config.Config.Credential.Minio) minioClient, err = minio.New(minioUrl.Host, &minio.Options{ Creds: credentials.NewStaticV4(config.Config.Credential.Minio.AccessKeyID, config.Config.Credential.Minio.SecretAccessKey, ""), Secure: false, }) + log.NewInfo(operationID, utils.GetSelfFuncName(), "new ok ", config.Config.Credential.Minio) if err != nil { log.NewError(operationID, utils.GetSelfFuncName(), "init minio client failed", err.Error()) return From aa673a3a5c15264d4ae150a622349b34e78d008e Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 5 Apr 2022 20:06:08 +0800 Subject: [PATCH 20/23] log --- cmd/open_im_api/main.go | 3 +-- internal/api/third/minio_init.go | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 8e76357f7..342d4a03a 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -135,8 +135,7 @@ func main() { officeGroup.POST("/send_msg_to_tag", office.SendMsg2Tag) officeGroup.POST("/get_send_tag_log", office.GetTagSendLogs) } - apiThird.MinioInit() - log.Info("", "MinioInit fin") + go apiThird.MinioInit() ginPort := flag.Int("port", 10000, "get ginServerPort from cmd,default 10000 as port") flag.Parse() r.Run(":" + strconv.Itoa(*ginPort)) diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index 209da863f..23ad88405 100644 --- a/internal/api/third/minio_init.go +++ b/internal/api/third/minio_init.go @@ -38,10 +38,10 @@ func MinioInit() { } err = minioClient.MakeBucket(context.Background(), config.Config.Credential.Minio.Bucket, opt) if err != nil { - log.NewInfo(operationID, utils.GetSelfFuncName(), err.Error()) + log.NewError(operationID, utils.GetSelfFuncName(), "MakeBucket failed ", err.Error()) exists, err := minioClient.BucketExists(context.Background(), config.Config.Credential.Minio.Bucket) if err == nil && exists { - log.NewInfo(operationID, utils.GetSelfFuncName(), "We already own %s\n", config.Config.Credential.Minio.Bucket) + log.NewWarn(operationID, utils.GetSelfFuncName(), "We already own ", config.Config.Credential.Minio.Bucket) } else { if err != nil { log.NewError(operationID, utils.GetSelfFuncName(), err.Error()) From b0c518a0d690178b1c6ccfee615476a0e1c5567e Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 5 Apr 2022 20:06:15 +0800 Subject: [PATCH 21/23] log --- internal/rpc/msg/rpcChat.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/msg/rpcChat.go b/internal/rpc/msg/rpcChat.go index c0f723a91..82c4ad37b 100644 --- a/internal/rpc/msg/rpcChat.go +++ b/internal/rpc/msg/rpcChat.go @@ -43,7 +43,7 @@ func (rpc *rpcChat) Run() { log.Error("", "", "listen network failed, err = %s, address = %s", err.Error(), address) return } - log.Info("", "", "listen network success, address = %s", address) + log.Info("", "", "listen network success, address = ", address) //grpc server srv := grpc.NewServer() From 34f1e50f901d745831b1e3ad2ad3f3127312bd82 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Tue, 5 Apr 2022 20:10:05 +0800 Subject: [PATCH 22/23] build modify --- script/build_all_service.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/script/build_all_service.sh b/script/build_all_service.sh index 07a34bb08..d3b01785f 100644 --- a/script/build_all_service.sh +++ b/script/build_all_service.sh @@ -24,7 +24,14 @@ begin_path=$PWD for ((i = 0; i < ${#service_source_root[*]}; i++)); do cd $begin_path service_path=${service_source_root[$i]} - cd $service_path && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX" - make install && echo -e "${SKY_BLUE_PREFIX}build ${service_names[$i]} success,moving binary file to the bin directory${COLOR_SUFFIX}" && - echo -e "${SKY_BLUE_PREFIX}Successful moved ${service_names[$i]} to the bin directory${COLOR_SUFFIX}\n" + cd $service_path + make install + if [ $? -ne 0 ]; then + echo -e "${RED_PREFIX}${service_names[$i]} build failed ${COLOR_SUFFIX}\n" + exit -1 + else + echo -e "${GREEN_PREFIX}${service_names[$i]} successfully be built ${COLOR_SUFFIX}\n" + fi + + done From d7200826447c5dbffbe81b3da4654d835b1a5a54 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 6 Apr 2022 11:47:01 +0800 Subject: [PATCH 23/23] shell update --- script/docker_start_all.sh | 9 ++++++++- script/msg_gateway_start.sh | 2 +- script/start_all.sh | 11 +++++++++++ script/start_rpc_service.sh | 9 ++++----- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/script/docker_start_all.sh b/script/docker_start_all.sh index 99887bff9..42ee81992 100644 --- a/script/docker_start_all.sh +++ b/script/docker_start_all.sh @@ -15,7 +15,14 @@ need_to_start_server_shell=( #fixme The 10 second delay to start the project is for the docker-compose one-click to start openIM when the infrastructure dependencies are not started sleep 10 - +time=`date +"%Y-%m-%d %H:%M:%S"` +echo "==========================================================">>../logs/openIM.log 2>&1 & +echo "==========================================================">>../logs/openIM.log 2>&1 & +echo "==========================================================">>../logs/openIM.log 2>&1 & +echo "==========server start time:${time}===========">>../logs/openIM.log 2>&1 & +echo "==========================================================">>../logs/openIM.log 2>&1 & +echo "==========================================================">>../logs/openIM.log 2>&1 & +echo "==========================================================">>../logs/openIM.log 2>&1 & for i in ${need_to_start_server_shell[*]}; do chmod +x $i ./$i diff --git a/script/msg_gateway_start.sh b/script/msg_gateway_start.sh index 978cc11fb..7c107f16a 100644 --- a/script/msg_gateway_start.sh +++ b/script/msg_gateway_start.sh @@ -14,7 +14,7 @@ ws_ports=($ports_array) if [ ${#rpc_ports[@]} -ne ${#ws_ports[@]} ]; then echo -e ${RED_PREFIX}"ws_ports does not match push_rpc_ports in quantity!!!"${COLOR_SUFFIX} - exit 0 + exit -1 fi #Check if the service exists diff --git a/script/start_all.sh b/script/start_all.sh index 4125ca50a..bf7170d68 100644 --- a/script/start_all.sh +++ b/script/start_all.sh @@ -11,8 +11,19 @@ need_to_start_server_shell=( sdk_svr_start.sh demo_svr_start.sh ) +time=`date +"%Y-%m-%d %H:%M:%S"` +echo "==========================================================">>../logs/openIM.log 2>&1 & +echo "==========================================================">>../logs/openIM.log 2>&1 & +echo "==========================================================">>../logs/openIM.log 2>&1 & +echo "==========server start time:${time}===========">>../logs/openIM.log 2>&1 & +echo "==========================================================">>../logs/openIM.log 2>&1 & +echo "==========================================================">>../logs/openIM.log 2>&1 & +echo "==========================================================">>../logs/openIM.log 2>&1 & for i in ${need_to_start_server_shell[*]}; do chmod +x $i ./$i + if [ $? -ne 0 ]; then + exit -1 + fi done diff --git a/script/start_rpc_service.sh b/script/start_rpc_service.sh index 0b54493c2..e15307f45 100644 --- a/script/start_rpc_service.sh +++ b/script/start_rpc_service.sh @@ -45,24 +45,23 @@ for ((i = 0; i < ${#service_filename[*]}; i++)); do if [ $(eval ${count}) -gt 0 ]; then pid="${service_name}| awk '{print \$2}'" - echo -e "${SKY_BLUE_PREFIX}${service_filename[$i]} service has been started,pid:$(eval $pid)$COLOR_SUFFIX" - echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename[$i]} pid:$(eval $pid)${COLOR_SUFFIX}" + echo "${service_filename[$i]} service has been started,pid:$(eval $pid)" + echo "killing the service ${service_filename[$i]} pid:$(eval $pid)" #kill the service that existed kill -9 $(eval $pid) sleep 0.5 fi - cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename[$i]} service is starting${COLOR_SUFFIX}" + cd ../bin #Get the rpc port in the configuration file portList=$(cat $config_path | grep ${service_port_name[$i]} | awk -F '[:]' '{print $NF}') list_to_string ${portList} #Start related rpc services based on the number of ports for j in ${ports_array}; do - echo -e "${SKY_BLUE_PREFIX}${service_filename[$i]} Service is starting,port number:$j $COLOR_SUFFIX" #Start the service in the background # ./${service_filename[$i]} -port $j & nohup ./${service_filename[$i]} -port $j >>../logs/openIM.log 2>&1 & sleep 1 pid="netstat -ntlp|grep $j |awk '{printf \$7}'|cut -d/ -f1" - echo -e "${RED_PREFIX}${service_filename[$i]} Service is started,port number:$j pid:$(eval $pid)$COLOR_SUFFIX" + echo -e "${GREEN_PREFIX}${service_filename[$i]} start success,port number:$j pid:$(eval $pid)$COLOR_SUFFIX" done done \ No newline at end of file