From 5e371689e6fcf6508e4e56c2fc9ca04e1b1a1335 Mon Sep 17 00:00:00 2001 From: Mrs4s Date: Sat, 6 Nov 2021 03:04:04 +0800 Subject: [PATCH] feat: channel info support --- client/channel.go | 101 ++ client/client.go | 3 + client/pb/channel/common.pb.go | 1753 +++++++++++++++++++++++++++++ client/pb/channel/common.proto | 135 +++ client/pb/channel/synclogic.pb.go | 1735 ++++++++++++++++++++++++++++ client/pb/channel/synclogic.proto | 134 +++ client/pb/msg/msg.proto | 4 +- 7 files changed, 3864 insertions(+), 1 deletion(-) create mode 100644 client/channel.go create mode 100644 client/pb/channel/common.pb.go create mode 100644 client/pb/channel/common.proto create mode 100644 client/pb/channel/synclogic.pb.go create mode 100644 client/pb/channel/synclogic.proto diff --git a/client/channel.go b/client/channel.go new file mode 100644 index 00000000..27de05a4 --- /dev/null +++ b/client/channel.go @@ -0,0 +1,101 @@ +package client + +import ( + "github.com/Mrs4s/MiraiGo/client/pb/channel" + "github.com/Mrs4s/MiraiGo/internal/packets" + "github.com/Mrs4s/MiraiGo/utils" + "github.com/pkg/errors" + "google.golang.org/protobuf/proto" +) + +// ChannelSelfInfo 频道模块内自身的信息 +type ChannelSelfInfo struct { + TinyId uint64 + ChannelCount uint32 + // Guilds 由服务器推送的频道列表 + Guilds []*GuildInfo +} + +// GuildInfo 频道信息 +type GuildInfo struct { + GuildId uint64 + GuildCode uint64 + GuildName string + Channels []*ChannelInfo +} + +// ChannelInfo 子频道信息 +type ChannelInfo struct { + ChannelId uint64 + ChannelName string + Time uint64 + EventTime uint32 + NotifyType uint32 + ChannelType uint32 + AtAllSeq uint64 +} + +func init() { + decoders["trpc.group_pro.synclogic.SyncLogic.PushFirstView"] = decodeChannelPushFirstView +} + +func (c *QQClient) syncChannelFirstView() { + rsp, err := c.sendAndWaitDynamic(c.buildSyncChannelFirstViewPacket()) + if err != nil { + c.Error("sync channel error: %v", err) + return + } + firstViewRsp := new(channel.FirstViewRsp) + if err = proto.Unmarshal(rsp, firstViewRsp); err != nil { + return + } + c.ChannelSelf.TinyId = firstViewRsp.GetSelfTinyid() + c.ChannelSelf.ChannelCount = firstViewRsp.GetGuildCount() +} + +func (c *QQClient) buildSyncChannelFirstViewPacket() (uint16, []byte) { + seq := c.nextSeq() + req := &channel.FirstViewReq{ + LastMsgTime: proto.Uint64(0), + Seq: proto.Uint32(0), + DirectMessageFlag: proto.Uint32(1), + } + payload, _ := proto.Marshal(req) + packet := packets.BuildUniPacket(c.Uin, seq, "trpc.group_pro.synclogic.SyncLogic.SyncFirstView", 1, c.OutGoingPacketSessionId, []byte{}, c.sigInfo.d2Key, payload) + return seq, packet +} + +func decodeChannelPushFirstView(c *QQClient, _ *incomingPacketInfo, payload []byte) (interface{}, error) { + firstViewMsg := new(channel.FirstViewMsg) + if err := proto.Unmarshal(payload, firstViewMsg); err != nil { + return nil, errors.Wrap(err, "failed to unmarshal protobuf message") + } + if len(firstViewMsg.GuildNodes) > 0 { + c.ChannelSelf.Guilds = []*GuildInfo{} + for _, guild := range firstViewMsg.GuildNodes { + info := &GuildInfo{ + GuildId: guild.GetGuildId(), + GuildCode: guild.GetGuildCode(), + GuildName: utils.B2S(guild.GuildName), + } + for _, node := range guild.ChannelNodes { + meta := new(channel.ChannelMsgMeta) + _ = proto.Unmarshal(node.Meta, meta) + info.Channels = append(info.Channels, &ChannelInfo{ + ChannelId: node.GetChannelId(), + ChannelName: utils.B2S(node.ChannelName), + Time: node.GetTime(), + EventTime: node.GetEventTime(), + NotifyType: node.GetNotifyType(), + ChannelType: node.GetChannelType(), + AtAllSeq: meta.GetAtAllSeq(), + }) + } + c.ChannelSelf.Guilds = append(c.ChannelSelf.Guilds, info) + } + } + if len(firstViewMsg.ChannelMsgs) > 0 { // sync msg + + } + return nil, nil +} diff --git a/client/client.go b/client/client.go index a9045232..8f7c0b07 100644 --- a/client/client.go +++ b/client/client.go @@ -44,6 +44,7 @@ type QQClient struct { OnlineClients []*OtherClientInfo Online bool QiDian *QiDianAccountInfo + ChannelSelf *ChannelSelfInfo // protocol public field SequenceId int32 @@ -199,6 +200,7 @@ func NewClientMd5(uin int64, passwordMd5 [16]byte) *QQClient { RandomKey: make([]byte, 16), OutGoingPacketSessionId: []byte{0x02, 0xB0, 0x5B, 0x8B}, TCP: &utils.TCPListener{}, + ChannelSelf: &ChannelSelfInfo{}, sigInfo: &loginSigInfo{}, requestPacketRequestID: 1921334513, groupSeq: int32(rand.Intn(20000)), @@ -451,6 +453,7 @@ func (c *QQClient) init(tokenLogin bool) error { } seq, pkt := c.buildGetMessageRequestPacket(msg.SyncFlag_START, time.Now().Unix()) _, _ = c.sendAndWait(seq, pkt, requestParams{"used_reg_proxy": true, "init": true}) + c.syncChannelFirstView() return nil } diff --git a/client/pb/channel/common.pb.go b/client/pb/channel/common.pb.go new file mode 100644 index 00000000..b3b7f67d --- /dev/null +++ b/client/pb/channel/common.pb.go @@ -0,0 +1,1753 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.14.0 +// source: pb/channel/common.proto + +package channel + +import ( + msg "github.com/Mrs4s/MiraiGo/client/pb/msg" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ChannelContentHead struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type *uint64 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"` + SubType *uint64 `protobuf:"varint,2,opt,name=subType" json:"subType,omitempty"` + Random *uint64 `protobuf:"varint,3,opt,name=random" json:"random,omitempty"` + Seq *uint64 `protobuf:"varint,4,opt,name=seq" json:"seq,omitempty"` + CntSeq *uint64 `protobuf:"varint,5,opt,name=cntSeq" json:"cntSeq,omitempty"` + Time *uint64 `protobuf:"varint,6,opt,name=time" json:"time,omitempty"` + Meta []byte `protobuf:"bytes,7,opt,name=meta" json:"meta,omitempty"` +} + +func (x *ChannelContentHead) Reset() { + *x = ChannelContentHead{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelContentHead) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelContentHead) ProtoMessage() {} + +func (x *ChannelContentHead) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_proto_msgTypes[0] + 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 ChannelContentHead.ProtoReflect.Descriptor instead. +func (*ChannelContentHead) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{0} +} + +func (x *ChannelContentHead) GetType() uint64 { + if x != nil && x.Type != nil { + return *x.Type + } + return 0 +} + +func (x *ChannelContentHead) GetSubType() uint64 { + if x != nil && x.SubType != nil { + return *x.SubType + } + return 0 +} + +func (x *ChannelContentHead) GetRandom() uint64 { + if x != nil && x.Random != nil { + return *x.Random + } + return 0 +} + +func (x *ChannelContentHead) GetSeq() uint64 { + if x != nil && x.Seq != nil { + return *x.Seq + } + return 0 +} + +func (x *ChannelContentHead) GetCntSeq() uint64 { + if x != nil && x.CntSeq != nil { + return *x.CntSeq + } + return 0 +} + +func (x *ChannelContentHead) GetTime() uint64 { + if x != nil && x.Time != nil { + return *x.Time + } + return 0 +} + +func (x *ChannelContentHead) GetMeta() []byte { + if x != nil { + return x.Meta + } + return nil +} + +type DirectMessageMember struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uin *uint64 `protobuf:"varint,1,opt,name=uin" json:"uin,omitempty"` + Tinyid *uint64 `protobuf:"varint,2,opt,name=tinyid" json:"tinyid,omitempty"` + SourceGuildId *uint64 `protobuf:"varint,3,opt,name=sourceGuildId" json:"sourceGuildId,omitempty"` + SourceGuildName []byte `protobuf:"bytes,4,opt,name=sourceGuildName" json:"sourceGuildName,omitempty"` + NickName []byte `protobuf:"bytes,5,opt,name=nickName" json:"nickName,omitempty"` + MemberName []byte `protobuf:"bytes,6,opt,name=memberName" json:"memberName,omitempty"` + NotifyType *uint32 `protobuf:"varint,7,opt,name=notifyType" json:"notifyType,omitempty"` +} + +func (x *DirectMessageMember) Reset() { + *x = DirectMessageMember{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DirectMessageMember) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DirectMessageMember) ProtoMessage() {} + +func (x *DirectMessageMember) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_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 DirectMessageMember.ProtoReflect.Descriptor instead. +func (*DirectMessageMember) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{1} +} + +func (x *DirectMessageMember) GetUin() uint64 { + if x != nil && x.Uin != nil { + return *x.Uin + } + return 0 +} + +func (x *DirectMessageMember) GetTinyid() uint64 { + if x != nil && x.Tinyid != nil { + return *x.Tinyid + } + return 0 +} + +func (x *DirectMessageMember) GetSourceGuildId() uint64 { + if x != nil && x.SourceGuildId != nil { + return *x.SourceGuildId + } + return 0 +} + +func (x *DirectMessageMember) GetSourceGuildName() []byte { + if x != nil { + return x.SourceGuildName + } + return nil +} + +func (x *DirectMessageMember) GetNickName() []byte { + if x != nil { + return x.NickName + } + return nil +} + +func (x *DirectMessageMember) GetMemberName() []byte { + if x != nil { + return x.MemberName + } + return nil +} + +func (x *DirectMessageMember) GetNotifyType() uint32 { + if x != nil && x.NotifyType != nil { + return *x.NotifyType + } + return 0 +} + +type ChannelEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type *uint64 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"` + Version *uint64 `protobuf:"varint,2,opt,name=version" json:"version,omitempty"` + OpInfo *ChannelMsgOpInfo `protobuf:"bytes,3,opt,name=opInfo" json:"opInfo,omitempty"` +} + +func (x *ChannelEvent) Reset() { + *x = ChannelEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelEvent) ProtoMessage() {} + +func (x *ChannelEvent) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_proto_msgTypes[2] + 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 ChannelEvent.ProtoReflect.Descriptor instead. +func (*ChannelEvent) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{2} +} + +func (x *ChannelEvent) GetType() uint64 { + if x != nil && x.Type != nil { + return *x.Type + } + return 0 +} + +func (x *ChannelEvent) GetVersion() uint64 { + if x != nil && x.Version != nil { + return *x.Version + } + return 0 +} + +func (x *ChannelEvent) GetOpInfo() *ChannelMsgOpInfo { + if x != nil { + return x.OpInfo + } + return nil +} + +type ChannelExtInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FromNick []byte `protobuf:"bytes,1,opt,name=fromNick" json:"fromNick,omitempty"` + GuildName []byte `protobuf:"bytes,2,opt,name=guildName" json:"guildName,omitempty"` + ChannelName []byte `protobuf:"bytes,3,opt,name=channelName" json:"channelName,omitempty"` + Visibility *uint32 `protobuf:"varint,4,opt,name=visibility" json:"visibility,omitempty"` + NotifyType *uint32 `protobuf:"varint,5,opt,name=notifyType" json:"notifyType,omitempty"` + OfflineFlag *uint32 `protobuf:"varint,6,opt,name=offlineFlag" json:"offlineFlag,omitempty"` + NameType *uint32 `protobuf:"varint,7,opt,name=nameType" json:"nameType,omitempty"` + MemberName []byte `protobuf:"bytes,8,opt,name=memberName" json:"memberName,omitempty"` + Timestamp *uint32 `protobuf:"varint,9,opt,name=timestamp" json:"timestamp,omitempty"` + EventVersion *uint64 `protobuf:"varint,10,opt,name=eventVersion" json:"eventVersion,omitempty"` + Events []*ChannelEvent `protobuf:"bytes,11,rep,name=events" json:"events,omitempty"` + FromRoleInfo *ChannelRole `protobuf:"bytes,12,opt,name=fromRoleInfo" json:"fromRoleInfo,omitempty"` + FreqLimitInfo *ChannelFreqLimitInfo `protobuf:"bytes,13,opt,name=freqLimitInfo" json:"freqLimitInfo,omitempty"` + DirectMessageMember []*DirectMessageMember `protobuf:"bytes,14,rep,name=directMessageMember" json:"directMessageMember,omitempty"` +} + +func (x *ChannelExtInfo) Reset() { + *x = ChannelExtInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelExtInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelExtInfo) ProtoMessage() {} + +func (x *ChannelExtInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_proto_msgTypes[3] + 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 ChannelExtInfo.ProtoReflect.Descriptor instead. +func (*ChannelExtInfo) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{3} +} + +func (x *ChannelExtInfo) GetFromNick() []byte { + if x != nil { + return x.FromNick + } + return nil +} + +func (x *ChannelExtInfo) GetGuildName() []byte { + if x != nil { + return x.GuildName + } + return nil +} + +func (x *ChannelExtInfo) GetChannelName() []byte { + if x != nil { + return x.ChannelName + } + return nil +} + +func (x *ChannelExtInfo) GetVisibility() uint32 { + if x != nil && x.Visibility != nil { + return *x.Visibility + } + return 0 +} + +func (x *ChannelExtInfo) GetNotifyType() uint32 { + if x != nil && x.NotifyType != nil { + return *x.NotifyType + } + return 0 +} + +func (x *ChannelExtInfo) GetOfflineFlag() uint32 { + if x != nil && x.OfflineFlag != nil { + return *x.OfflineFlag + } + return 0 +} + +func (x *ChannelExtInfo) GetNameType() uint32 { + if x != nil && x.NameType != nil { + return *x.NameType + } + return 0 +} + +func (x *ChannelExtInfo) GetMemberName() []byte { + if x != nil { + return x.MemberName + } + return nil +} + +func (x *ChannelExtInfo) GetTimestamp() uint32 { + if x != nil && x.Timestamp != nil { + return *x.Timestamp + } + return 0 +} + +func (x *ChannelExtInfo) GetEventVersion() uint64 { + if x != nil && x.EventVersion != nil { + return *x.EventVersion + } + return 0 +} + +func (x *ChannelExtInfo) GetEvents() []*ChannelEvent { + if x != nil { + return x.Events + } + return nil +} + +func (x *ChannelExtInfo) GetFromRoleInfo() *ChannelRole { + if x != nil { + return x.FromRoleInfo + } + return nil +} + +func (x *ChannelExtInfo) GetFreqLimitInfo() *ChannelFreqLimitInfo { + if x != nil { + return x.FreqLimitInfo + } + return nil +} + +func (x *ChannelExtInfo) GetDirectMessageMember() []*DirectMessageMember { + if x != nil { + return x.DirectMessageMember + } + return nil +} + +type ChannelFreqLimitInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IsLimited *uint32 `protobuf:"varint,1,opt,name=isLimited" json:"isLimited,omitempty"` + LeftCount *uint32 `protobuf:"varint,2,opt,name=leftCount" json:"leftCount,omitempty"` + LimitTimestamp *uint64 `protobuf:"varint,3,opt,name=limitTimestamp" json:"limitTimestamp,omitempty"` +} + +func (x *ChannelFreqLimitInfo) Reset() { + *x = ChannelFreqLimitInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelFreqLimitInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelFreqLimitInfo) ProtoMessage() {} + +func (x *ChannelFreqLimitInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_proto_msgTypes[4] + 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 ChannelFreqLimitInfo.ProtoReflect.Descriptor instead. +func (*ChannelFreqLimitInfo) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{4} +} + +func (x *ChannelFreqLimitInfo) GetIsLimited() uint32 { + if x != nil && x.IsLimited != nil { + return *x.IsLimited + } + return 0 +} + +func (x *ChannelFreqLimitInfo) GetLeftCount() uint32 { + if x != nil && x.LeftCount != nil { + return *x.LeftCount + } + return 0 +} + +func (x *ChannelFreqLimitInfo) GetLimitTimestamp() uint64 { + if x != nil && x.LimitTimestamp != nil { + return *x.LimitTimestamp + } + return 0 +} + +type ChannelInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *uint64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"` + Name []byte `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` + Color *uint32 `protobuf:"varint,3,opt,name=color" json:"color,omitempty"` + Hoist *uint32 `protobuf:"varint,4,opt,name=hoist" json:"hoist,omitempty"` +} + +func (x *ChannelInfo) Reset() { + *x = ChannelInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelInfo) ProtoMessage() {} + +func (x *ChannelInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_proto_msgTypes[5] + 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 ChannelInfo.ProtoReflect.Descriptor instead. +func (*ChannelInfo) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{5} +} + +func (x *ChannelInfo) GetId() uint64 { + if x != nil && x.Id != nil { + return *x.Id + } + return 0 +} + +func (x *ChannelInfo) GetName() []byte { + if x != nil { + return x.Name + } + return nil +} + +func (x *ChannelInfo) GetColor() uint32 { + if x != nil && x.Color != nil { + return *x.Color + } + return 0 +} + +func (x *ChannelInfo) GetHoist() uint32 { + if x != nil && x.Hoist != nil { + return *x.Hoist + } + return 0 +} + +type ChannelLoginSig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type *uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"` + Sig []byte `protobuf:"bytes,2,opt,name=sig" json:"sig,omitempty"` + Appid *uint32 `protobuf:"varint,3,opt,name=appid" json:"appid,omitempty"` +} + +func (x *ChannelLoginSig) Reset() { + *x = ChannelLoginSig{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelLoginSig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelLoginSig) ProtoMessage() {} + +func (x *ChannelLoginSig) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_proto_msgTypes[6] + 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 ChannelLoginSig.ProtoReflect.Descriptor instead. +func (*ChannelLoginSig) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{6} +} + +func (x *ChannelLoginSig) GetType() uint32 { + if x != nil && x.Type != nil { + return *x.Type + } + return 0 +} + +func (x *ChannelLoginSig) GetSig() []byte { + if x != nil { + return x.Sig + } + return nil +} + +func (x *ChannelLoginSig) GetAppid() uint32 { + if x != nil && x.Appid != nil { + return *x.Appid + } + return 0 +} + +type ChannelMeta struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FromUin *uint64 `protobuf:"varint,1,opt,name=fromUin" json:"fromUin,omitempty"` + LoginSig *ChannelLoginSig `protobuf:"bytes,2,opt,name=loginSig" json:"loginSig,omitempty"` +} + +func (x *ChannelMeta) Reset() { + *x = ChannelMeta{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelMeta) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelMeta) ProtoMessage() {} + +func (x *ChannelMeta) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_proto_msgTypes[7] + 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 ChannelMeta.ProtoReflect.Descriptor instead. +func (*ChannelMeta) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{7} +} + +func (x *ChannelMeta) GetFromUin() uint64 { + if x != nil && x.FromUin != nil { + return *x.FromUin + } + return 0 +} + +func (x *ChannelMeta) GetLoginSig() *ChannelLoginSig { + if x != nil { + return x.LoginSig + } + return nil +} + +type ChannelMsgContent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Head *ChannelMsgHead `protobuf:"bytes,1,opt,name=head" json:"head,omitempty"` + CtrlHead *ChannelMsgCtrlHead `protobuf:"bytes,2,opt,name=ctrlHead" json:"ctrlHead,omitempty"` + Body *msg.MessageBody `protobuf:"bytes,3,opt,name=body" json:"body,omitempty"` + ExtInfo *ChannelExtInfo `protobuf:"bytes,4,opt,name=extInfo" json:"extInfo,omitempty"` +} + +func (x *ChannelMsgContent) Reset() { + *x = ChannelMsgContent{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelMsgContent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelMsgContent) ProtoMessage() {} + +func (x *ChannelMsgContent) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_proto_msgTypes[8] + 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 ChannelMsgContent.ProtoReflect.Descriptor instead. +func (*ChannelMsgContent) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{8} +} + +func (x *ChannelMsgContent) GetHead() *ChannelMsgHead { + if x != nil { + return x.Head + } + return nil +} + +func (x *ChannelMsgContent) GetCtrlHead() *ChannelMsgCtrlHead { + if x != nil { + return x.CtrlHead + } + return nil +} + +func (x *ChannelMsgContent) GetBody() *msg.MessageBody { + if x != nil { + return x.Body + } + return nil +} + +func (x *ChannelMsgContent) GetExtInfo() *ChannelExtInfo { + if x != nil { + return x.ExtInfo + } + return nil +} + +type ChannelMsgCtrlHead struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IncludeUin []uint64 `protobuf:"varint,1,rep,name=includeUin" json:"includeUin,omitempty"` + ExcludeUin []uint64 `protobuf:"varint,2,rep,name=excludeUin" json:"excludeUin,omitempty"` + Featureid []uint64 `protobuf:"varint,3,rep,name=featureid" json:"featureid,omitempty"` + OfflineFlag *uint32 `protobuf:"varint,4,opt,name=offlineFlag" json:"offlineFlag,omitempty"` + Visibility *uint32 `protobuf:"varint,5,opt,name=visibility" json:"visibility,omitempty"` + CtrlFlag *uint64 `protobuf:"varint,6,opt,name=ctrlFlag" json:"ctrlFlag,omitempty"` + Events []*ChannelEvent `protobuf:"bytes,7,rep,name=events" json:"events,omitempty"` + Level *uint64 `protobuf:"varint,8,opt,name=level" json:"level,omitempty"` + PersonalLevels []*PersonalLevel `protobuf:"bytes,9,rep,name=personalLevels" json:"personalLevels,omitempty"` + GuildSyncSeq *uint64 `protobuf:"varint,10,opt,name=guildSyncSeq" json:"guildSyncSeq,omitempty"` + MemberNum *uint32 `protobuf:"varint,11,opt,name=memberNum" json:"memberNum,omitempty"` + ChannelType *uint32 `protobuf:"varint,12,opt,name=channelType" json:"channelType,omitempty"` + PrivateType *uint32 `protobuf:"varint,13,opt,name=privateType" json:"privateType,omitempty"` +} + +func (x *ChannelMsgCtrlHead) Reset() { + *x = ChannelMsgCtrlHead{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelMsgCtrlHead) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelMsgCtrlHead) ProtoMessage() {} + +func (x *ChannelMsgCtrlHead) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_proto_msgTypes[9] + 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 ChannelMsgCtrlHead.ProtoReflect.Descriptor instead. +func (*ChannelMsgCtrlHead) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{9} +} + +func (x *ChannelMsgCtrlHead) GetIncludeUin() []uint64 { + if x != nil { + return x.IncludeUin + } + return nil +} + +func (x *ChannelMsgCtrlHead) GetExcludeUin() []uint64 { + if x != nil { + return x.ExcludeUin + } + return nil +} + +func (x *ChannelMsgCtrlHead) GetFeatureid() []uint64 { + if x != nil { + return x.Featureid + } + return nil +} + +func (x *ChannelMsgCtrlHead) GetOfflineFlag() uint32 { + if x != nil && x.OfflineFlag != nil { + return *x.OfflineFlag + } + return 0 +} + +func (x *ChannelMsgCtrlHead) GetVisibility() uint32 { + if x != nil && x.Visibility != nil { + return *x.Visibility + } + return 0 +} + +func (x *ChannelMsgCtrlHead) GetCtrlFlag() uint64 { + if x != nil && x.CtrlFlag != nil { + return *x.CtrlFlag + } + return 0 +} + +func (x *ChannelMsgCtrlHead) GetEvents() []*ChannelEvent { + if x != nil { + return x.Events + } + return nil +} + +func (x *ChannelMsgCtrlHead) GetLevel() uint64 { + if x != nil && x.Level != nil { + return *x.Level + } + return 0 +} + +func (x *ChannelMsgCtrlHead) GetPersonalLevels() []*PersonalLevel { + if x != nil { + return x.PersonalLevels + } + return nil +} + +func (x *ChannelMsgCtrlHead) GetGuildSyncSeq() uint64 { + if x != nil && x.GuildSyncSeq != nil { + return *x.GuildSyncSeq + } + return 0 +} + +func (x *ChannelMsgCtrlHead) GetMemberNum() uint32 { + if x != nil && x.MemberNum != nil { + return *x.MemberNum + } + return 0 +} + +func (x *ChannelMsgCtrlHead) GetChannelType() uint32 { + if x != nil && x.ChannelType != nil { + return *x.ChannelType + } + return 0 +} + +func (x *ChannelMsgCtrlHead) GetPrivateType() uint32 { + if x != nil && x.PrivateType != nil { + return *x.PrivateType + } + return 0 +} + +type ChannelMsgHead struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RoutingHead *ChannelRoutingHead `protobuf:"bytes,1,opt,name=routingHead" json:"routingHead,omitempty"` + ContentHead *ChannelContentHead `protobuf:"bytes,2,opt,name=contentHead" json:"contentHead,omitempty"` +} + +func (x *ChannelMsgHead) Reset() { + *x = ChannelMsgHead{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelMsgHead) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelMsgHead) ProtoMessage() {} + +func (x *ChannelMsgHead) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_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 ChannelMsgHead.ProtoReflect.Descriptor instead. +func (*ChannelMsgHead) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{10} +} + +func (x *ChannelMsgHead) GetRoutingHead() *ChannelRoutingHead { + if x != nil { + return x.RoutingHead + } + return nil +} + +func (x *ChannelMsgHead) GetContentHead() *ChannelContentHead { + if x != nil { + return x.ContentHead + } + return nil +} + +type ChannelMsgMeta struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AtAllSeq *uint64 `protobuf:"varint,1,opt,name=atAllSeq" json:"atAllSeq,omitempty"` +} + +func (x *ChannelMsgMeta) Reset() { + *x = ChannelMsgMeta{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelMsgMeta) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelMsgMeta) ProtoMessage() {} + +func (x *ChannelMsgMeta) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_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 ChannelMsgMeta.ProtoReflect.Descriptor instead. +func (*ChannelMsgMeta) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{11} +} + +func (x *ChannelMsgMeta) GetAtAllSeq() uint64 { + if x != nil && x.AtAllSeq != nil { + return *x.AtAllSeq + } + return 0 +} + +type ChannelMsgOpInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OperatorTinyid *uint64 `protobuf:"varint,1,opt,name=operatorTinyid" json:"operatorTinyid,omitempty"` + OperatorRole *uint64 `protobuf:"varint,2,opt,name=operatorRole" json:"operatorRole,omitempty"` + Reason *uint64 `protobuf:"varint,3,opt,name=reason" json:"reason,omitempty"` + Timestamp *uint64 `protobuf:"varint,4,opt,name=timestamp" json:"timestamp,omitempty"` + AtType *uint64 `protobuf:"varint,5,opt,name=atType" json:"atType,omitempty"` +} + +func (x *ChannelMsgOpInfo) Reset() { + *x = ChannelMsgOpInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelMsgOpInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelMsgOpInfo) ProtoMessage() {} + +func (x *ChannelMsgOpInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_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 ChannelMsgOpInfo.ProtoReflect.Descriptor instead. +func (*ChannelMsgOpInfo) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{12} +} + +func (x *ChannelMsgOpInfo) GetOperatorTinyid() uint64 { + if x != nil && x.OperatorTinyid != nil { + return *x.OperatorTinyid + } + return 0 +} + +func (x *ChannelMsgOpInfo) GetOperatorRole() uint64 { + if x != nil && x.OperatorRole != nil { + return *x.OperatorRole + } + return 0 +} + +func (x *ChannelMsgOpInfo) GetReason() uint64 { + if x != nil && x.Reason != nil { + return *x.Reason + } + return 0 +} + +func (x *ChannelMsgOpInfo) GetTimestamp() uint64 { + if x != nil && x.Timestamp != nil { + return *x.Timestamp + } + return 0 +} + +func (x *ChannelMsgOpInfo) GetAtType() uint64 { + if x != nil && x.AtType != nil { + return *x.AtType + } + return 0 +} + +type PersonalLevel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ToUin *uint64 `protobuf:"varint,1,opt,name=toUin" json:"toUin,omitempty"` + Level *uint64 `protobuf:"varint,2,opt,name=level" json:"level,omitempty"` +} + +func (x *PersonalLevel) Reset() { + *x = PersonalLevel{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PersonalLevel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PersonalLevel) ProtoMessage() {} + +func (x *PersonalLevel) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_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 PersonalLevel.ProtoReflect.Descriptor instead. +func (*PersonalLevel) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{13} +} + +func (x *PersonalLevel) GetToUin() uint64 { + if x != nil && x.ToUin != nil { + return *x.ToUin + } + return 0 +} + +func (x *PersonalLevel) GetLevel() uint64 { + if x != nil && x.Level != nil { + return *x.Level + } + return 0 +} + +type ChannelRole struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *uint64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"` + Info []byte `protobuf:"bytes,2,opt,name=info" json:"info,omitempty"` + Flag *uint32 `protobuf:"varint,3,opt,name=flag" json:"flag,omitempty"` +} + +func (x *ChannelRole) Reset() { + *x = ChannelRole{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelRole) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelRole) ProtoMessage() {} + +func (x *ChannelRole) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_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 ChannelRole.ProtoReflect.Descriptor instead. +func (*ChannelRole) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{14} +} + +func (x *ChannelRole) GetId() uint64 { + if x != nil && x.Id != nil { + return *x.Id + } + return 0 +} + +func (x *ChannelRole) GetInfo() []byte { + if x != nil { + return x.Info + } + return nil +} + +func (x *ChannelRole) GetFlag() uint32 { + if x != nil && x.Flag != nil { + return *x.Flag + } + return 0 +} + +type ChannelRoutingHead struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GuildId *uint64 `protobuf:"varint,1,opt,name=guildId" json:"guildId,omitempty"` + ChannelId *uint64 `protobuf:"varint,2,opt,name=channelId" json:"channelId,omitempty"` + FromUin *uint64 `protobuf:"varint,3,opt,name=fromUin" json:"fromUin,omitempty"` + FromTinyid *uint64 `protobuf:"varint,4,opt,name=fromTinyid" json:"fromTinyid,omitempty"` + GuildCode *uint64 `protobuf:"varint,5,opt,name=guildCode" json:"guildCode,omitempty"` + FromAppid *uint64 `protobuf:"varint,6,opt,name=fromAppid" json:"fromAppid,omitempty"` + DirectMessageFlag *uint32 `protobuf:"varint,7,opt,name=directMessageFlag" json:"directMessageFlag,omitempty"` +} + +func (x *ChannelRoutingHead) Reset() { + *x = ChannelRoutingHead{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_common_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelRoutingHead) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelRoutingHead) ProtoMessage() {} + +func (x *ChannelRoutingHead) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_common_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 ChannelRoutingHead.ProtoReflect.Descriptor instead. +func (*ChannelRoutingHead) Descriptor() ([]byte, []int) { + return file_pb_channel_common_proto_rawDescGZIP(), []int{15} +} + +func (x *ChannelRoutingHead) GetGuildId() uint64 { + if x != nil && x.GuildId != nil { + return *x.GuildId + } + return 0 +} + +func (x *ChannelRoutingHead) GetChannelId() uint64 { + if x != nil && x.ChannelId != nil { + return *x.ChannelId + } + return 0 +} + +func (x *ChannelRoutingHead) GetFromUin() uint64 { + if x != nil && x.FromUin != nil { + return *x.FromUin + } + return 0 +} + +func (x *ChannelRoutingHead) GetFromTinyid() uint64 { + if x != nil && x.FromTinyid != nil { + return *x.FromTinyid + } + return 0 +} + +func (x *ChannelRoutingHead) GetGuildCode() uint64 { + if x != nil && x.GuildCode != nil { + return *x.GuildCode + } + return 0 +} + +func (x *ChannelRoutingHead) GetFromAppid() uint64 { + if x != nil && x.FromAppid != nil { + return *x.FromAppid + } + return 0 +} + +func (x *ChannelRoutingHead) GetDirectMessageFlag() uint32 { + if x != nil && x.DirectMessageFlag != nil { + return *x.DirectMessageFlag + } + return 0 +} + +var File_pb_channel_common_proto protoreflect.FileDescriptor + +var file_pb_channel_common_proto_rawDesc = []byte{ + 0x0a, 0x17, 0x70, 0x62, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x1a, 0x10, 0x70, 0x62, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, 0x01, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x07, 0x73, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x6e, + 0x64, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, + 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, + 0x73, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6e, 0x74, 0x53, 0x65, 0x71, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6e, 0x74, 0x53, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6d, + 0x65, 0x74, 0x61, 0x22, 0xeb, 0x01, 0x0a, 0x13, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x75, 0x69, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x74, 0x69, 0x6e, 0x79, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x74, + 0x69, 0x6e, 0x79, 0x69, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, + 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x75, 0x69, 0x6c, + 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x22, 0x6f, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x31, 0x0a, 0x06, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x4d, 0x73, 0x67, 0x4f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x49, 0x6e, + 0x66, 0x6f, 0x22, 0xca, 0x04, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x78, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x69, 0x63, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x69, 0x63, + 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x6c, 0x61, 0x67, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x46, + 0x6c, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x22, 0x0a, + 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x2d, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x38, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x0c, 0x66, 0x72, + 0x6f, 0x6d, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x43, 0x0a, 0x0d, 0x66, 0x72, + 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x46, 0x72, 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x0d, 0x66, 0x72, 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x4e, 0x0a, 0x13, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x13, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, + 0x7a, 0x0a, 0x14, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x46, 0x72, 0x65, 0x71, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x69, 0x73, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x65, 0x66, 0x74, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x65, 0x66, 0x74, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x5d, 0x0a, 0x0b, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6f, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x68, 0x6f, 0x69, 0x73, 0x74, 0x22, 0x4d, 0x0a, 0x0f, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x69, 0x67, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, + 0x73, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x22, 0x5d, 0x0a, 0x0b, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x6f, 0x6d, + 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x55, + 0x69, 0x6e, 0x12, 0x34, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x69, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x69, 0x67, 0x52, 0x08, + 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x69, 0x67, 0x22, 0xd2, 0x01, 0x0a, 0x11, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2b, + 0x0a, 0x04, 0x68, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, + 0x67, 0x48, 0x65, 0x61, 0x64, 0x52, 0x04, 0x68, 0x65, 0x61, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x63, + 0x74, 0x72, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, + 0x73, 0x67, 0x43, 0x74, 0x72, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x52, 0x08, 0x63, 0x74, 0x72, 0x6c, + 0x48, 0x65, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x42, 0x6f, 0x64, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x31, 0x0a, 0x07, 0x65, 0x78, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x78, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xdb, 0x03, + 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x43, 0x74, 0x72, 0x6c, + 0x48, 0x65, 0x61, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x55, + 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x55, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x55, + 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0a, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x55, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x6c, 0x61, + 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, + 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x74, 0x72, 0x6c, 0x46, 0x6c, 0x61, 0x67, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x74, 0x72, 0x6c, 0x46, 0x6c, 0x61, 0x67, + 0x12, 0x2d, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x3e, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, + 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x79, + 0x6e, 0x63, 0x53, 0x65, 0x71, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x67, 0x75, 0x69, + 0x6c, 0x64, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x0e, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x48, 0x65, 0x61, 0x64, 0x12, 0x3d, + 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x61, 0x64, + 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x61, 0x64, 0x12, 0x3d, 0x0a, + 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x52, + 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x22, 0x2c, 0x0a, 0x0e, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1a, + 0x0a, 0x08, 0x61, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x61, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x65, 0x71, 0x22, 0xac, 0x01, 0x0a, 0x10, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x4f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x26, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x69, 0x6e, 0x79, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x54, 0x69, 0x6e, 0x79, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x06, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3b, 0x0a, 0x0d, 0x50, 0x65, 0x72, + 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x55, 0x69, 0x6e, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x45, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, + 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22, 0xf0, 0x01, + 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, + 0x48, 0x65, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x66, + 0x72, 0x6f, 0x6d, 0x55, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x69, + 0x6e, 0x79, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, + 0x54, 0x69, 0x6e, 0x79, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x43, + 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x67, 0x75, 0x69, 0x6c, 0x64, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x70, 0x70, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x70, 0x70, + 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, + 0x42, 0x14, 0x5a, 0x12, 0x70, 0x62, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x3b, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, +} + +var ( + file_pb_channel_common_proto_rawDescOnce sync.Once + file_pb_channel_common_proto_rawDescData = file_pb_channel_common_proto_rawDesc +) + +func file_pb_channel_common_proto_rawDescGZIP() []byte { + file_pb_channel_common_proto_rawDescOnce.Do(func() { + file_pb_channel_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_pb_channel_common_proto_rawDescData) + }) + return file_pb_channel_common_proto_rawDescData +} + +var file_pb_channel_common_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_pb_channel_common_proto_goTypes = []interface{}{ + (*ChannelContentHead)(nil), // 0: channel.ChannelContentHead + (*DirectMessageMember)(nil), // 1: channel.DirectMessageMember + (*ChannelEvent)(nil), // 2: channel.ChannelEvent + (*ChannelExtInfo)(nil), // 3: channel.ChannelExtInfo + (*ChannelFreqLimitInfo)(nil), // 4: channel.ChannelFreqLimitInfo + (*ChannelInfo)(nil), // 5: channel.ChannelInfo + (*ChannelLoginSig)(nil), // 6: channel.ChannelLoginSig + (*ChannelMeta)(nil), // 7: channel.ChannelMeta + (*ChannelMsgContent)(nil), // 8: channel.ChannelMsgContent + (*ChannelMsgCtrlHead)(nil), // 9: channel.ChannelMsgCtrlHead + (*ChannelMsgHead)(nil), // 10: channel.ChannelMsgHead + (*ChannelMsgMeta)(nil), // 11: channel.ChannelMsgMeta + (*ChannelMsgOpInfo)(nil), // 12: channel.ChannelMsgOpInfo + (*PersonalLevel)(nil), // 13: channel.PersonalLevel + (*ChannelRole)(nil), // 14: channel.ChannelRole + (*ChannelRoutingHead)(nil), // 15: channel.ChannelRoutingHead + (*msg.MessageBody)(nil), // 16: msg.MessageBody +} +var file_pb_channel_common_proto_depIdxs = []int32{ + 12, // 0: channel.ChannelEvent.opInfo:type_name -> channel.ChannelMsgOpInfo + 2, // 1: channel.ChannelExtInfo.events:type_name -> channel.ChannelEvent + 14, // 2: channel.ChannelExtInfo.fromRoleInfo:type_name -> channel.ChannelRole + 4, // 3: channel.ChannelExtInfo.freqLimitInfo:type_name -> channel.ChannelFreqLimitInfo + 1, // 4: channel.ChannelExtInfo.directMessageMember:type_name -> channel.DirectMessageMember + 6, // 5: channel.ChannelMeta.loginSig:type_name -> channel.ChannelLoginSig + 10, // 6: channel.ChannelMsgContent.head:type_name -> channel.ChannelMsgHead + 9, // 7: channel.ChannelMsgContent.ctrlHead:type_name -> channel.ChannelMsgCtrlHead + 16, // 8: channel.ChannelMsgContent.body:type_name -> msg.MessageBody + 3, // 9: channel.ChannelMsgContent.extInfo:type_name -> channel.ChannelExtInfo + 2, // 10: channel.ChannelMsgCtrlHead.events:type_name -> channel.ChannelEvent + 13, // 11: channel.ChannelMsgCtrlHead.personalLevels:type_name -> channel.PersonalLevel + 15, // 12: channel.ChannelMsgHead.routingHead:type_name -> channel.ChannelRoutingHead + 0, // 13: channel.ChannelMsgHead.contentHead:type_name -> channel.ChannelContentHead + 14, // [14:14] is the sub-list for method output_type + 14, // [14:14] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name +} + +func init() { file_pb_channel_common_proto_init() } +func file_pb_channel_common_proto_init() { + if File_pb_channel_common_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_pb_channel_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelContentHead); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DirectMessageMember); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelExtInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelFreqLimitInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelLoginSig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelMeta); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelMsgContent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelMsgCtrlHead); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelMsgHead); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelMsgMeta); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelMsgOpInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PersonalLevel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelRole); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_common_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelRoutingHead); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pb_channel_common_proto_rawDesc, + NumEnums: 0, + NumMessages: 16, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pb_channel_common_proto_goTypes, + DependencyIndexes: file_pb_channel_common_proto_depIdxs, + MessageInfos: file_pb_channel_common_proto_msgTypes, + }.Build() + File_pb_channel_common_proto = out.File + file_pb_channel_common_proto_rawDesc = nil + file_pb_channel_common_proto_goTypes = nil + file_pb_channel_common_proto_depIdxs = nil +} diff --git a/client/pb/channel/common.proto b/client/pb/channel/common.proto new file mode 100644 index 00000000..c44b728c --- /dev/null +++ b/client/pb/channel/common.proto @@ -0,0 +1,135 @@ +syntax = "proto2"; + +package channel; + +option go_package = "pb/channel;channel"; + +import "pb/msg/msg.proto"; + +message ChannelContentHead { + optional uint64 type = 1; + optional uint64 subType = 2; + optional uint64 random = 3; + optional uint64 seq = 4; + optional uint64 cntSeq = 5; + optional uint64 time = 6; + optional bytes meta = 7; +} + +message DirectMessageMember { + optional uint64 uin = 1; + optional uint64 tinyid = 2; + optional uint64 sourceGuildId = 3; + optional bytes sourceGuildName = 4; + optional bytes nickName = 5; + optional bytes memberName = 6; + optional uint32 notifyType = 7; +} + +message ChannelEvent { + optional uint64 type = 1; + optional uint64 version = 2; + optional ChannelMsgOpInfo opInfo = 3; +} + +message ChannelExtInfo { + optional bytes fromNick = 1; + optional bytes guildName = 2; + optional bytes channelName = 3; + optional uint32 visibility = 4; + optional uint32 notifyType = 5; + optional uint32 offlineFlag = 6; + optional uint32 nameType = 7; + optional bytes memberName = 8; + optional uint32 timestamp = 9; + optional uint64 eventVersion = 10; + repeated ChannelEvent events = 11; + optional ChannelRole fromRoleInfo = 12; + optional ChannelFreqLimitInfo freqLimitInfo = 13; + repeated DirectMessageMember directMessageMember = 14; +} + +message ChannelFreqLimitInfo { + optional uint32 isLimited = 1; + optional uint32 leftCount = 2; + optional uint64 limitTimestamp = 3; +} + +message ChannelInfo { + optional uint64 id = 1; + optional bytes name = 2; + optional uint32 color = 3; + optional uint32 hoist = 4; +} + +message ChannelLoginSig { + optional uint32 type = 1; + optional bytes sig = 2; + optional uint32 appid = 3; +} + +message ChannelMeta { + optional uint64 fromUin = 1; + optional ChannelLoginSig loginSig = 2; +} + +message ChannelMsgContent { + optional ChannelMsgHead head = 1; + optional ChannelMsgCtrlHead ctrlHead = 2; + optional msg.MessageBody body = 3; + optional ChannelExtInfo extInfo = 4; +} + +message ChannelMsgCtrlHead { + repeated uint64 includeUin = 1; + repeated uint64 excludeUin = 2; + repeated uint64 featureid = 3; + optional uint32 offlineFlag = 4; + optional uint32 visibility = 5; + optional uint64 ctrlFlag = 6; + repeated ChannelEvent events = 7; + optional uint64 level = 8; + repeated PersonalLevel personalLevels = 9; + optional uint64 guildSyncSeq = 10; + optional uint32 memberNum = 11; + optional uint32 channelType = 12; + optional uint32 privateType = 13; +} + +message ChannelMsgHead { + optional ChannelRoutingHead routingHead = 1; + optional ChannelContentHead contentHead = 2; +} + +message ChannelMsgMeta { + optional uint64 atAllSeq = 1; +} + +message ChannelMsgOpInfo { + optional uint64 operatorTinyid = 1; + optional uint64 operatorRole = 2; + optional uint64 reason = 3; + optional uint64 timestamp = 4; + optional uint64 atType = 5; +} + +message PersonalLevel { + optional uint64 toUin = 1; + optional uint64 level = 2; +} + +message ChannelRole { + optional uint64 id = 1; + optional bytes info = 2; + optional uint32 flag = 3; +} + +message ChannelRoutingHead { + optional uint64 guildId = 1; + optional uint64 channelId = 2; + optional uint64 fromUin = 3; + optional uint64 fromTinyid = 4; + optional uint64 guildCode = 5; + optional uint64 fromAppid = 6; + optional uint32 directMessageFlag = 7; +} diff --git a/client/pb/channel/synclogic.pb.go b/client/pb/channel/synclogic.pb.go new file mode 100644 index 00000000..06634d02 --- /dev/null +++ b/client/pb/channel/synclogic.pb.go @@ -0,0 +1,1735 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.14.0 +// source: pb/channel/synclogic.proto + +package channel + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ChannelMsg struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GuildId *uint64 `protobuf:"varint,1,opt,name=guildId" json:"guildId,omitempty"` + ChannelId *uint64 `protobuf:"varint,2,opt,name=channelId" json:"channelId,omitempty"` + Result *uint32 `protobuf:"varint,3,opt,name=result" json:"result,omitempty"` + RspBeginSeq *uint64 `protobuf:"varint,4,opt,name=rspBeginSeq" json:"rspBeginSeq,omitempty"` + RspEndSeq *uint64 `protobuf:"varint,5,opt,name=rspEndSeq" json:"rspEndSeq,omitempty"` + Msgs []*ChannelMsgContent `protobuf:"bytes,6,rep,name=msgs" json:"msgs,omitempty"` +} + +func (x *ChannelMsg) Reset() { + *x = ChannelMsg{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelMsg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelMsg) ProtoMessage() {} + +func (x *ChannelMsg) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_proto_msgTypes[0] + 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 ChannelMsg.ProtoReflect.Descriptor instead. +func (*ChannelMsg) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{0} +} + +func (x *ChannelMsg) GetGuildId() uint64 { + if x != nil && x.GuildId != nil { + return *x.GuildId + } + return 0 +} + +func (x *ChannelMsg) GetChannelId() uint64 { + if x != nil && x.ChannelId != nil { + return *x.ChannelId + } + return 0 +} + +func (x *ChannelMsg) GetResult() uint32 { + if x != nil && x.Result != nil { + return *x.Result + } + return 0 +} + +func (x *ChannelMsg) GetRspBeginSeq() uint64 { + if x != nil && x.RspBeginSeq != nil { + return *x.RspBeginSeq + } + return 0 +} + +func (x *ChannelMsg) GetRspEndSeq() uint64 { + if x != nil && x.RspEndSeq != nil { + return *x.RspEndSeq + } + return 0 +} + +func (x *ChannelMsg) GetMsgs() []*ChannelMsgContent { + if x != nil { + return x.Msgs + } + return nil +} + +type ChannelMsgReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChannelParam *ChannelParam `protobuf:"bytes,1,opt,name=channelParam" json:"channelParam,omitempty"` + WithVersionFlag *uint32 `protobuf:"varint,2,opt,name=withVersionFlag" json:"withVersionFlag,omitempty"` + DirectMessageFlag *uint32 `protobuf:"varint,3,opt,name=directMessageFlag" json:"directMessageFlag,omitempty"` +} + +func (x *ChannelMsgReq) Reset() { + *x = ChannelMsgReq{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelMsgReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelMsgReq) ProtoMessage() {} + +func (x *ChannelMsgReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_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 ChannelMsgReq.ProtoReflect.Descriptor instead. +func (*ChannelMsgReq) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{1} +} + +func (x *ChannelMsgReq) GetChannelParam() *ChannelParam { + if x != nil { + return x.ChannelParam + } + return nil +} + +func (x *ChannelMsgReq) GetWithVersionFlag() uint32 { + if x != nil && x.WithVersionFlag != nil { + return *x.WithVersionFlag + } + return 0 +} + +func (x *ChannelMsgReq) GetDirectMessageFlag() uint32 { + if x != nil && x.DirectMessageFlag != nil { + return *x.DirectMessageFlag + } + return 0 +} + +type ChannelMsgRsp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Result *uint32 `protobuf:"varint,1,opt,name=result" json:"result,omitempty"` + ErrMsg []byte `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + ChannelMsg *ChannelMsg `protobuf:"bytes,3,opt,name=channelMsg" json:"channelMsg,omitempty"` + WithVersionFlag *uint32 `protobuf:"varint,4,opt,name=withVersionFlag" json:"withVersionFlag,omitempty"` + GetMsgTime *uint64 `protobuf:"varint,5,opt,name=getMsgTime" json:"getMsgTime,omitempty"` +} + +func (x *ChannelMsgRsp) Reset() { + *x = ChannelMsgRsp{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelMsgRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelMsgRsp) ProtoMessage() {} + +func (x *ChannelMsgRsp) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_proto_msgTypes[2] + 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 ChannelMsgRsp.ProtoReflect.Descriptor instead. +func (*ChannelMsgRsp) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{2} +} + +func (x *ChannelMsgRsp) GetResult() uint32 { + if x != nil && x.Result != nil { + return *x.Result + } + return 0 +} + +func (x *ChannelMsgRsp) GetErrMsg() []byte { + if x != nil { + return x.ErrMsg + } + return nil +} + +func (x *ChannelMsgRsp) GetChannelMsg() *ChannelMsg { + if x != nil { + return x.ChannelMsg + } + return nil +} + +func (x *ChannelMsgRsp) GetWithVersionFlag() uint32 { + if x != nil && x.WithVersionFlag != nil { + return *x.WithVersionFlag + } + return 0 +} + +func (x *ChannelMsgRsp) GetGetMsgTime() uint64 { + if x != nil && x.GetMsgTime != nil { + return *x.GetMsgTime + } + return 0 +} + +type ChannelNode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChannelId *uint64 `protobuf:"varint,1,opt,name=channelId" json:"channelId,omitempty"` + Seq *uint64 `protobuf:"varint,2,opt,name=seq" json:"seq,omitempty"` + CntSeq *uint64 `protobuf:"varint,3,opt,name=cntSeq" json:"cntSeq,omitempty"` + Time *uint64 `protobuf:"varint,4,opt,name=time" json:"time,omitempty"` + MemberReadMsgSeq *uint64 `protobuf:"varint,5,opt,name=memberReadMsgSeq" json:"memberReadMsgSeq,omitempty"` + MemberReadCntSeq *uint64 `protobuf:"varint,6,opt,name=memberReadCntSeq" json:"memberReadCntSeq,omitempty"` + NotifyType *uint32 `protobuf:"varint,7,opt,name=notifyType" json:"notifyType,omitempty"` + ChannelName []byte `protobuf:"bytes,8,opt,name=channelName" json:"channelName,omitempty"` + ChannelType *uint32 `protobuf:"varint,9,opt,name=channelType" json:"channelType,omitempty"` + Meta []byte `protobuf:"bytes,10,opt,name=meta" json:"meta,omitempty"` + ReadMsgMeta []byte `protobuf:"bytes,11,opt,name=readMsgMeta" json:"readMsgMeta,omitempty"` + EventTime *uint32 `protobuf:"varint,12,opt,name=eventTime" json:"eventTime,omitempty"` +} + +func (x *ChannelNode) Reset() { + *x = ChannelNode{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelNode) ProtoMessage() {} + +func (x *ChannelNode) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_proto_msgTypes[3] + 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 ChannelNode.ProtoReflect.Descriptor instead. +func (*ChannelNode) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{3} +} + +func (x *ChannelNode) GetChannelId() uint64 { + if x != nil && x.ChannelId != nil { + return *x.ChannelId + } + return 0 +} + +func (x *ChannelNode) GetSeq() uint64 { + if x != nil && x.Seq != nil { + return *x.Seq + } + return 0 +} + +func (x *ChannelNode) GetCntSeq() uint64 { + if x != nil && x.CntSeq != nil { + return *x.CntSeq + } + return 0 +} + +func (x *ChannelNode) GetTime() uint64 { + if x != nil && x.Time != nil { + return *x.Time + } + return 0 +} + +func (x *ChannelNode) GetMemberReadMsgSeq() uint64 { + if x != nil && x.MemberReadMsgSeq != nil { + return *x.MemberReadMsgSeq + } + return 0 +} + +func (x *ChannelNode) GetMemberReadCntSeq() uint64 { + if x != nil && x.MemberReadCntSeq != nil { + return *x.MemberReadCntSeq + } + return 0 +} + +func (x *ChannelNode) GetNotifyType() uint32 { + if x != nil && x.NotifyType != nil { + return *x.NotifyType + } + return 0 +} + +func (x *ChannelNode) GetChannelName() []byte { + if x != nil { + return x.ChannelName + } + return nil +} + +func (x *ChannelNode) GetChannelType() uint32 { + if x != nil && x.ChannelType != nil { + return *x.ChannelType + } + return 0 +} + +func (x *ChannelNode) GetMeta() []byte { + if x != nil { + return x.Meta + } + return nil +} + +func (x *ChannelNode) GetReadMsgMeta() []byte { + if x != nil { + return x.ReadMsgMeta + } + return nil +} + +func (x *ChannelNode) GetEventTime() uint32 { + if x != nil && x.EventTime != nil { + return *x.EventTime + } + return 0 +} + +type ChannelParam struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GuildId *uint64 `protobuf:"varint,1,opt,name=guildId" json:"guildId,omitempty"` + ChannelId *uint64 `protobuf:"varint,2,opt,name=channelId" json:"channelId,omitempty"` + BeginSeq *uint64 `protobuf:"varint,3,opt,name=beginSeq" json:"beginSeq,omitempty"` + EndSeq *uint64 `protobuf:"varint,4,opt,name=endSeq" json:"endSeq,omitempty"` + Time *uint64 `protobuf:"varint,5,opt,name=time" json:"time,omitempty"` + Version []uint64 `protobuf:"varint,6,rep,name=version" json:"version,omitempty"` + Seqs []*MsgCond `protobuf:"bytes,7,rep,name=seqs" json:"seqs,omitempty"` +} + +func (x *ChannelParam) Reset() { + *x = ChannelParam{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelParam) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelParam) ProtoMessage() {} + +func (x *ChannelParam) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_proto_msgTypes[4] + 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 ChannelParam.ProtoReflect.Descriptor instead. +func (*ChannelParam) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{4} +} + +func (x *ChannelParam) GetGuildId() uint64 { + if x != nil && x.GuildId != nil { + return *x.GuildId + } + return 0 +} + +func (x *ChannelParam) GetChannelId() uint64 { + if x != nil && x.ChannelId != nil { + return *x.ChannelId + } + return 0 +} + +func (x *ChannelParam) GetBeginSeq() uint64 { + if x != nil && x.BeginSeq != nil { + return *x.BeginSeq + } + return 0 +} + +func (x *ChannelParam) GetEndSeq() uint64 { + if x != nil && x.EndSeq != nil { + return *x.EndSeq + } + return 0 +} + +func (x *ChannelParam) GetTime() uint64 { + if x != nil && x.Time != nil { + return *x.Time + } + return 0 +} + +func (x *ChannelParam) GetVersion() []uint64 { + if x != nil { + return x.Version + } + return nil +} + +func (x *ChannelParam) GetSeqs() []*MsgCond { + if x != nil { + return x.Seqs + } + return nil +} + +type DirectMessageSource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TinyId *uint64 `protobuf:"varint,1,opt,name=tinyId" json:"tinyId,omitempty"` + GuildId *uint64 `protobuf:"varint,2,opt,name=guildId" json:"guildId,omitempty"` + GuildName []byte `protobuf:"bytes,3,opt,name=guildName" json:"guildName,omitempty"` + MemberName []byte `protobuf:"bytes,4,opt,name=memberName" json:"memberName,omitempty"` + NickName []byte `protobuf:"bytes,5,opt,name=nickName" json:"nickName,omitempty"` +} + +func (x *DirectMessageSource) Reset() { + *x = DirectMessageSource{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DirectMessageSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DirectMessageSource) ProtoMessage() {} + +func (x *DirectMessageSource) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_proto_msgTypes[5] + 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 DirectMessageSource.ProtoReflect.Descriptor instead. +func (*DirectMessageSource) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{5} +} + +func (x *DirectMessageSource) GetTinyId() uint64 { + if x != nil && x.TinyId != nil { + return *x.TinyId + } + return 0 +} + +func (x *DirectMessageSource) GetGuildId() uint64 { + if x != nil && x.GuildId != nil { + return *x.GuildId + } + return 0 +} + +func (x *DirectMessageSource) GetGuildName() []byte { + if x != nil { + return x.GuildName + } + return nil +} + +func (x *DirectMessageSource) GetMemberName() []byte { + if x != nil { + return x.MemberName + } + return nil +} + +func (x *DirectMessageSource) GetNickName() []byte { + if x != nil { + return x.NickName + } + return nil +} + +type FirstViewMsg struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PushFlag *uint32 `protobuf:"varint,1,opt,name=pushFlag" json:"pushFlag,omitempty"` + Seq *uint32 `protobuf:"varint,2,opt,name=seq" json:"seq,omitempty"` + GuildNodes []*GuildNode `protobuf:"bytes,3,rep,name=guildNodes" json:"guildNodes,omitempty"` + ChannelMsgs []*ChannelMsg `protobuf:"bytes,4,rep,name=channelMsgs" json:"channelMsgs,omitempty"` + GetMsgTime *uint64 `protobuf:"varint,5,opt,name=getMsgTime" json:"getMsgTime,omitempty"` + DirectMessageGuildNodes []*GuildNode `protobuf:"bytes,6,rep,name=directMessageGuildNodes" json:"directMessageGuildNodes,omitempty"` +} + +func (x *FirstViewMsg) Reset() { + *x = FirstViewMsg{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FirstViewMsg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FirstViewMsg) ProtoMessage() {} + +func (x *FirstViewMsg) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_proto_msgTypes[6] + 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 FirstViewMsg.ProtoReflect.Descriptor instead. +func (*FirstViewMsg) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{6} +} + +func (x *FirstViewMsg) GetPushFlag() uint32 { + if x != nil && x.PushFlag != nil { + return *x.PushFlag + } + return 0 +} + +func (x *FirstViewMsg) GetSeq() uint32 { + if x != nil && x.Seq != nil { + return *x.Seq + } + return 0 +} + +func (x *FirstViewMsg) GetGuildNodes() []*GuildNode { + if x != nil { + return x.GuildNodes + } + return nil +} + +func (x *FirstViewMsg) GetChannelMsgs() []*ChannelMsg { + if x != nil { + return x.ChannelMsgs + } + return nil +} + +func (x *FirstViewMsg) GetGetMsgTime() uint64 { + if x != nil && x.GetMsgTime != nil { + return *x.GetMsgTime + } + return 0 +} + +func (x *FirstViewMsg) GetDirectMessageGuildNodes() []*GuildNode { + if x != nil { + return x.DirectMessageGuildNodes + } + return nil +} + +type FirstViewReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LastMsgTime *uint64 `protobuf:"varint,1,opt,name=lastMsgTime" json:"lastMsgTime,omitempty"` + UdcFlag *uint32 `protobuf:"varint,2,opt,name=udcFlag" json:"udcFlag,omitempty"` + Seq *uint32 `protobuf:"varint,3,opt,name=seq" json:"seq,omitempty"` + DirectMessageFlag *uint32 `protobuf:"varint,4,opt,name=directMessageFlag" json:"directMessageFlag,omitempty"` +} + +func (x *FirstViewReq) Reset() { + *x = FirstViewReq{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FirstViewReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FirstViewReq) ProtoMessage() {} + +func (x *FirstViewReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_proto_msgTypes[7] + 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 FirstViewReq.ProtoReflect.Descriptor instead. +func (*FirstViewReq) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{7} +} + +func (x *FirstViewReq) GetLastMsgTime() uint64 { + if x != nil && x.LastMsgTime != nil { + return *x.LastMsgTime + } + return 0 +} + +func (x *FirstViewReq) GetUdcFlag() uint32 { + if x != nil && x.UdcFlag != nil { + return *x.UdcFlag + } + return 0 +} + +func (x *FirstViewReq) GetSeq() uint32 { + if x != nil && x.Seq != nil { + return *x.Seq + } + return 0 +} + +func (x *FirstViewReq) GetDirectMessageFlag() uint32 { + if x != nil && x.DirectMessageFlag != nil { + return *x.DirectMessageFlag + } + return 0 +} + +type FirstViewRsp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Result *uint32 `protobuf:"varint,1,opt,name=result" json:"result,omitempty"` + ErrMsg []byte `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + Seq *uint32 `protobuf:"varint,3,opt,name=seq" json:"seq,omitempty"` + UdcFlag *uint32 `protobuf:"varint,4,opt,name=udcFlag" json:"udcFlag,omitempty"` + GuildCount *uint32 `protobuf:"varint,5,opt,name=guildCount" json:"guildCount,omitempty"` + SelfTinyid *uint64 `protobuf:"varint,6,opt,name=selfTinyid" json:"selfTinyid,omitempty"` + DirectMessageSwitch *uint32 `protobuf:"varint,7,opt,name=directMessageSwitch" json:"directMessageSwitch,omitempty"` + DirectMessageGuildCount *uint32 `protobuf:"varint,8,opt,name=directMessageGuildCount" json:"directMessageGuildCount,omitempty"` +} + +func (x *FirstViewRsp) Reset() { + *x = FirstViewRsp{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FirstViewRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FirstViewRsp) ProtoMessage() {} + +func (x *FirstViewRsp) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_proto_msgTypes[8] + 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 FirstViewRsp.ProtoReflect.Descriptor instead. +func (*FirstViewRsp) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{8} +} + +func (x *FirstViewRsp) GetResult() uint32 { + if x != nil && x.Result != nil { + return *x.Result + } + return 0 +} + +func (x *FirstViewRsp) GetErrMsg() []byte { + if x != nil { + return x.ErrMsg + } + return nil +} + +func (x *FirstViewRsp) GetSeq() uint32 { + if x != nil && x.Seq != nil { + return *x.Seq + } + return 0 +} + +func (x *FirstViewRsp) GetUdcFlag() uint32 { + if x != nil && x.UdcFlag != nil { + return *x.UdcFlag + } + return 0 +} + +func (x *FirstViewRsp) GetGuildCount() uint32 { + if x != nil && x.GuildCount != nil { + return *x.GuildCount + } + return 0 +} + +func (x *FirstViewRsp) GetSelfTinyid() uint64 { + if x != nil && x.SelfTinyid != nil { + return *x.SelfTinyid + } + return 0 +} + +func (x *FirstViewRsp) GetDirectMessageSwitch() uint32 { + if x != nil && x.DirectMessageSwitch != nil { + return *x.DirectMessageSwitch + } + return 0 +} + +func (x *FirstViewRsp) GetDirectMessageGuildCount() uint32 { + if x != nil && x.DirectMessageGuildCount != nil { + return *x.DirectMessageGuildCount + } + return 0 +} + +type GuildNode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GuildId *uint64 `protobuf:"varint,1,opt,name=guildId" json:"guildId,omitempty"` + GuildCode *uint64 `protobuf:"varint,2,opt,name=guildCode" json:"guildCode,omitempty"` + ChannelNodes []*ChannelNode `protobuf:"bytes,3,rep,name=channelNodes" json:"channelNodes,omitempty"` + GuildName []byte `protobuf:"bytes,4,opt,name=guildName" json:"guildName,omitempty"` + PeerSource *DirectMessageSource `protobuf:"bytes,5,opt,name=peerSource" json:"peerSource,omitempty"` +} + +func (x *GuildNode) Reset() { + *x = GuildNode{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GuildNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GuildNode) ProtoMessage() {} + +func (x *GuildNode) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_proto_msgTypes[9] + 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 GuildNode.ProtoReflect.Descriptor instead. +func (*GuildNode) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{9} +} + +func (x *GuildNode) GetGuildId() uint64 { + if x != nil && x.GuildId != nil { + return *x.GuildId + } + return 0 +} + +func (x *GuildNode) GetGuildCode() uint64 { + if x != nil && x.GuildCode != nil { + return *x.GuildCode + } + return 0 +} + +func (x *GuildNode) GetChannelNodes() []*ChannelNode { + if x != nil { + return x.ChannelNodes + } + return nil +} + +func (x *GuildNode) GetGuildName() []byte { + if x != nil { + return x.GuildName + } + return nil +} + +func (x *GuildNode) GetPeerSource() *DirectMessageSource { + if x != nil { + return x.PeerSource + } + return nil +} + +type MsgCond struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Seq *uint64 `protobuf:"varint,1,opt,name=seq" json:"seq,omitempty"` + EventVersion *uint64 `protobuf:"varint,2,opt,name=eventVersion" json:"eventVersion,omitempty"` +} + +func (x *MsgCond) Reset() { + *x = MsgCond{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgCond) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgCond) ProtoMessage() {} + +func (x *MsgCond) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_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 MsgCond.ProtoReflect.Descriptor instead. +func (*MsgCond) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{10} +} + +func (x *MsgCond) GetSeq() uint64 { + if x != nil && x.Seq != nil { + return *x.Seq + } + return 0 +} + +func (x *MsgCond) GetEventVersion() uint64 { + if x != nil && x.EventVersion != nil { + return *x.EventVersion + } + return 0 +} + +type MultiChannelMsg struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PushFlag *uint32 `protobuf:"varint,1,opt,name=pushFlag" json:"pushFlag,omitempty"` + Seq *uint32 `protobuf:"varint,2,opt,name=seq" json:"seq,omitempty"` + ChannelMsgs []*ChannelMsg `protobuf:"bytes,3,rep,name=channelMsgs" json:"channelMsgs,omitempty"` + GetMsgTime *uint64 `protobuf:"varint,4,opt,name=getMsgTime" json:"getMsgTime,omitempty"` +} + +func (x *MultiChannelMsg) Reset() { + *x = MultiChannelMsg{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MultiChannelMsg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiChannelMsg) ProtoMessage() {} + +func (x *MultiChannelMsg) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_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 MultiChannelMsg.ProtoReflect.Descriptor instead. +func (*MultiChannelMsg) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{11} +} + +func (x *MultiChannelMsg) GetPushFlag() uint32 { + if x != nil && x.PushFlag != nil { + return *x.PushFlag + } + return 0 +} + +func (x *MultiChannelMsg) GetSeq() uint32 { + if x != nil && x.Seq != nil { + return *x.Seq + } + return 0 +} + +func (x *MultiChannelMsg) GetChannelMsgs() []*ChannelMsg { + if x != nil { + return x.ChannelMsgs + } + return nil +} + +func (x *MultiChannelMsg) GetGetMsgTime() uint64 { + if x != nil && x.GetMsgTime != nil { + return *x.GetMsgTime + } + return 0 +} + +type MultiChannelMsgReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChannelParams []*ChannelParam `protobuf:"bytes,1,rep,name=channelParams" json:"channelParams,omitempty"` + Seq *uint32 `protobuf:"varint,2,opt,name=seq" json:"seq,omitempty"` + DirectMessageFlag *uint32 `protobuf:"varint,3,opt,name=directMessageFlag" json:"directMessageFlag,omitempty"` +} + +func (x *MultiChannelMsgReq) Reset() { + *x = MultiChannelMsgReq{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MultiChannelMsgReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiChannelMsgReq) ProtoMessage() {} + +func (x *MultiChannelMsgReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_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 MultiChannelMsgReq.ProtoReflect.Descriptor instead. +func (*MultiChannelMsgReq) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{12} +} + +func (x *MultiChannelMsgReq) GetChannelParams() []*ChannelParam { + if x != nil { + return x.ChannelParams + } + return nil +} + +func (x *MultiChannelMsgReq) GetSeq() uint32 { + if x != nil && x.Seq != nil { + return *x.Seq + } + return 0 +} + +func (x *MultiChannelMsgReq) GetDirectMessageFlag() uint32 { + if x != nil && x.DirectMessageFlag != nil { + return *x.DirectMessageFlag + } + return 0 +} + +type MultiChannelMsgRsp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Result *uint32 `protobuf:"varint,1,opt,name=result" json:"result,omitempty"` + ErrMsg []byte `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + Seq *uint32 `protobuf:"varint,3,opt,name=seq" json:"seq,omitempty"` +} + +func (x *MultiChannelMsgRsp) Reset() { + *x = MultiChannelMsgRsp{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MultiChannelMsgRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiChannelMsgRsp) ProtoMessage() {} + +func (x *MultiChannelMsgRsp) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_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 MultiChannelMsgRsp.ProtoReflect.Descriptor instead. +func (*MultiChannelMsgRsp) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{13} +} + +func (x *MultiChannelMsgRsp) GetResult() uint32 { + if x != nil && x.Result != nil { + return *x.Result + } + return 0 +} + +func (x *MultiChannelMsgRsp) GetErrMsg() []byte { + if x != nil { + return x.ErrMsg + } + return nil +} + +func (x *MultiChannelMsgRsp) GetSeq() uint32 { + if x != nil && x.Seq != nil { + return *x.Seq + } + return 0 +} + +type ReqBody struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChannelParam *ChannelParam `protobuf:"bytes,1,opt,name=channelParam" json:"channelParam,omitempty"` + DirectMessageFlag *uint32 `protobuf:"varint,2,opt,name=directMessageFlag" json:"directMessageFlag,omitempty"` +} + +func (x *ReqBody) Reset() { + *x = ReqBody{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReqBody) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqBody) ProtoMessage() {} + +func (x *ReqBody) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_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 ReqBody.ProtoReflect.Descriptor instead. +func (*ReqBody) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{14} +} + +func (x *ReqBody) GetChannelParam() *ChannelParam { + if x != nil { + return x.ChannelParam + } + return nil +} + +func (x *ReqBody) GetDirectMessageFlag() uint32 { + if x != nil && x.DirectMessageFlag != nil { + return *x.DirectMessageFlag + } + return 0 +} + +type RspBody struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Result *uint32 `protobuf:"varint,1,opt,name=result" json:"result,omitempty"` + ErrMsg []byte `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + ChannelMsg *ChannelMsg `protobuf:"bytes,3,opt,name=channelMsg" json:"channelMsg,omitempty"` +} + +func (x *RspBody) Reset() { + *x = RspBody{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_synclogic_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RspBody) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RspBody) ProtoMessage() {} + +func (x *RspBody) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_synclogic_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 RspBody.ProtoReflect.Descriptor instead. +func (*RspBody) Descriptor() ([]byte, []int) { + return file_pb_channel_synclogic_proto_rawDescGZIP(), []int{15} +} + +func (x *RspBody) GetResult() uint32 { + if x != nil && x.Result != nil { + return *x.Result + } + return 0 +} + +func (x *RspBody) GetErrMsg() []byte { + if x != nil { + return x.ErrMsg + } + return nil +} + +func (x *RspBody) GetChannelMsg() *ChannelMsg { + if x != nil { + return x.ChannelMsg + } + return nil +} + +var File_pb_channel_synclogic_proto protoreflect.FileDescriptor + +var file_pb_channel_synclogic_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x70, 0x62, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2f, 0x73, 0x79, 0x6e, + 0x63, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x1a, 0x17, 0x70, 0x62, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcc, + 0x01, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x12, 0x18, 0x0a, + 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, + 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x20, 0x0a, + 0x0b, 0x72, 0x73, 0x70, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0b, 0x72, 0x73, 0x70, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x12, + 0x1c, 0x0a, 0x09, 0x72, 0x73, 0x70, 0x45, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x09, 0x72, 0x73, 0x70, 0x45, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x12, 0x2e, 0x0a, + 0x04, 0x6d, 0x73, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x22, 0xa2, 0x01, + 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x12, + 0x39, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x0c, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x69, + 0x74, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x46, 0x6c, 0x61, 0x67, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x11, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x6c, + 0x61, 0x67, 0x22, 0xbe, 0x01, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, + 0x67, 0x52, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x65, 0x72, + 0x72, 0x4d, 0x73, 0x67, 0x12, 0x33, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, + 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x52, 0x0a, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x69, 0x74, + 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, + 0x6c, 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x67, 0x65, 0x74, 0x4d, 0x73, 0x67, 0x54, + 0x69, 0x6d, 0x65, 0x22, 0xf9, 0x02, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, + 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, + 0x64, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, + 0x73, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6e, 0x74, 0x53, 0x65, 0x71, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6e, 0x74, 0x53, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, + 0x53, 0x65, 0x71, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x10, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6e, 0x74, 0x53, 0x65, 0x71, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x61, + 0x64, 0x43, 0x6e, 0x74, 0x53, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x74, 0x69, 0x66, + 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, + 0x65, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, + 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, 0x4d, 0x65, 0x74, + 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, + 0xce, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x12, 0x18, 0x0a, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x65, 0x67, 0x69, + 0x6e, 0x53, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x62, 0x65, 0x67, 0x69, + 0x6e, 0x53, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x04, 0x73, 0x65, + 0x71, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x04, 0x73, 0x65, 0x71, 0x73, + 0x22, 0xa1, 0x01, 0x0a, 0x13, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x6e, 0x79, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x74, 0x69, 0x6e, 0x79, 0x49, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x75, + 0x69, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x67, + 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x95, 0x02, 0x0a, 0x0c, 0x46, 0x69, 0x72, 0x73, 0x74, 0x56, 0x69, + 0x65, 0x77, 0x4d, 0x73, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x75, 0x73, 0x68, 0x46, 0x6c, 0x61, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x75, 0x73, 0x68, 0x46, 0x6c, 0x61, + 0x67, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, + 0x73, 0x65, 0x71, 0x12, 0x32, 0x0a, 0x0a, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x67, 0x75, 0x69, + 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, + 0x67, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x73, 0x12, 0x1e, + 0x0a, 0x0a, 0x67, 0x65, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0a, 0x67, 0x65, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4c, + 0x0a, 0x17, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x47, + 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x17, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x8a, 0x01, 0x0a, + 0x0c, 0x46, 0x69, 0x72, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, + 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x75, 0x64, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x07, 0x75, 0x64, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x2c, 0x0a, 0x11, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x96, 0x02, 0x0a, 0x0c, 0x46, 0x69, + 0x72, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x52, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, + 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, + 0x75, 0x64, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x75, + 0x64, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x67, 0x75, 0x69, 0x6c, + 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x6c, 0x66, 0x54, 0x69, + 0x6e, 0x79, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, 0x65, 0x6c, 0x66, + 0x54, 0x69, 0x6e, 0x79, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x13, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x38, 0x0a, 0x17, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x17, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0xd9, 0x01, 0x0a, 0x09, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x64, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x75, + 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x67, + 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x38, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x6f, 0x64, + 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x3f, + 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x22, 0x0a, 0x0c, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x96, 0x01, 0x0a, 0x0f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x4d, 0x73, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x75, 0x73, 0x68, 0x46, 0x6c, 0x61, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x75, 0x73, 0x68, 0x46, 0x6c, 0x61, 0x67, 0x12, + 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x73, 0x65, + 0x71, 0x12, 0x35, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x52, 0x0b, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x74, 0x4d, + 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x67, 0x65, + 0x74, 0x4d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x12, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x12, + 0x3b, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x0d, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, + 0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x2c, + 0x0a, 0x11, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, + 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x56, 0x0a, 0x12, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x52, + 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, + 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, + 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x03, 0x73, 0x65, 0x71, 0x22, 0x72, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x42, 0x6f, 0x64, 0x79, 0x12, + 0x39, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x0c, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x6e, 0x0a, 0x07, 0x52, 0x73, 0x70, 0x42, + 0x6f, 0x64, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, + 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x65, 0x72, 0x72, + 0x4d, 0x73, 0x67, 0x12, 0x33, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, + 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x52, 0x0a, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x42, 0x14, 0x5a, 0x12, 0x70, 0x62, 0x2f, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x3b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, +} + +var ( + file_pb_channel_synclogic_proto_rawDescOnce sync.Once + file_pb_channel_synclogic_proto_rawDescData = file_pb_channel_synclogic_proto_rawDesc +) + +func file_pb_channel_synclogic_proto_rawDescGZIP() []byte { + file_pb_channel_synclogic_proto_rawDescOnce.Do(func() { + file_pb_channel_synclogic_proto_rawDescData = protoimpl.X.CompressGZIP(file_pb_channel_synclogic_proto_rawDescData) + }) + return file_pb_channel_synclogic_proto_rawDescData +} + +var file_pb_channel_synclogic_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_pb_channel_synclogic_proto_goTypes = []interface{}{ + (*ChannelMsg)(nil), // 0: channel.ChannelMsg + (*ChannelMsgReq)(nil), // 1: channel.ChannelMsgReq + (*ChannelMsgRsp)(nil), // 2: channel.ChannelMsgRsp + (*ChannelNode)(nil), // 3: channel.ChannelNode + (*ChannelParam)(nil), // 4: channel.ChannelParam + (*DirectMessageSource)(nil), // 5: channel.DirectMessageSource + (*FirstViewMsg)(nil), // 6: channel.FirstViewMsg + (*FirstViewReq)(nil), // 7: channel.FirstViewReq + (*FirstViewRsp)(nil), // 8: channel.FirstViewRsp + (*GuildNode)(nil), // 9: channel.GuildNode + (*MsgCond)(nil), // 10: channel.MsgCond + (*MultiChannelMsg)(nil), // 11: channel.MultiChannelMsg + (*MultiChannelMsgReq)(nil), // 12: channel.MultiChannelMsgReq + (*MultiChannelMsgRsp)(nil), // 13: channel.MultiChannelMsgRsp + (*ReqBody)(nil), // 14: channel.ReqBody + (*RspBody)(nil), // 15: channel.RspBody + (*ChannelMsgContent)(nil), // 16: channel.ChannelMsgContent +} +var file_pb_channel_synclogic_proto_depIdxs = []int32{ + 16, // 0: channel.ChannelMsg.msgs:type_name -> channel.ChannelMsgContent + 4, // 1: channel.ChannelMsgReq.channelParam:type_name -> channel.ChannelParam + 0, // 2: channel.ChannelMsgRsp.channelMsg:type_name -> channel.ChannelMsg + 10, // 3: channel.ChannelParam.seqs:type_name -> channel.MsgCond + 9, // 4: channel.FirstViewMsg.guildNodes:type_name -> channel.GuildNode + 0, // 5: channel.FirstViewMsg.channelMsgs:type_name -> channel.ChannelMsg + 9, // 6: channel.FirstViewMsg.directMessageGuildNodes:type_name -> channel.GuildNode + 3, // 7: channel.GuildNode.channelNodes:type_name -> channel.ChannelNode + 5, // 8: channel.GuildNode.peerSource:type_name -> channel.DirectMessageSource + 0, // 9: channel.MultiChannelMsg.channelMsgs:type_name -> channel.ChannelMsg + 4, // 10: channel.MultiChannelMsgReq.channelParams:type_name -> channel.ChannelParam + 4, // 11: channel.ReqBody.channelParam:type_name -> channel.ChannelParam + 0, // 12: channel.RspBody.channelMsg:type_name -> channel.ChannelMsg + 13, // [13:13] is the sub-list for method output_type + 13, // [13:13] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name +} + +func init() { file_pb_channel_synclogic_proto_init() } +func file_pb_channel_synclogic_proto_init() { + if File_pb_channel_synclogic_proto != nil { + return + } + file_pb_channel_common_proto_init() + if !protoimpl.UnsafeEnabled { + file_pb_channel_synclogic_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelMsgReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelMsgRsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelNode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelParam); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DirectMessageSource); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FirstViewMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FirstViewReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FirstViewRsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GuildNode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgCond); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MultiChannelMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MultiChannelMsgReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MultiChannelMsgRsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReqBody); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_synclogic_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RspBody); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pb_channel_synclogic_proto_rawDesc, + NumEnums: 0, + NumMessages: 16, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pb_channel_synclogic_proto_goTypes, + DependencyIndexes: file_pb_channel_synclogic_proto_depIdxs, + MessageInfos: file_pb_channel_synclogic_proto_msgTypes, + }.Build() + File_pb_channel_synclogic_proto = out.File + file_pb_channel_synclogic_proto_rawDesc = nil + file_pb_channel_synclogic_proto_goTypes = nil + file_pb_channel_synclogic_proto_depIdxs = nil +} diff --git a/client/pb/channel/synclogic.proto b/client/pb/channel/synclogic.proto new file mode 100644 index 00000000..692cb2a1 --- /dev/null +++ b/client/pb/channel/synclogic.proto @@ -0,0 +1,134 @@ +syntax = "proto2"; + +package channel; + +option go_package = "pb/channel;channel"; + +import "pb/channel/common.proto"; + +message ChannelMsg { + optional uint64 guildId = 1; + optional uint64 channelId = 2; + optional uint32 result = 3; + optional uint64 rspBeginSeq = 4; + optional uint64 rspEndSeq = 5; + repeated ChannelMsgContent msgs = 6; +} + +message ChannelMsgReq { + optional ChannelParam channelParam = 1; + optional uint32 withVersionFlag = 2; + optional uint32 directMessageFlag = 3; +} + +message ChannelMsgRsp { + optional uint32 result = 1; + optional bytes errMsg = 2; + optional ChannelMsg channelMsg = 3; + optional uint32 withVersionFlag = 4; + optional uint64 getMsgTime = 5; +} + +message ChannelNode { + optional uint64 channelId = 1; + optional uint64 seq = 2; + optional uint64 cntSeq = 3; + optional uint64 time = 4; + optional uint64 memberReadMsgSeq = 5; + optional uint64 memberReadCntSeq = 6; + optional uint32 notifyType = 7; + optional bytes channelName = 8; + optional uint32 channelType = 9; + optional bytes meta = 10; + optional bytes readMsgMeta = 11; + optional uint32 eventTime = 12; +} + +message ChannelParam { + optional uint64 guildId = 1; + optional uint64 channelId = 2; + optional uint64 beginSeq = 3; + optional uint64 endSeq = 4; + optional uint64 time = 5; + repeated uint64 version = 6; + repeated MsgCond seqs = 7; +} + +message DirectMessageSource { + optional uint64 tinyId = 1; + optional uint64 guildId = 2; + optional bytes guildName = 3; + optional bytes memberName = 4; + optional bytes nickName = 5; +} + +message FirstViewMsg { + optional uint32 pushFlag = 1; + optional uint32 seq = 2; + repeated GuildNode guildNodes = 3; + repeated ChannelMsg channelMsgs = 4; + optional uint64 getMsgTime = 5; + repeated GuildNode directMessageGuildNodes = 6; +} + +message FirstViewReq { + optional uint64 lastMsgTime = 1; + optional uint32 udcFlag = 2; + optional uint32 seq = 3; + optional uint32 directMessageFlag = 4; +} + +message FirstViewRsp { + optional uint32 result = 1; + optional bytes errMsg = 2; + optional uint32 seq = 3; + optional uint32 udcFlag = 4; + optional uint32 guildCount = 5; + optional uint64 selfTinyid = 6; + optional uint32 directMessageSwitch = 7; + optional uint32 directMessageGuildCount = 8; +} + +message GuildNode { + optional uint64 guildId = 1; + optional uint64 guildCode = 2; + repeated ChannelNode channelNodes = 3; + optional bytes guildName = 4; + optional DirectMessageSource peerSource = 5; +} + +message MsgCond { + optional uint64 seq = 1; + optional uint64 eventVersion = 2; +} + +message MultiChannelMsg { + optional uint32 pushFlag = 1; + optional uint32 seq = 2; + repeated ChannelMsg channelMsgs = 3; + optional uint64 getMsgTime = 4; +} + +message MultiChannelMsgReq { + repeated ChannelParam channelParams = 1; + optional uint32 seq = 2; + optional uint32 directMessageFlag = 3; +} + +message MultiChannelMsgRsp { + optional uint32 result = 1; + optional bytes errMsg = 2; + optional uint32 seq = 3; +} + +message ReqBody { + optional ChannelParam channelParam = 1; + optional uint32 directMessageFlag = 2; +} + +message RspBody { + optional uint32 result = 1; + optional bytes errMsg = 2; + optional ChannelMsg channelMsg = 3; +} + diff --git a/client/pb/msg/msg.proto b/client/pb/msg/msg.proto index 22088721..ecd1b985 100644 --- a/client/pb/msg/msg.proto +++ b/client/pb/msg/msg.proto @@ -1,6 +1,8 @@ syntax = "proto2"; -option go_package = "./;msg"; +package msg; + +option go_package = "github.com/Mrs4s/MiraiGo/client/pb/msg;msg"; message GetMessageRequest { optional SyncFlag syncFlag = 1;