diff --git a/internal/logic/api/logic_ext.go b/internal/logic/api/logic_ext.go index 84b727a..39922ba 100644 --- a/internal/logic/api/logic_ext.go +++ b/internal/logic/api/logic_ext.go @@ -10,6 +10,32 @@ import ( type LogicExtServer struct{} +func (s *LogicExtServer) RecallMessage(ctx context.Context, in *pb.RecallMessageReq) (*pb.RecallMessageResp, error) { + userId, deviceId, err := grpclib.GetCtxData(ctx) + if err != nil { + return nil, err + } + if in.MessageContentBack != "" { + buf, err := proto.Marshal(&pb.Text{ + Text: in.MessageContentBack, + }) + if err != nil { + return nil, err + } + in.MessageContent = buf + } + sender := pb.Sender{ + SenderType: pb.SenderType_ST_USER, + SenderId: userId, + DeviceId: deviceId, + } + seq, err := app.MessageApp.RecallMessage(ctx, &sender, in) + if err != nil { + return nil, err + } + return &pb.RecallMessageResp{Seq: seq}, nil +} + // RegisterDevice 注册设备 func (*LogicExtServer) RegisterDevice(ctx context.Context, in *pb.RegisterDeviceReq) (*pb.RegisterDeviceResp, error) { deviceId, err := app.DeviceApp.Register(ctx, in) diff --git a/internal/logic/app/friend_app.go b/internal/logic/app/friend_app.go index dacfe52..dec5d28 100644 --- a/internal/logic/app/friend_app.go +++ b/internal/logic/app/friend_app.go @@ -56,3 +56,8 @@ func (*friendApp) SetFriend(ctx context.Context, userId int64, req *pb.SetFriend func (*friendApp) SendToFriend(ctx context.Context, sender *pb.Sender, req *pb.SendMessageReq) (int64, error) { return frienddomain.FriendService.SendToFriend(ctx, sender, req) } + +// RecallMessageSendToFriend 撤回消息发送至好友 +func (*friendApp) RecallMessageSendToFriend(ctx context.Context, sender *pb.Sender, req *pb.RecallMessageReq) (int64, error) { + return frienddomain.FriendService.RecallMessageSendToFriend(ctx, sender, req) +} diff --git a/internal/logic/app/group_app.go b/internal/logic/app/group_app.go index 30fbb61..344a382 100644 --- a/internal/logic/app/group_app.go +++ b/internal/logic/app/group_app.go @@ -148,3 +148,13 @@ func (*groupApp) SendMessage(ctx context.Context, sender *pb.Sender, req *pb.Sen return group.SendMessage(ctx, sender, req) } + +// RecallSendMessage 撤回发送消息 +func (*groupApp) RecallSendMessage(ctx context.Context, sender *pb.Sender, req *pb.RecallMessageReq) (int64, error) { + group, err := repo.GroupRepo.Get(req.ReceiverId) + if err != nil { + return 0, err + } + + return group.RecallSendMessage(ctx, sender, req) +} diff --git a/internal/logic/app/message_app.go b/internal/logic/app/message_app.go index 0fa85cf..09185d4 100644 --- a/internal/logic/app/message_app.go +++ b/internal/logic/app/message_app.go @@ -17,6 +17,11 @@ func (*messageApp) SendToUser(ctx context.Context, sender *pb.Sender, toUserId i return service.MessageService.SendToUser(ctx, sender, toUserId, req) } +// RecallMessageSendToUser 撤回消息发送给用户 +func (*messageApp) RecallMessageSendToUser(ctx context.Context, sender *pb.Sender, toUserId int64, req *pb.RecallMessageReq, isRecallMessageUser bool) (int64, error) { + return service.MessageService.RecallMessageSendToUser(ctx, sender, toUserId, req, isRecallMessageUser) +} + // PushToUser 推送消息给用户 func (*messageApp) PushToUser(ctx context.Context, userId int64, code pb.PushCode, message proto.Message, isPersist bool) error { return service.PushService.PushToUser(ctx, userId, code, message, isPersist) @@ -57,3 +62,23 @@ func (s *messageApp) SendMessage(ctx context.Context, sender *pb.Sender, req *pb } return 0, nil } + +// RecallMessage 撤回消息 +func (s *messageApp) RecallMessage(ctx context.Context, sender *pb.Sender, req *pb.RecallMessageReq) (int64, error) { + // 如果发送者是用户,需要补充用户的信息 + service.MessageService.AddSenderInfo(sender) + switch req.ReceiverType { + // 消息接收者为用户 + case pb.ReceiverType_RT_USER: + // 发送者为用户 + if sender.SenderType == pb.SenderType_ST_USER { + return FriendApp.RecallMessageSendToFriend(ctx, sender, req) + } else { + return s.RecallMessageSendToUser(ctx, sender, req.ReceiverId, req, true) + } + // 消息接收者是群组 + case pb.ReceiverType_RT_GROUP: + return GroupApp.RecallSendMessage(ctx, sender, req) + } + return 0, nil +} diff --git a/internal/logic/domain/friend/friend_service.go b/internal/logic/domain/friend/friend_service.go index b6f67b9..bf9a3ff 100644 --- a/internal/logic/domain/friend/friend_service.go +++ b/internal/logic/domain/friend/friend_service.go @@ -214,3 +214,33 @@ func (*friendService) SendToFriend(ctx context.Context, sender *pb.Sender, req * return seq, nil } + +// RecallMessageSendToFriend 撤回消息发送至好友 +func (*friendService) RecallMessageSendToFriend(ctx context.Context, sender *pb.Sender, req *pb.RecallMessageReq) (int64, error) { + //TODO::判断是否为好友 + friend, err := FriendRepo.Get(sender.SenderId, req.ReceiverId) + if err != nil { + return 0, err + } + if friend == nil || friend.Status != FriendStatusAgree { + return 0, gerrors.ErrNotIsFriend + } + + utils.FilePutContents("RecallMessageSendToFriend", utils.SerializeStr(map[string]interface{}{ + "send": sender, + "req": req, + })) + // 发给发送者 + seq, err := proxy.MessageProxy.RecallMessageSendToUser(ctx, sender, sender.SenderId, req, true) + if err != nil { + return 0, err + } + + // 发给接收者 + _, err = proxy.MessageProxy.RecallMessageSendToUser(ctx, sender, req.ReceiverId, req, false) + if err != nil { + return 0, err + } + + return seq, nil +} diff --git a/internal/logic/domain/group/model/group.go b/internal/logic/domain/group/model/group.go index c00a87f..4015dff 100644 --- a/internal/logic/domain/group/model/group.go +++ b/internal/logic/domain/group/model/group.go @@ -79,7 +79,7 @@ func CreateGroup(userId int64, in *pb.CreateGroupReq) *Group { group.Members = append(group.Members, GroupUser{ GroupId: group.Id, UserId: userId, - MemberType: int(pb.MemberType_GMT_ADMIN), + MemberType: int(pb.MembertypeGmtAdmin), CreateTime: now, UpdateTime: now, UpdateType: UpdateTypeUpdate, @@ -161,6 +161,41 @@ func (g *Group) SendMessage(ctx context.Context, sender *pb.Sender, req *pb.Send return userSeq, nil } +// RecallSendMessage 撤回消息发送至群组 +func (g *Group) RecallSendMessage(ctx context.Context, sender *pb.Sender, req *pb.RecallMessageReq) (int64, error) { + if sender.SenderType == pb.SenderType_ST_USER && !g.IsMember(sender.SenderId) { + logger.Sugar.Error(ctx, sender.SenderId, req.ReceiverId, "不在群组内") + return 0, gerrors.ErrNotInGroup + } + + // 如果发送者是用户,将消息发送给发送者,获取用户seq + var userSeq int64 + var err error + if sender.SenderType == pb.SenderType_ST_USER { + userSeq, err = proxy.MessageProxy.RecallMessageSendToUser(ctx, sender, sender.SenderId, req, true) + if err != nil { + return 0, err + } + } + + go func() { + defer util.RecoverPanic() + // 将消息发送给群组用户,使用写扩散 + for _, user := range g.Members { + // 前面已经发送过,这里不需要再发送 + if sender.SenderType == pb.SenderType_ST_USER && user.UserId == sender.SenderId { + continue + } + _, err := proxy.MessageProxy.RecallMessageSendToUser(grpclib.NewAndCopyRequestId(ctx), sender, user.UserId, req, false) + if err != nil { + return + } + } + }() + + return userSeq, nil +} + func (g *Group) IsMember(userId int64) bool { for i := range g.Members { if g.Members[i].UserId == userId { diff --git a/internal/logic/domain/message/repo/message_repo.go b/internal/logic/domain/message/repo/message_repo.go index 010bf6c..103d412 100644 --- a/internal/logic/domain/message/repo/message_repo.go +++ b/internal/logic/domain/message/repo/message_repo.go @@ -47,3 +47,13 @@ func (d *messageRepo) ListBySeq(userId, seq, limit int64) ([]model.Message, bool } return messages, count > limit, nil } + +// UpdateStatus 更新消息状态 +func (d *messageRepo) UpdateStatus(senderId, seq int64, status int) (int64, error) { + db := db.DB.Model(&model.Message{}).Where("sender_id = ? and seq = ?", senderId, seq). + Update("status", status) + if db.Error != nil { + return 0, gerrors.WrapError(db.Error) + } + return db.RowsAffected, nil +} diff --git a/internal/logic/domain/message/service/message_service.go b/internal/logic/domain/message/service/message_service.go index 5fc6200..d9ad26b 100644 --- a/internal/logic/domain/message/service/message_service.go +++ b/internal/logic/domain/message/service/message_service.go @@ -256,6 +256,98 @@ func (*messageService) SendToUser(ctx context.Context, sender *pb.Sender, toUser return seq, nil } +// RecallMessageSendToUser 撤回消息用户 +func (*messageService) RecallMessageSendToUser(ctx context.Context, sender *pb.Sender, toUserId int64, req *pb.RecallMessageReq, isRecallMessageUser bool) (int64, error) { + masterId, _ := grpclib.GetCtxMasterId(ctx) + logger.Logger.Debug("SendToUser", + zap.String("master_id", masterId), + zap.Int64("request_id", grpclib.GetCtxRequestId(ctx)), + zap.Int64("to_user_id", toUserId)) + var ( + seq int64 = 0 + err error + ) + + //1、解析消息体内容,content值为撤回消息的req + msg := &pb.RECALL{} + err = proto.Unmarshal(req.MessageContent, msg) + if isRecallMessageUser { + //2、改变消息状态 + _, err = repo.MessageRepo.UpdateStatus(sender.SenderId, msg.RecallSeq, int(pb.MessageStatus_MS_RECALL)) + if err != nil { + return 0, err + } + } + + //3、发送一条新的消息 + if req.IsPersist { + seq, err = SeqService.GetUserNext(ctx, toUserId) + if err != nil { + return 0, err + } + + selfMessage := model.Message{ + UserId: toUserId, + RequestId: grpclib.GetCtxRequestId(ctx), + SenderType: int32(sender.SenderType), + SenderId: sender.SenderId, + ReceiverType: int32(req.ReceiverType), + ReceiverId: req.ReceiverId, + ToUserIds: model.FormatUserIds(req.ToUserIds), + Type: int(req.MessageType), + Content: req.MessageContent, + Seq: seq, + SendTime: util.UnunixMilliTime(req.SendTime), + Status: int32(pb.MessageStatus_MS_NORMAL), + } + err = repo.MessageRepo.Save(selfMessage) + if err != nil { + logger.Sugar.Error(err) + return 0, err + } + + if sender.SenderType == pb.SenderType_ST_USER && sender.SenderId == toUserId { + // 用户需要增加自己的已经同步的序列号 + err = repo.DeviceACKRepo.Set(sender.SenderId, sender.DeviceId, seq) + if err != nil { + return 0, err + } + } + } + + message := pb.Message{ + Sender: sender, + ReceiverType: req.ReceiverType, + ReceiverId: req.ReceiverId, + ToUserIds: req.ToUserIds, + MessageType: req.MessageType, + MessageContent: req.MessageContent, + Seq: seq, + SendTime: req.SendTime, + Status: pb.MessageStatus_MS_NORMAL, + } + + // 查询用户在线设备 + devices, err := proxy.DeviceProxy.ListOnlineByUserId(ctx, toUserId) + if err != nil { + logger.Sugar.Error(err) + return 0, err + } + + for i := range devices { + if sender.DeviceId == devices[i].DeviceId { + // 消息不需要投递给发送消息的设备 + continue + } + err = MessageService.SendToDevice(ctx, devices[i], &message) + if err != nil { + logger.Sugar.Error(err, zap.Any("SendToUser error", devices[i]), zap.Error(err)) + } + } + + return seq, nil +} + // SendToDevice 将消息发送给设备 func (*messageService) SendToDevice(ctx context.Context, device *pb.Device, message *pb.Message) error { messageSend := pb.MessageSend{Message: message} diff --git a/internal/logic/proxy/message_proxy.go b/internal/logic/proxy/message_proxy.go index a2e8044..42b102c 100644 --- a/internal/logic/proxy/message_proxy.go +++ b/internal/logic/proxy/message_proxy.go @@ -11,5 +11,6 @@ var MessageProxy messageProxy type messageProxy interface { SendToUser(ctx context.Context, sender *pb.Sender, toUserId int64, req *pb.SendMessageReq) (int64, error) + RecallMessageSendToUser(ctx context.Context, sender *pb.Sender, toUserId int64, req *pb.RecallMessageReq, isRecallMessageUser bool) (int64, error) PushToUser(ctx context.Context, userId int64, code pb.PushCode, message proto.Message, isPersist bool) error } diff --git a/pkg/pb/connect.ext.pb.go b/pkg/pb/connect.ext.pb.go index 381a364..4b8a750 100644 --- a/pkg/pb/connect.ext.pb.go +++ b/pkg/pb/connect.ext.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.14.0 -// source: connect.ext.proto_back +// protoc-gen-go v1.28.1 +// protoc v3.20.0--rc1 +// source: connect.ext.proto package pb @@ -91,6 +91,7 @@ const ( MessageType_MT_LOCATION MessageType = 6 // 地理位置 MessageType_MT_COMMAND MessageType = 7 // 指令推送 MessageType_MT_CUSTOM MessageType = 8 // 自定义 + MessageType_MT_RECALL MessageType = 9 // 撤回消息 ) // Enum value maps for MessageType. @@ -105,6 +106,7 @@ var ( 6: "MT_LOCATION", 7: "MT_COMMAND", 8: "MT_CUSTOM", + 9: "MT_RECALL", } MessageType_value = map[string]int32{ "MT_UNKNOWN": 0, @@ -116,6 +118,7 @@ var ( "MT_LOCATION": 6, "MT_COMMAND": 7, "MT_CUSTOM": 8, + "MT_RECALL": 9, } ) @@ -994,6 +997,54 @@ func (x *Custom) GetData() string { return "" } +// 撤回消息 +type RECALL struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RecallSeq int64 `protobuf:"varint,1,opt,name=recall_seq,json=recallSeq,proto3" json:"recall_seq,omitempty"` // 撤回消息seq +} + +func (x *RECALL) Reset() { + *x = RECALL{} + if protoimpl.UnsafeEnabled { + mi := &file_connect_ext_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RECALL) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RECALL) ProtoMessage() {} + +func (x *RECALL) ProtoReflect() protoreflect.Message { + mi := &file_connect_ext_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 RECALL.ProtoReflect.Descriptor instead. +func (*RECALL) Descriptor() ([]byte, []int) { + return file_connect_ext_proto_rawDescGZIP(), []int{10} +} + +func (x *RECALL) GetRecallSeq() int64 { + if x != nil { + return x.RecallSeq + } + return 0 +} + // 上行数据 type Input struct { state protoimpl.MessageState @@ -1008,7 +1059,7 @@ type Input struct { func (x *Input) Reset() { *x = Input{} if protoimpl.UnsafeEnabled { - mi := &file_connect_ext_proto_msgTypes[10] + mi := &file_connect_ext_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1021,7 +1072,7 @@ func (x *Input) String() string { func (*Input) ProtoMessage() {} func (x *Input) ProtoReflect() protoreflect.Message { - mi := &file_connect_ext_proto_msgTypes[10] + mi := &file_connect_ext_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1034,7 +1085,7 @@ func (x *Input) ProtoReflect() protoreflect.Message { // Deprecated: Use Input.ProtoReflect.Descriptor instead. func (*Input) Descriptor() ([]byte, []int) { - return file_connect_ext_proto_rawDescGZIP(), []int{10} + return file_connect_ext_proto_rawDescGZIP(), []int{11} } func (x *Input) GetType() PackageType { @@ -1074,7 +1125,7 @@ type Output struct { func (x *Output) Reset() { *x = Output{} if protoimpl.UnsafeEnabled { - mi := &file_connect_ext_proto_msgTypes[11] + mi := &file_connect_ext_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1087,7 +1138,7 @@ func (x *Output) String() string { func (*Output) ProtoMessage() {} func (x *Output) ProtoReflect() protoreflect.Message { - mi := &file_connect_ext_proto_msgTypes[11] + mi := &file_connect_ext_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1100,7 +1151,7 @@ func (x *Output) ProtoReflect() protoreflect.Message { // Deprecated: Use Output.ProtoReflect.Descriptor instead. func (*Output) Descriptor() ([]byte, []int) { - return file_connect_ext_proto_rawDescGZIP(), []int{11} + return file_connect_ext_proto_rawDescGZIP(), []int{12} } func (x *Output) GetType() PackageType { @@ -1152,7 +1203,7 @@ type SignInInput struct { func (x *SignInInput) Reset() { *x = SignInInput{} if protoimpl.UnsafeEnabled { - mi := &file_connect_ext_proto_msgTypes[12] + mi := &file_connect_ext_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1165,7 +1216,7 @@ func (x *SignInInput) String() string { func (*SignInInput) ProtoMessage() {} func (x *SignInInput) ProtoReflect() protoreflect.Message { - mi := &file_connect_ext_proto_msgTypes[12] + mi := &file_connect_ext_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1178,7 +1229,7 @@ func (x *SignInInput) ProtoReflect() protoreflect.Message { // Deprecated: Use SignInInput.ProtoReflect.Descriptor instead. func (*SignInInput) Descriptor() ([]byte, []int) { - return file_connect_ext_proto_rawDescGZIP(), []int{12} + return file_connect_ext_proto_rawDescGZIP(), []int{13} } func (x *SignInInput) GetDeviceId() int64 { @@ -1214,7 +1265,7 @@ type SyncInput struct { func (x *SyncInput) Reset() { *x = SyncInput{} if protoimpl.UnsafeEnabled { - mi := &file_connect_ext_proto_msgTypes[13] + mi := &file_connect_ext_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1227,7 +1278,7 @@ func (x *SyncInput) String() string { func (*SyncInput) ProtoMessage() {} func (x *SyncInput) ProtoReflect() protoreflect.Message { - mi := &file_connect_ext_proto_msgTypes[13] + mi := &file_connect_ext_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1240,7 +1291,7 @@ func (x *SyncInput) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncInput.ProtoReflect.Descriptor instead. func (*SyncInput) Descriptor() ([]byte, []int) { - return file_connect_ext_proto_rawDescGZIP(), []int{13} + return file_connect_ext_proto_rawDescGZIP(), []int{14} } func (x *SyncInput) GetSeq() int64 { @@ -1263,7 +1314,7 @@ type SyncOutput struct { func (x *SyncOutput) Reset() { *x = SyncOutput{} if protoimpl.UnsafeEnabled { - mi := &file_connect_ext_proto_msgTypes[14] + mi := &file_connect_ext_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1276,7 +1327,7 @@ func (x *SyncOutput) String() string { func (*SyncOutput) ProtoMessage() {} func (x *SyncOutput) ProtoReflect() protoreflect.Message { - mi := &file_connect_ext_proto_msgTypes[14] + mi := &file_connect_ext_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1289,7 +1340,7 @@ func (x *SyncOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncOutput.ProtoReflect.Descriptor instead. func (*SyncOutput) Descriptor() ([]byte, []int) { - return file_connect_ext_proto_rawDescGZIP(), []int{14} + return file_connect_ext_proto_rawDescGZIP(), []int{15} } func (x *SyncOutput) GetMessages() []*Message { @@ -1319,7 +1370,7 @@ type SubscribeRoomInput struct { func (x *SubscribeRoomInput) Reset() { *x = SubscribeRoomInput{} if protoimpl.UnsafeEnabled { - mi := &file_connect_ext_proto_msgTypes[15] + mi := &file_connect_ext_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1332,7 +1383,7 @@ func (x *SubscribeRoomInput) String() string { func (*SubscribeRoomInput) ProtoMessage() {} func (x *SubscribeRoomInput) ProtoReflect() protoreflect.Message { - mi := &file_connect_ext_proto_msgTypes[15] + mi := &file_connect_ext_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1345,7 +1396,7 @@ func (x *SubscribeRoomInput) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeRoomInput.ProtoReflect.Descriptor instead. func (*SubscribeRoomInput) Descriptor() ([]byte, []int) { - return file_connect_ext_proto_rawDescGZIP(), []int{15} + return file_connect_ext_proto_rawDescGZIP(), []int{16} } func (x *SubscribeRoomInput) GetRoomId() int64 { @@ -1374,7 +1425,7 @@ type MessageSend struct { func (x *MessageSend) Reset() { *x = MessageSend{} if protoimpl.UnsafeEnabled { - mi := &file_connect_ext_proto_msgTypes[16] + mi := &file_connect_ext_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1387,7 +1438,7 @@ func (x *MessageSend) String() string { func (*MessageSend) ProtoMessage() {} func (x *MessageSend) ProtoReflect() protoreflect.Message { - mi := &file_connect_ext_proto_msgTypes[16] + mi := &file_connect_ext_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1400,7 +1451,7 @@ func (x *MessageSend) ProtoReflect() protoreflect.Message { // Deprecated: Use MessageSend.ProtoReflect.Descriptor instead. func (*MessageSend) Descriptor() ([]byte, []int) { - return file_connect_ext_proto_rawDescGZIP(), []int{16} + return file_connect_ext_proto_rawDescGZIP(), []int{17} } func (x *MessageSend) GetMessage() *Message { @@ -1423,7 +1474,7 @@ type MessageACK struct { func (x *MessageACK) Reset() { *x = MessageACK{} if protoimpl.UnsafeEnabled { - mi := &file_connect_ext_proto_msgTypes[17] + mi := &file_connect_ext_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1436,7 +1487,7 @@ func (x *MessageACK) String() string { func (*MessageACK) ProtoMessage() {} func (x *MessageACK) ProtoReflect() protoreflect.Message { - mi := &file_connect_ext_proto_msgTypes[17] + mi := &file_connect_ext_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1449,7 +1500,7 @@ func (x *MessageACK) ProtoReflect() protoreflect.Message { // Deprecated: Use MessageACK.ProtoReflect.Descriptor instead. func (*MessageACK) Descriptor() ([]byte, []int) { - return file_connect_ext_proto_rawDescGZIP(), []int{17} + return file_connect_ext_proto_rawDescGZIP(), []int{18} } func (x *MessageACK) GetDeviceAck() int64 { @@ -1539,79 +1590,82 @@ var file_connect_ext_proto_rawDesc = []byte{ 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x1c, 0x0a, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5f, 0x0a, 0x05, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x12, 0x23, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8e, 0x01, 0x0a, - 0x06, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x23, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, - 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x59, 0x0a, - 0x0b, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x1d, 0x0a, 0x09, 0x53, 0x79, 0x6e, 0x63, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x73, 0x65, 0x71, 0x22, 0x50, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x19, - 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x6d, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x68, 0x61, 0x73, 0x4d, 0x6f, 0x72, 0x65, 0x22, 0x3f, 0x0a, 0x12, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, - 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x73, 0x65, 0x71, 0x22, 0x34, 0x0a, 0x0b, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x4e, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x43, 0x4b, 0x12, 0x1d, - 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x6b, 0x12, 0x21, 0x0a, - 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x2a, 0x73, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0e, 0x0a, 0x0a, 0x50, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0e, 0x0a, 0x0a, 0x50, 0x54, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x49, 0x4e, 0x10, 0x01, 0x12, - 0x0b, 0x0a, 0x07, 0x50, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, - 0x50, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x03, 0x12, 0x0e, - 0x0a, 0x0a, 0x50, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x15, - 0x0a, 0x11, 0x50, 0x54, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x5f, 0x52, - 0x4f, 0x4f, 0x4d, 0x10, 0x05, 0x2a, 0x90, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, - 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x54, 0x5f, 0x54, 0x45, 0x58, 0x54, - 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x54, 0x5f, 0x46, 0x41, 0x43, 0x45, 0x10, 0x02, 0x12, - 0x0c, 0x0a, 0x08, 0x4d, 0x54, 0x5f, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x10, 0x03, 0x12, 0x0c, 0x0a, - 0x08, 0x4d, 0x54, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, - 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x54, 0x5f, 0x4c, - 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x54, 0x5f, - 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x54, 0x5f, - 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x08, 0x2a, 0x46, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x54, 0x5f, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x54, 0x5f, 0x55, - 0x53, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x54, 0x5f, 0x47, 0x52, 0x4f, 0x55, - 0x50, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x54, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x03, - 0x2a, 0x49, 0x0a, 0x0a, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, - 0x0a, 0x0a, 0x53, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, - 0x0a, 0x09, 0x53, 0x54, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x10, 0x01, 0x12, 0x0b, 0x0a, - 0x07, 0x53, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, - 0x5f, 0x42, 0x55, 0x53, 0x49, 0x4e, 0x45, 0x53, 0x53, 0x10, 0x03, 0x2a, 0x3d, 0x0a, 0x0d, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x0a, - 0x4d, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, - 0x4d, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4d, - 0x53, 0x5f, 0x52, 0x45, 0x43, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x42, 0x0d, 0x5a, 0x0b, 0x67, 0x69, - 0x6d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x62, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x27, 0x0a, 0x06, 0x52, + 0x45, 0x43, 0x41, 0x4c, 0x4c, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x5f, + 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x65, 0x63, 0x61, 0x6c, + 0x6c, 0x53, 0x65, 0x71, 0x22, 0x5f, 0x0a, 0x05, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x23, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70, 0x62, + 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8e, 0x01, 0x0a, 0x06, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x12, 0x23, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, + 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x59, 0x0a, 0x0b, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0x1d, 0x0a, 0x09, 0x53, 0x79, 0x6e, 0x63, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x73, 0x65, 0x71, + 0x22, 0x50, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x27, + 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x6d, + 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x61, 0x73, 0x4d, 0x6f, + 0x72, 0x65, 0x22, 0x3f, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, + 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, + 0x64, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, + 0x73, 0x65, 0x71, 0x22, 0x34, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, + 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x4e, 0x0a, 0x0a, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x41, 0x43, 0x4b, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x41, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x2a, 0x73, 0x0a, 0x0b, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x54, 0x5f, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x54, 0x5f, 0x53, + 0x49, 0x47, 0x4e, 0x5f, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x54, 0x5f, 0x53, + 0x59, 0x4e, 0x43, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x52, + 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x54, 0x5f, 0x4d, 0x45, + 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x54, 0x5f, 0x53, 0x55, + 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x05, 0x2a, 0x9f, + 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, + 0x0a, 0x0a, 0x4d, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, + 0x0a, 0x07, 0x4d, 0x54, 0x5f, 0x54, 0x45, 0x58, 0x54, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4d, + 0x54, 0x5f, 0x46, 0x41, 0x43, 0x45, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x54, 0x5f, 0x56, + 0x4f, 0x49, 0x43, 0x45, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x54, 0x5f, 0x49, 0x4d, 0x41, + 0x47, 0x45, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, + 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x54, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, + 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x54, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, + 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x41, 0x4c, 0x4c, 0x10, 0x09, + 0x2a, 0x46, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0c, 0x0a, + 0x08, 0x52, 0x54, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, + 0x54, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x03, 0x2a, 0x49, 0x0a, 0x0a, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, 0x5f, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x5f, 0x53, 0x59, 0x53, + 0x54, 0x45, 0x4d, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, + 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x5f, 0x42, 0x55, 0x53, 0x49, 0x4e, 0x45, 0x53, + 0x53, 0x10, 0x03, 0x2a, 0x3d, 0x0a, 0x0d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, + 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, + 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x53, 0x5f, 0x52, 0x45, 0x43, 0x41, 0x4c, 0x4c, + 0x10, 0x02, 0x42, 0x0d, 0x5a, 0x0b, 0x67, 0x69, 0x6d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x62, + 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1627,7 +1681,7 @@ func file_connect_ext_proto_rawDescGZIP() []byte { } var file_connect_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_connect_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_connect_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 19) var file_connect_ext_proto_goTypes = []interface{}{ (PackageType)(0), // 0: pb.PackageType (MessageType)(0), // 1: pb.MessageType @@ -1644,14 +1698,15 @@ var file_connect_ext_proto_goTypes = []interface{}{ (*Location)(nil), // 12: pb.Location (*Command)(nil), // 13: pb.Command (*Custom)(nil), // 14: pb.Custom - (*Input)(nil), // 15: pb.Input - (*Output)(nil), // 16: pb.Output - (*SignInInput)(nil), // 17: pb.SignInInput - (*SyncInput)(nil), // 18: pb.SyncInput - (*SyncOutput)(nil), // 19: pb.SyncOutput - (*SubscribeRoomInput)(nil), // 20: pb.SubscribeRoomInput - (*MessageSend)(nil), // 21: pb.MessageSend - (*MessageACK)(nil), // 22: pb.MessageACK + (*RECALL)(nil), // 15: pb.RECALL + (*Input)(nil), // 16: pb.Input + (*Output)(nil), // 17: pb.Output + (*SignInInput)(nil), // 18: pb.SignInInput + (*SyncInput)(nil), // 19: pb.SyncInput + (*SyncOutput)(nil), // 20: pb.SyncOutput + (*SubscribeRoomInput)(nil), // 21: pb.SubscribeRoomInput + (*MessageSend)(nil), // 22: pb.MessageSend + (*MessageACK)(nil), // 23: pb.MessageACK } var file_connect_ext_proto_depIdxs = []int32{ 6, // 0: pb.Message.sender:type_name -> pb.Sender @@ -1797,7 +1852,7 @@ func file_connect_ext_proto_init() { } } file_connect_ext_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Input); i { + switch v := v.(*RECALL); i { case 0: return &v.state case 1: @@ -1809,7 +1864,7 @@ func file_connect_ext_proto_init() { } } file_connect_ext_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Output); i { + switch v := v.(*Input); i { case 0: return &v.state case 1: @@ -1821,7 +1876,7 @@ func file_connect_ext_proto_init() { } } file_connect_ext_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignInInput); i { + switch v := v.(*Output); i { case 0: return &v.state case 1: @@ -1833,7 +1888,7 @@ func file_connect_ext_proto_init() { } } file_connect_ext_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncInput); i { + switch v := v.(*SignInInput); i { case 0: return &v.state case 1: @@ -1845,7 +1900,7 @@ func file_connect_ext_proto_init() { } } file_connect_ext_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncOutput); i { + switch v := v.(*SyncInput); i { case 0: return &v.state case 1: @@ -1857,7 +1912,7 @@ func file_connect_ext_proto_init() { } } file_connect_ext_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeRoomInput); i { + switch v := v.(*SyncOutput); i { case 0: return &v.state case 1: @@ -1869,7 +1924,7 @@ func file_connect_ext_proto_init() { } } file_connect_ext_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MessageSend); i { + switch v := v.(*SubscribeRoomInput); i { case 0: return &v.state case 1: @@ -1881,6 +1936,18 @@ func file_connect_ext_proto_init() { } } file_connect_ext_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageSend); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_connect_ext_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MessageACK); i { case 0: return &v.state @@ -1899,7 +1966,7 @@ func file_connect_ext_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_connect_ext_proto_rawDesc, NumEnums: 5, - NumMessages: 18, + NumMessages: 19, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/pb/logic.ext.pb.go b/pkg/pb/logic.ext.pb.go index 2ac45fd..a5cce9c 100644 --- a/pkg/pb/logic.ext.pb.go +++ b/pkg/pb/logic.ext.pb.go @@ -7,14 +7,14 @@ package pb import ( - context "context" + "context" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoimpl" + "reflect" + "sync" ) const ( @@ -28,7 +28,7 @@ type MemberType int32 const ( MemberType_GMT_UNKNOWN MemberType = 0 // 未知 - MemberType_GMT_ADMIN MemberType = 1 // 管理员 + MembertypeGmtAdmin MemberType = 1 // 管理员 MemberType_GMT_MEMBER MemberType = 2 // 成员 ) @@ -349,6 +349,156 @@ func (x *SendMessageResp) GetSeq() int64 { return 0 } +type RecallMessageReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ReceiverType ReceiverType `protobuf:"varint,1,opt,name=receiver_type,json=receiverType,proto3,enum=pb.ReceiverType" json:"receiver_type,omitempty"` // 接收者类型,1:user;2:group + ReceiverId int64 `protobuf:"varint,2,opt,name=receiver_id,json=receiverId,proto3" json:"receiver_id,omitempty"` // 用户id或者群组id + ToUserIds []int64 `protobuf:"varint,3,rep,packed,name=to_user_ids,json=toUserIds,proto3" json:"to_user_ids,omitempty"` // 需要@的用户id列表 + MessageType MessageType `protobuf:"varint,4,opt,name=message_type,json=messageType,proto3,enum=pb.MessageType" json:"message_type,omitempty"` // 消息类型 + MessageContent []byte `protobuf:"bytes,5,opt,name=message_content,json=messageContent,proto3" json:"message_content,omitempty"` // 消息内容 + SendTime int64 `protobuf:"varint,6,opt,name=send_time,json=sendTime,proto3" json:"send_time,omitempty"` // 消息发送时间戳,精确到毫秒 + IsPersist bool `protobuf:"varint,7,opt,name=is_persist,json=isPersist,proto3" json:"is_persist,omitempty"` // 是否将消息持久化到数据库 + MessageContentBack string `protobuf:"bytes,8,opt,name=message_content_back,json=messageContentBack,proto3" json:"message_content_back,omitempty"` +} + +func (x *RecallMessageReq) Reset() { + *x = RecallMessageReq{} + if protoimpl.UnsafeEnabled { + mi := &file_logic_ext_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RecallMessageReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RecallMessageReq) ProtoMessage() {} + +func (x *RecallMessageReq) ProtoReflect() protoreflect.Message { + mi := &file_logic_ext_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 RecallMessageReq.ProtoReflect.Descriptor instead. +func (*RecallMessageReq) Descriptor() ([]byte, []int) { + return file_logic_ext_proto_rawDescGZIP(), []int{4} +} + +func (x *RecallMessageReq) GetReceiverType() ReceiverType { + if x != nil { + return x.ReceiverType + } + return ReceiverType_RT_UNKNOWN +} + +func (x *RecallMessageReq) GetReceiverId() int64 { + if x != nil { + return x.ReceiverId + } + return 0 +} + +func (x *RecallMessageReq) GetToUserIds() []int64 { + if x != nil { + return x.ToUserIds + } + return nil +} + +func (x *RecallMessageReq) GetMessageType() MessageType { + if x != nil { + return x.MessageType + } + return MessageType_MT_UNKNOWN +} + +func (x *RecallMessageReq) GetMessageContent() []byte { + if x != nil { + return x.MessageContent + } + return nil +} + +func (x *RecallMessageReq) GetSendTime() int64 { + if x != nil { + return x.SendTime + } + return 0 +} + +func (x *RecallMessageReq) GetIsPersist() bool { + if x != nil { + return x.IsPersist + } + return false +} + +func (x *RecallMessageReq) GetMessageContentBack() string { + if x != nil { + return x.MessageContentBack + } + return "" +} + +type RecallMessageResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Seq int64 `protobuf:"varint,1,opt,name=seq,proto3" json:"seq,omitempty"` // 消息序列号 +} + +func (x *RecallMessageResp) Reset() { + *x = RecallMessageResp{} + if protoimpl.UnsafeEnabled { + mi := &file_logic_ext_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RecallMessageResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RecallMessageResp) ProtoMessage() {} + +func (x *RecallMessageResp) ProtoReflect() protoreflect.Message { + mi := &file_logic_ext_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 RecallMessageResp.ProtoReflect.Descriptor instead. +func (*RecallMessageResp) Descriptor() ([]byte, []int) { + return file_logic_ext_proto_rawDescGZIP(), []int{5} +} + +func (x *RecallMessageResp) GetSeq() int64 { + if x != nil { + return x.Seq + } + return 0 +} + type PushRoomReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -365,7 +515,7 @@ type PushRoomReq struct { func (x *PushRoomReq) Reset() { *x = PushRoomReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[4] + mi := &file_logic_ext_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -378,7 +528,7 @@ func (x *PushRoomReq) String() string { func (*PushRoomReq) ProtoMessage() {} func (x *PushRoomReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[4] + mi := &file_logic_ext_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -391,7 +541,7 @@ func (x *PushRoomReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PushRoomReq.ProtoReflect.Descriptor instead. func (*PushRoomReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{4} + return file_logic_ext_proto_rawDescGZIP(), []int{6} } func (x *PushRoomReq) GetRoomId() int64 { @@ -449,7 +599,7 @@ type AddFriendReq struct { func (x *AddFriendReq) Reset() { *x = AddFriendReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[5] + mi := &file_logic_ext_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -462,7 +612,7 @@ func (x *AddFriendReq) String() string { func (*AddFriendReq) ProtoMessage() {} func (x *AddFriendReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[5] + mi := &file_logic_ext_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -475,7 +625,7 @@ func (x *AddFriendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddFriendReq.ProtoReflect.Descriptor instead. func (*AddFriendReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{5} + return file_logic_ext_proto_rawDescGZIP(), []int{7} } func (x *AddFriendReq) GetFriendId() int64 { @@ -510,7 +660,7 @@ type DeleteFriendReq struct { func (x *DeleteFriendReq) Reset() { *x = DeleteFriendReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[6] + mi := &file_logic_ext_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -523,7 +673,7 @@ func (x *DeleteFriendReq) String() string { func (*DeleteFriendReq) ProtoMessage() {} func (x *DeleteFriendReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[6] + mi := &file_logic_ext_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -536,7 +686,7 @@ func (x *DeleteFriendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFriendReq.ProtoReflect.Descriptor instead. func (*DeleteFriendReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{6} + return file_logic_ext_proto_rawDescGZIP(), []int{8} } func (x *DeleteFriendReq) GetUserId() int64 { @@ -558,7 +708,7 @@ type AgreeAddFriendReq struct { func (x *AgreeAddFriendReq) Reset() { *x = AgreeAddFriendReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[7] + mi := &file_logic_ext_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -571,7 +721,7 @@ func (x *AgreeAddFriendReq) String() string { func (*AgreeAddFriendReq) ProtoMessage() {} func (x *AgreeAddFriendReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[7] + mi := &file_logic_ext_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -584,7 +734,7 @@ func (x *AgreeAddFriendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AgreeAddFriendReq.ProtoReflect.Descriptor instead. func (*AgreeAddFriendReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{7} + return file_logic_ext_proto_rawDescGZIP(), []int{9} } func (x *AgreeAddFriendReq) GetUserId() int64 { @@ -614,7 +764,7 @@ type SetFriendReq struct { func (x *SetFriendReq) Reset() { *x = SetFriendReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[8] + mi := &file_logic_ext_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -627,7 +777,7 @@ func (x *SetFriendReq) String() string { func (*SetFriendReq) ProtoMessage() {} func (x *SetFriendReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[8] + mi := &file_logic_ext_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -640,7 +790,7 @@ func (x *SetFriendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetFriendReq.ProtoReflect.Descriptor instead. func (*SetFriendReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{8} + return file_logic_ext_proto_rawDescGZIP(), []int{10} } func (x *SetFriendReq) GetFriendId() int64 { @@ -677,7 +827,7 @@ type SetFriendResp struct { func (x *SetFriendResp) Reset() { *x = SetFriendResp{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[9] + mi := &file_logic_ext_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -690,7 +840,7 @@ func (x *SetFriendResp) String() string { func (*SetFriendResp) ProtoMessage() {} func (x *SetFriendResp) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[9] + mi := &file_logic_ext_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -703,7 +853,7 @@ func (x *SetFriendResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetFriendResp.ProtoReflect.Descriptor instead. func (*SetFriendResp) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{9} + return file_logic_ext_proto_rawDescGZIP(), []int{11} } func (x *SetFriendResp) GetFriendId() int64 { @@ -745,7 +895,7 @@ type Friend struct { func (x *Friend) Reset() { *x = Friend{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[10] + mi := &file_logic_ext_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -758,7 +908,7 @@ func (x *Friend) String() string { func (*Friend) ProtoMessage() {} func (x *Friend) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[10] + mi := &file_logic_ext_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -771,7 +921,7 @@ func (x *Friend) ProtoReflect() protoreflect.Message { // Deprecated: Use Friend.ProtoReflect.Descriptor instead. func (*Friend) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{10} + return file_logic_ext_proto_rawDescGZIP(), []int{12} } func (x *Friend) GetUserId() int64 { @@ -841,7 +991,7 @@ type GetFriendsResp struct { func (x *GetFriendsResp) Reset() { *x = GetFriendsResp{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[11] + mi := &file_logic_ext_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -854,7 +1004,7 @@ func (x *GetFriendsResp) String() string { func (*GetFriendsResp) ProtoMessage() {} func (x *GetFriendsResp) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[11] + mi := &file_logic_ext_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -867,7 +1017,7 @@ func (x *GetFriendsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFriendsResp.ProtoReflect.Descriptor instead. func (*GetFriendsResp) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{11} + return file_logic_ext_proto_rawDescGZIP(), []int{13} } func (x *GetFriendsResp) GetFriends() []*Friend { @@ -892,7 +1042,7 @@ type CreateGroupReq struct { func (x *CreateGroupReq) Reset() { *x = CreateGroupReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[12] + mi := &file_logic_ext_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -905,7 +1055,7 @@ func (x *CreateGroupReq) String() string { func (*CreateGroupReq) ProtoMessage() {} func (x *CreateGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[12] + mi := &file_logic_ext_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -918,7 +1068,7 @@ func (x *CreateGroupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateGroupReq.ProtoReflect.Descriptor instead. func (*CreateGroupReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{12} + return file_logic_ext_proto_rawDescGZIP(), []int{14} } func (x *CreateGroupReq) GetName() string { @@ -967,7 +1117,7 @@ type CreateGroupResp struct { func (x *CreateGroupResp) Reset() { *x = CreateGroupResp{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[13] + mi := &file_logic_ext_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -980,7 +1130,7 @@ func (x *CreateGroupResp) String() string { func (*CreateGroupResp) ProtoMessage() {} func (x *CreateGroupResp) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[13] + mi := &file_logic_ext_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -993,7 +1143,7 @@ func (x *CreateGroupResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateGroupResp.ProtoReflect.Descriptor instead. func (*CreateGroupResp) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{13} + return file_logic_ext_proto_rawDescGZIP(), []int{15} } func (x *CreateGroupResp) GetGroupId() int64 { @@ -1018,7 +1168,7 @@ type UpdateGroupReq struct { func (x *UpdateGroupReq) Reset() { *x = UpdateGroupReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[14] + mi := &file_logic_ext_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1031,7 +1181,7 @@ func (x *UpdateGroupReq) String() string { func (*UpdateGroupReq) ProtoMessage() {} func (x *UpdateGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[14] + mi := &file_logic_ext_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1044,7 +1194,7 @@ func (x *UpdateGroupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGroupReq.ProtoReflect.Descriptor instead. func (*UpdateGroupReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{14} + return file_logic_ext_proto_rawDescGZIP(), []int{16} } func (x *UpdateGroupReq) GetGroupId() int64 { @@ -1093,7 +1243,7 @@ type GetGroupReq struct { func (x *GetGroupReq) Reset() { *x = GetGroupReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[15] + mi := &file_logic_ext_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1106,7 +1256,7 @@ func (x *GetGroupReq) String() string { func (*GetGroupReq) ProtoMessage() {} func (x *GetGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[15] + mi := &file_logic_ext_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1119,7 +1269,7 @@ func (x *GetGroupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupReq.ProtoReflect.Descriptor instead. func (*GetGroupReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{15} + return file_logic_ext_proto_rawDescGZIP(), []int{17} } func (x *GetGroupReq) GetGroupId() int64 { @@ -1140,7 +1290,7 @@ type GetGroupResp struct { func (x *GetGroupResp) Reset() { *x = GetGroupResp{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[16] + mi := &file_logic_ext_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1153,7 +1303,7 @@ func (x *GetGroupResp) String() string { func (*GetGroupResp) ProtoMessage() {} func (x *GetGroupResp) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[16] + mi := &file_logic_ext_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1166,7 +1316,7 @@ func (x *GetGroupResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupResp.ProtoReflect.Descriptor instead. func (*GetGroupResp) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{16} + return file_logic_ext_proto_rawDescGZIP(), []int{18} } func (x *GetGroupResp) GetGroup() *Group { @@ -1194,7 +1344,7 @@ type Group struct { func (x *Group) Reset() { *x = Group{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[17] + mi := &file_logic_ext_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1207,7 +1357,7 @@ func (x *Group) String() string { func (*Group) ProtoMessage() {} func (x *Group) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[17] + mi := &file_logic_ext_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1220,7 +1370,7 @@ func (x *Group) ProtoReflect() protoreflect.Message { // Deprecated: Use Group.ProtoReflect.Descriptor instead. func (*Group) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{17} + return file_logic_ext_proto_rawDescGZIP(), []int{19} } func (x *Group) GetGroupId() int64 { @@ -1290,7 +1440,7 @@ type GetGroupsResp struct { func (x *GetGroupsResp) Reset() { *x = GetGroupsResp{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[18] + mi := &file_logic_ext_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1303,7 +1453,7 @@ func (x *GetGroupsResp) String() string { func (*GetGroupsResp) ProtoMessage() {} func (x *GetGroupsResp) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[18] + mi := &file_logic_ext_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1316,7 +1466,7 @@ func (x *GetGroupsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupsResp.ProtoReflect.Descriptor instead. func (*GetGroupsResp) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{18} + return file_logic_ext_proto_rawDescGZIP(), []int{20} } func (x *GetGroupsResp) GetGroups() []*Group { @@ -1338,7 +1488,7 @@ type AddGroupMembersReq struct { func (x *AddGroupMembersReq) Reset() { *x = AddGroupMembersReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[19] + mi := &file_logic_ext_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1351,7 +1501,7 @@ func (x *AddGroupMembersReq) String() string { func (*AddGroupMembersReq) ProtoMessage() {} func (x *AddGroupMembersReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[19] + mi := &file_logic_ext_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1364,7 +1514,7 @@ func (x *AddGroupMembersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddGroupMembersReq.ProtoReflect.Descriptor instead. func (*AddGroupMembersReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{19} + return file_logic_ext_proto_rawDescGZIP(), []int{21} } func (x *AddGroupMembersReq) GetGroupId() int64 { @@ -1392,7 +1542,7 @@ type AddGroupMembersResp struct { func (x *AddGroupMembersResp) Reset() { *x = AddGroupMembersResp{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[20] + mi := &file_logic_ext_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1405,7 +1555,7 @@ func (x *AddGroupMembersResp) String() string { func (*AddGroupMembersResp) ProtoMessage() {} func (x *AddGroupMembersResp) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[20] + mi := &file_logic_ext_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1418,7 +1568,7 @@ func (x *AddGroupMembersResp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddGroupMembersResp.ProtoReflect.Descriptor instead. func (*AddGroupMembersResp) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{20} + return file_logic_ext_proto_rawDescGZIP(), []int{22} } func (x *AddGroupMembersResp) GetUserIds() []int64 { @@ -1443,7 +1593,7 @@ type UpdateGroupMemberReq struct { func (x *UpdateGroupMemberReq) Reset() { *x = UpdateGroupMemberReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[21] + mi := &file_logic_ext_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1456,7 +1606,7 @@ func (x *UpdateGroupMemberReq) String() string { func (*UpdateGroupMemberReq) ProtoMessage() {} func (x *UpdateGroupMemberReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[21] + mi := &file_logic_ext_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1469,7 +1619,7 @@ func (x *UpdateGroupMemberReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGroupMemberReq.ProtoReflect.Descriptor instead. func (*UpdateGroupMemberReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{21} + return file_logic_ext_proto_rawDescGZIP(), []int{23} } func (x *UpdateGroupMemberReq) GetGroupId() int64 { @@ -1519,7 +1669,7 @@ type DeleteGroupMemberReq struct { func (x *DeleteGroupMemberReq) Reset() { *x = DeleteGroupMemberReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[22] + mi := &file_logic_ext_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1532,7 +1682,7 @@ func (x *DeleteGroupMemberReq) String() string { func (*DeleteGroupMemberReq) ProtoMessage() {} func (x *DeleteGroupMemberReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[22] + mi := &file_logic_ext_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1545,7 +1695,7 @@ func (x *DeleteGroupMemberReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGroupMemberReq.ProtoReflect.Descriptor instead. func (*DeleteGroupMemberReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{22} + return file_logic_ext_proto_rawDescGZIP(), []int{24} } func (x *DeleteGroupMemberReq) GetGroupId() int64 { @@ -1573,7 +1723,7 @@ type GetGroupMembersReq struct { func (x *GetGroupMembersReq) Reset() { *x = GetGroupMembersReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[23] + mi := &file_logic_ext_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1586,7 +1736,7 @@ func (x *GetGroupMembersReq) String() string { func (*GetGroupMembersReq) ProtoMessage() {} func (x *GetGroupMembersReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[23] + mi := &file_logic_ext_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1599,7 +1749,7 @@ func (x *GetGroupMembersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupMembersReq.ProtoReflect.Descriptor instead. func (*GetGroupMembersReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{23} + return file_logic_ext_proto_rawDescGZIP(), []int{25} } func (x *GetGroupMembersReq) GetGroupId() int64 { @@ -1620,7 +1770,7 @@ type GetGroupMembersResp struct { func (x *GetGroupMembersResp) Reset() { *x = GetGroupMembersResp{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[24] + mi := &file_logic_ext_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1633,7 +1783,7 @@ func (x *GetGroupMembersResp) String() string { func (*GetGroupMembersResp) ProtoMessage() {} func (x *GetGroupMembersResp) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[24] + mi := &file_logic_ext_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1646,7 +1796,7 @@ func (x *GetGroupMembersResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupMembersResp.ProtoReflect.Descriptor instead. func (*GetGroupMembersResp) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{24} + return file_logic_ext_proto_rawDescGZIP(), []int{26} } func (x *GetGroupMembersResp) GetMembers() []*GroupMember { @@ -1674,7 +1824,7 @@ type GroupMember struct { func (x *GroupMember) Reset() { *x = GroupMember{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[25] + mi := &file_logic_ext_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1687,7 +1837,7 @@ func (x *GroupMember) String() string { func (*GroupMember) ProtoMessage() {} func (x *GroupMember) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[25] + mi := &file_logic_ext_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1700,7 +1850,7 @@ func (x *GroupMember) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupMember.ProtoReflect.Descriptor instead. func (*GroupMember) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{25} + return file_logic_ext_proto_rawDescGZIP(), []int{27} } func (x *GroupMember) GetUserId() int64 { @@ -1802,215 +1952,243 @@ var file_logic_ext_proto_rawDesc = []byte{ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x22, 0x23, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x03, 0x73, 0x65, 0x71, 0x22, 0xe0, 0x01, 0x0a, 0x0b, 0x50, 0x75, 0x73, 0x68, 0x52, - 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, - 0x32, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, - 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, - 0x73, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, - 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x67, 0x0a, 0x0c, 0x41, 0x64, 0x64, - 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x2a, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x46, - 0x0a, 0x11, 0x41, 0x67, 0x72, 0x65, 0x65, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, - 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x22, 0x5b, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x02, + 0x03, 0x52, 0x03, 0x73, 0x65, 0x71, 0x22, 0xd5, 0x02, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x61, 0x6c, + 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x35, 0x0a, 0x0d, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x14, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, + 0x62, 0x61, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x22, 0x25, + 0x0a, 0x11, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x73, 0x65, 0x71, 0x22, 0xe0, 0x01, 0x0a, 0x0b, 0x50, 0x75, 0x73, 0x68, 0x52, 0x6f, + 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x32, + 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, + 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, + 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, + 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, + 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x67, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x2a, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x46, 0x0a, + 0x11, 0x41, 0x67, 0x72, 0x65, 0x65, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, + 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, + 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, + 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x22, 0x5b, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, + 0x72, 0x61, 0x22, 0x5c, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, + 0x22, 0xe0, 0x01, 0x0a, 0x06, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, + 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, + 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x74, + 0x72, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x78, + 0x74, 0x72, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, - 0x74, 0x72, 0x61, 0x22, 0x5c, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, - 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x22, 0xe0, 0x01, 0x0a, 0x06, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, - 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, - 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x78, - 0x74, 0x72, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, - 0x78, 0x74, 0x72, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x78, 0x74, 0x72, 0x61, 0x22, 0x36, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x07, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x52, 0x07, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x22, 0x9c, 0x01, 0x0a, - 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, - 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x1d, 0x0a, 0x0a, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x03, - 0x52, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x2c, 0x0a, 0x0f, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, - 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x0e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, - 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, - 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, - 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x78, 0x74, 0x72, 0x61, 0x22, 0x28, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x2f, - 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1f, - 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, - 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, - 0xec, 0x01, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, - 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, - 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, - 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x75, - 0x73, 0x65, 0x72, 0x4d, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x1f, 0x0a, 0x0b, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x32, - 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x21, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x22, 0x4a, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, + 0x74, 0x72, 0x61, 0x22, 0x36, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x07, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x52, 0x07, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x0e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, + 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x03, 0x52, + 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x2c, 0x0a, 0x0f, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a, + 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, + 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x22, 0x28, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x2f, 0x0a, + 0x0c, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1f, 0x0a, + 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x70, + 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xec, + 0x01, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x30, - 0x0a, 0x13, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, - 0x22, 0xab, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2f, 0x0a, - 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x4a, - 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x12, 0x47, 0x65, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x40, 0x0a, 0x13, 0x47, - 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x29, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0xf3, 0x01, - 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, 0x0a, - 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x73, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, - 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x78, 0x74, - 0x72, 0x61, 0x12, 0x2f, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, - 0x74, 0x72, 0x61, 0x2a, 0x3c, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x4d, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x4d, 0x54, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, - 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x4d, 0x54, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, - 0x02, 0x32, 0xd4, 0x06, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x45, 0x78, 0x74, 0x12, 0x3f, - 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x36, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, - 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x08, 0x50, 0x75, 0x73, 0x68, 0x52, - 0x6f, 0x6f, 0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x52, 0x6f, 0x6f, - 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, - 0x28, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x2e, 0x70, - 0x62, 0x2e, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, - 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x32, 0x0a, 0x0e, 0x41, 0x67, 0x72, - 0x65, 0x65, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x15, 0x2e, 0x70, 0x62, - 0x2e, 0x41, 0x67, 0x72, 0x65, 0x65, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, - 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2e, 0x0a, - 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x13, 0x2e, - 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, - 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x30, 0x0a, - 0x09, 0x53, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x2e, - 0x53, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, - 0x62, 0x2e, 0x53, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x2b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x09, 0x2e, - 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, - 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x0b, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, - 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0f, - 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, - 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x29, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x09, - 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x0f, - 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, - 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x38, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, - 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x11, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x1a, - 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0d, 0x5a, 0x0b, 0x67, 0x69, 0x6d, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x62, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, + 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, + 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x6d, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x75, 0x73, + 0x65, 0x72, 0x4d, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x32, 0x0a, + 0x0d, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x21, + 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, + 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x22, 0x4a, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x30, 0x0a, + 0x13, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, + 0xab, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0b, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x4a, 0x0a, + 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, + 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x12, 0x47, 0x65, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x12, + 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x40, 0x0a, 0x13, 0x47, 0x65, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x29, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0xf3, 0x01, 0x0a, + 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x73, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, + 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x78, 0x74, 0x72, + 0x61, 0x12, 0x2f, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, + 0x72, 0x61, 0x2a, 0x3c, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x4d, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x4d, 0x54, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x01, + 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x4d, 0x54, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, + 0x32, 0x92, 0x07, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x45, 0x78, 0x74, 0x12, 0x3f, 0x0a, + 0x0e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, + 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x2e, + 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x63, + 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, + 0x70, 0x62, 0x2e, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x08, 0x50, 0x75, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, + 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, + 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x28, 0x0a, 0x09, + 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x41, + 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x32, 0x0a, 0x0e, 0x41, 0x67, 0x72, 0x65, 0x65, 0x41, + 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x67, + 0x72, 0x65, 0x65, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, + 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2e, 0x0a, 0x0c, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, + 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x09, 0x53, 0x65, + 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, + 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x0a, + 0x47, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x0b, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, + 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x2c, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, + 0x2d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0f, 0x2e, 0x70, 0x62, + 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, + 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, + 0x0a, 0x09, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x09, 0x2e, 0x70, 0x62, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x0f, 0x41, 0x64, 0x64, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x16, 0x2e, 0x70, + 0x62, 0x2e, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, + 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, + 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x70, + 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x12, 0x42, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, + 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0d, 0x5a, 0x0b, 0x67, 0x69, 0x6d, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x70, 0x62, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2026,86 +2204,92 @@ func file_logic_ext_proto_rawDescGZIP() []byte { } var file_logic_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_logic_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 26) +var file_logic_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 28) var file_logic_ext_proto_goTypes = []interface{}{ (MemberType)(0), // 0: pb.MemberType (*RegisterDeviceReq)(nil), // 1: pb.RegisterDeviceReq (*RegisterDeviceResp)(nil), // 2: pb.RegisterDeviceResp (*SendMessageReq)(nil), // 3: pb.SendMessageReq (*SendMessageResp)(nil), // 4: pb.SendMessageResp - (*PushRoomReq)(nil), // 5: pb.PushRoomReq - (*AddFriendReq)(nil), // 6: pb.AddFriendReq - (*DeleteFriendReq)(nil), // 7: pb.DeleteFriendReq - (*AgreeAddFriendReq)(nil), // 8: pb.AgreeAddFriendReq - (*SetFriendReq)(nil), // 9: pb.SetFriendReq - (*SetFriendResp)(nil), // 10: pb.SetFriendResp - (*Friend)(nil), // 11: pb.Friend - (*GetFriendsResp)(nil), // 12: pb.GetFriendsResp - (*CreateGroupReq)(nil), // 13: pb.CreateGroupReq - (*CreateGroupResp)(nil), // 14: pb.CreateGroupResp - (*UpdateGroupReq)(nil), // 15: pb.UpdateGroupReq - (*GetGroupReq)(nil), // 16: pb.GetGroupReq - (*GetGroupResp)(nil), // 17: pb.GetGroupResp - (*Group)(nil), // 18: pb.Group - (*GetGroupsResp)(nil), // 19: pb.GetGroupsResp - (*AddGroupMembersReq)(nil), // 20: pb.AddGroupMembersReq - (*AddGroupMembersResp)(nil), // 21: pb.AddGroupMembersResp - (*UpdateGroupMemberReq)(nil), // 22: pb.UpdateGroupMemberReq - (*DeleteGroupMemberReq)(nil), // 23: pb.DeleteGroupMemberReq - (*GetGroupMembersReq)(nil), // 24: pb.GetGroupMembersReq - (*GetGroupMembersResp)(nil), // 25: pb.GetGroupMembersResp - (*GroupMember)(nil), // 26: pb.GroupMember - (ReceiverType)(0), // 27: pb.ReceiverType - (MessageType)(0), // 28: pb.MessageType - (*Empty)(nil), // 29: pb.Empty + (*RecallMessageReq)(nil), // 5: pb.RecallMessageReq + (*RecallMessageResp)(nil), // 6: pb.RecallMessageResp + (*PushRoomReq)(nil), // 7: pb.PushRoomReq + (*AddFriendReq)(nil), // 8: pb.AddFriendReq + (*DeleteFriendReq)(nil), // 9: pb.DeleteFriendReq + (*AgreeAddFriendReq)(nil), // 10: pb.AgreeAddFriendReq + (*SetFriendReq)(nil), // 11: pb.SetFriendReq + (*SetFriendResp)(nil), // 12: pb.SetFriendResp + (*Friend)(nil), // 13: pb.Friend + (*GetFriendsResp)(nil), // 14: pb.GetFriendsResp + (*CreateGroupReq)(nil), // 15: pb.CreateGroupReq + (*CreateGroupResp)(nil), // 16: pb.CreateGroupResp + (*UpdateGroupReq)(nil), // 17: pb.UpdateGroupReq + (*GetGroupReq)(nil), // 18: pb.GetGroupReq + (*GetGroupResp)(nil), // 19: pb.GetGroupResp + (*Group)(nil), // 20: pb.Group + (*GetGroupsResp)(nil), // 21: pb.GetGroupsResp + (*AddGroupMembersReq)(nil), // 22: pb.AddGroupMembersReq + (*AddGroupMembersResp)(nil), // 23: pb.AddGroupMembersResp + (*UpdateGroupMemberReq)(nil), // 24: pb.UpdateGroupMemberReq + (*DeleteGroupMemberReq)(nil), // 25: pb.DeleteGroupMemberReq + (*GetGroupMembersReq)(nil), // 26: pb.GetGroupMembersReq + (*GetGroupMembersResp)(nil), // 27: pb.GetGroupMembersResp + (*GroupMember)(nil), // 28: pb.GroupMember + (ReceiverType)(0), // 29: pb.ReceiverType + (MessageType)(0), // 30: pb.MessageType + (*Empty)(nil), // 31: pb.Empty } var file_logic_ext_proto_depIdxs = []int32{ - 27, // 0: pb.SendMessageReq.receiver_type:type_name -> pb.ReceiverType - 28, // 1: pb.SendMessageReq.message_type:type_name -> pb.MessageType - 28, // 2: pb.PushRoomReq.message_type:type_name -> pb.MessageType - 11, // 3: pb.GetFriendsResp.friends:type_name -> pb.Friend - 18, // 4: pb.GetGroupResp.group:type_name -> pb.Group - 18, // 5: pb.GetGroupsResp.groups:type_name -> pb.Group - 0, // 6: pb.UpdateGroupMemberReq.member_type:type_name -> pb.MemberType - 26, // 7: pb.GetGroupMembersResp.members:type_name -> pb.GroupMember - 0, // 8: pb.GroupMember.member_type:type_name -> pb.MemberType - 1, // 9: pb.LogicExt.RegisterDevice:input_type -> pb.RegisterDeviceReq - 3, // 10: pb.LogicExt.SendMessage:input_type -> pb.SendMessageReq - 5, // 11: pb.LogicExt.PushRoom:input_type -> pb.PushRoomReq - 6, // 12: pb.LogicExt.AddFriend:input_type -> pb.AddFriendReq - 8, // 13: pb.LogicExt.AgreeAddFriend:input_type -> pb.AgreeAddFriendReq - 7, // 14: pb.LogicExt.DeleteFriend:input_type -> pb.DeleteFriendReq - 9, // 15: pb.LogicExt.SetFriend:input_type -> pb.SetFriendReq - 29, // 16: pb.LogicExt.GetFriends:input_type -> pb.Empty - 13, // 17: pb.LogicExt.CreateGroup:input_type -> pb.CreateGroupReq - 15, // 18: pb.LogicExt.UpdateGroup:input_type -> pb.UpdateGroupReq - 16, // 19: pb.LogicExt.GetGroup:input_type -> pb.GetGroupReq - 29, // 20: pb.LogicExt.GetGroups:input_type -> pb.Empty - 20, // 21: pb.LogicExt.AddGroupMembers:input_type -> pb.AddGroupMembersReq - 22, // 22: pb.LogicExt.UpdateGroupMember:input_type -> pb.UpdateGroupMemberReq - 23, // 23: pb.LogicExt.DeleteGroupMember:input_type -> pb.DeleteGroupMemberReq - 24, // 24: pb.LogicExt.GetGroupMembers:input_type -> pb.GetGroupMembersReq - 2, // 25: pb.LogicExt.RegisterDevice:output_type -> pb.RegisterDeviceResp - 4, // 26: pb.LogicExt.SendMessage:output_type -> pb.SendMessageResp - 29, // 27: pb.LogicExt.PushRoom:output_type -> pb.Empty - 29, // 28: pb.LogicExt.AddFriend:output_type -> pb.Empty - 29, // 29: pb.LogicExt.AgreeAddFriend:output_type -> pb.Empty - 29, // 30: pb.LogicExt.DeleteFriend:output_type -> pb.Empty - 10, // 31: pb.LogicExt.SetFriend:output_type -> pb.SetFriendResp - 12, // 32: pb.LogicExt.GetFriends:output_type -> pb.GetFriendsResp - 14, // 33: pb.LogicExt.CreateGroup:output_type -> pb.CreateGroupResp - 29, // 34: pb.LogicExt.UpdateGroup:output_type -> pb.Empty - 17, // 35: pb.LogicExt.GetGroup:output_type -> pb.GetGroupResp - 19, // 36: pb.LogicExt.GetGroups:output_type -> pb.GetGroupsResp - 21, // 37: pb.LogicExt.AddGroupMembers:output_type -> pb.AddGroupMembersResp - 29, // 38: pb.LogicExt.UpdateGroupMember:output_type -> pb.Empty - 29, // 39: pb.LogicExt.DeleteGroupMember:output_type -> pb.Empty - 25, // 40: pb.LogicExt.GetGroupMembers:output_type -> pb.GetGroupMembersResp - 25, // [25:41] is the sub-list for method output_type - 9, // [9:25] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 29, // 0: pb.SendMessageReq.receiver_type:type_name -> pb.ReceiverType + 30, // 1: pb.SendMessageReq.message_type:type_name -> pb.MessageType + 29, // 2: pb.RecallMessageReq.receiver_type:type_name -> pb.ReceiverType + 30, // 3: pb.RecallMessageReq.message_type:type_name -> pb.MessageType + 30, // 4: pb.PushRoomReq.message_type:type_name -> pb.MessageType + 13, // 5: pb.GetFriendsResp.friends:type_name -> pb.Friend + 20, // 6: pb.GetGroupResp.group:type_name -> pb.Group + 20, // 7: pb.GetGroupsResp.groups:type_name -> pb.Group + 0, // 8: pb.UpdateGroupMemberReq.member_type:type_name -> pb.MemberType + 28, // 9: pb.GetGroupMembersResp.members:type_name -> pb.GroupMember + 0, // 10: pb.GroupMember.member_type:type_name -> pb.MemberType + 1, // 11: pb.LogicExt.RegisterDevice:input_type -> pb.RegisterDeviceReq + 3, // 12: pb.LogicExt.SendMessage:input_type -> pb.SendMessageReq + 5, // 13: pb.LogicExt.RecallMessage:input_type -> pb.RecallMessageReq + 7, // 14: pb.LogicExt.PushRoom:input_type -> pb.PushRoomReq + 8, // 15: pb.LogicExt.AddFriend:input_type -> pb.AddFriendReq + 10, // 16: pb.LogicExt.AgreeAddFriend:input_type -> pb.AgreeAddFriendReq + 9, // 17: pb.LogicExt.DeleteFriend:input_type -> pb.DeleteFriendReq + 11, // 18: pb.LogicExt.SetFriend:input_type -> pb.SetFriendReq + 31, // 19: pb.LogicExt.GetFriends:input_type -> pb.Empty + 15, // 20: pb.LogicExt.CreateGroup:input_type -> pb.CreateGroupReq + 17, // 21: pb.LogicExt.UpdateGroup:input_type -> pb.UpdateGroupReq + 18, // 22: pb.LogicExt.GetGroup:input_type -> pb.GetGroupReq + 31, // 23: pb.LogicExt.GetGroups:input_type -> pb.Empty + 22, // 24: pb.LogicExt.AddGroupMembers:input_type -> pb.AddGroupMembersReq + 24, // 25: pb.LogicExt.UpdateGroupMember:input_type -> pb.UpdateGroupMemberReq + 25, // 26: pb.LogicExt.DeleteGroupMember:input_type -> pb.DeleteGroupMemberReq + 26, // 27: pb.LogicExt.GetGroupMembers:input_type -> pb.GetGroupMembersReq + 2, // 28: pb.LogicExt.RegisterDevice:output_type -> pb.RegisterDeviceResp + 4, // 29: pb.LogicExt.SendMessage:output_type -> pb.SendMessageResp + 6, // 30: pb.LogicExt.RecallMessage:output_type -> pb.RecallMessageResp + 31, // 31: pb.LogicExt.PushRoom:output_type -> pb.Empty + 31, // 32: pb.LogicExt.AddFriend:output_type -> pb.Empty + 31, // 33: pb.LogicExt.AgreeAddFriend:output_type -> pb.Empty + 31, // 34: pb.LogicExt.DeleteFriend:output_type -> pb.Empty + 12, // 35: pb.LogicExt.SetFriend:output_type -> pb.SetFriendResp + 14, // 36: pb.LogicExt.GetFriends:output_type -> pb.GetFriendsResp + 16, // 37: pb.LogicExt.CreateGroup:output_type -> pb.CreateGroupResp + 31, // 38: pb.LogicExt.UpdateGroup:output_type -> pb.Empty + 19, // 39: pb.LogicExt.GetGroup:output_type -> pb.GetGroupResp + 21, // 40: pb.LogicExt.GetGroups:output_type -> pb.GetGroupsResp + 23, // 41: pb.LogicExt.AddGroupMembers:output_type -> pb.AddGroupMembersResp + 31, // 42: pb.LogicExt.UpdateGroupMember:output_type -> pb.Empty + 31, // 43: pb.LogicExt.DeleteGroupMember:output_type -> pb.Empty + 27, // 44: pb.LogicExt.GetGroupMembers:output_type -> pb.GetGroupMembersResp + 28, // [28:45] is the sub-list for method output_type + 11, // [11:28] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name } func init() { file_logic_ext_proto_init() } @@ -2165,7 +2349,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PushRoomReq); i { + switch v := v.(*RecallMessageReq); i { case 0: return &v.state case 1: @@ -2177,7 +2361,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddFriendReq); i { + switch v := v.(*RecallMessageResp); i { case 0: return &v.state case 1: @@ -2189,7 +2373,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteFriendReq); i { + switch v := v.(*PushRoomReq); i { case 0: return &v.state case 1: @@ -2201,7 +2385,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgreeAddFriendReq); i { + switch v := v.(*AddFriendReq); i { case 0: return &v.state case 1: @@ -2213,7 +2397,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetFriendReq); i { + switch v := v.(*DeleteFriendReq); i { case 0: return &v.state case 1: @@ -2225,7 +2409,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetFriendResp); i { + switch v := v.(*AgreeAddFriendReq); i { case 0: return &v.state case 1: @@ -2237,7 +2421,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Friend); i { + switch v := v.(*SetFriendReq); i { case 0: return &v.state case 1: @@ -2249,7 +2433,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFriendsResp); i { + switch v := v.(*SetFriendResp); i { case 0: return &v.state case 1: @@ -2261,7 +2445,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateGroupReq); i { + switch v := v.(*Friend); i { case 0: return &v.state case 1: @@ -2273,7 +2457,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateGroupResp); i { + switch v := v.(*GetFriendsResp); i { case 0: return &v.state case 1: @@ -2285,7 +2469,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateGroupReq); i { + switch v := v.(*CreateGroupReq); i { case 0: return &v.state case 1: @@ -2297,7 +2481,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGroupReq); i { + switch v := v.(*CreateGroupResp); i { case 0: return &v.state case 1: @@ -2309,7 +2493,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGroupResp); i { + switch v := v.(*UpdateGroupReq); i { case 0: return &v.state case 1: @@ -2321,7 +2505,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Group); i { + switch v := v.(*GetGroupReq); i { case 0: return &v.state case 1: @@ -2333,7 +2517,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGroupsResp); i { + switch v := v.(*GetGroupResp); i { case 0: return &v.state case 1: @@ -2345,7 +2529,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddGroupMembersReq); i { + switch v := v.(*Group); i { case 0: return &v.state case 1: @@ -2357,7 +2541,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddGroupMembersResp); i { + switch v := v.(*GetGroupsResp); i { case 0: return &v.state case 1: @@ -2369,7 +2553,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateGroupMemberReq); i { + switch v := v.(*AddGroupMembersReq); i { case 0: return &v.state case 1: @@ -2381,7 +2565,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteGroupMemberReq); i { + switch v := v.(*AddGroupMembersResp); i { case 0: return &v.state case 1: @@ -2393,7 +2577,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGroupMembersReq); i { + switch v := v.(*UpdateGroupMemberReq); i { case 0: return &v.state case 1: @@ -2405,7 +2589,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGroupMembersResp); i { + switch v := v.(*DeleteGroupMemberReq); i { case 0: return &v.state case 1: @@ -2417,6 +2601,30 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetGroupMembersReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_logic_ext_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetGroupMembersResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_logic_ext_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupMember); i { case 0: return &v.state @@ -2435,7 +2643,7 @@ func file_logic_ext_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_logic_ext_proto_rawDesc, NumEnums: 1, - NumMessages: 26, + NumMessages: 28, NumExtensions: 0, NumServices: 1, }, @@ -2463,6 +2671,8 @@ type LogicExtClient interface { RegisterDevice(ctx context.Context, in *RegisterDeviceReq, opts ...grpc.CallOption) (*RegisterDeviceResp, error) // 发送消息 SendMessage(ctx context.Context, in *SendMessageReq, opts ...grpc.CallOption) (*SendMessageResp, error) + // 撤回消息 + RecallMessage(ctx context.Context, in *RecallMessageReq, opts ...grpc.CallOption) (*RecallMessageResp, error) // 推送消息到房间 PushRoom(ctx context.Context, in *PushRoomReq, opts ...grpc.CallOption) (*Empty, error) // 添加好友 @@ -2519,6 +2729,15 @@ func (c *logicExtClient) SendMessage(ctx context.Context, in *SendMessageReq, op return out, nil } +func (c *logicExtClient) RecallMessage(ctx context.Context, in *RecallMessageReq, opts ...grpc.CallOption) (*RecallMessageResp, error) { + out := new(RecallMessageResp) + err := c.cc.Invoke(ctx, "/pb.LogicExt/RecallMessage", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *logicExtClient) PushRoom(ctx context.Context, in *PushRoomReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) err := c.cc.Invoke(ctx, "/pb.LogicExt/PushRoom", in, out, opts...) @@ -2653,6 +2872,8 @@ type LogicExtServer interface { RegisterDevice(context.Context, *RegisterDeviceReq) (*RegisterDeviceResp, error) // 发送消息 SendMessage(context.Context, *SendMessageReq) (*SendMessageResp, error) + // 撤回消息 + RecallMessage(context.Context, *RecallMessageReq) (*RecallMessageResp, error) // 推送消息到房间 PushRoom(context.Context, *PushRoomReq) (*Empty, error) // 添加好友 @@ -2693,6 +2914,9 @@ func (UnimplementedLogicExtServer) RegisterDevice(context.Context, *RegisterDevi func (UnimplementedLogicExtServer) SendMessage(context.Context, *SendMessageReq) (*SendMessageResp, error) { return nil, status.Errorf(codes.Unimplemented, "method SendMessage not implemented") } +func (UnimplementedLogicExtServer) RecallMessage(context.Context, *RecallMessageReq) (*RecallMessageResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method RecallMessage not implemented") +} func (UnimplementedLogicExtServer) PushRoom(context.Context, *PushRoomReq) (*Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method PushRoom not implemented") } @@ -2784,6 +3008,24 @@ func _LogicExt_SendMessage_Handler(srv interface{}, ctx context.Context, dec fun return interceptor(ctx, in, info, handler) } +func _LogicExt_RecallMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RecallMessageReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LogicExtServer).RecallMessage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pb.LogicExt/RecallMessage", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LogicExtServer).RecallMessage(ctx, req.(*RecallMessageReq)) + } + return interceptor(ctx, in, info, handler) +} + func _LogicExt_PushRoom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(PushRoomReq) if err := dec(in); err != nil { @@ -3051,6 +3293,10 @@ var LogicExt_ServiceDesc = grpc.ServiceDesc{ MethodName: "SendMessage", Handler: _LogicExt_SendMessage_Handler, }, + { + MethodName: "RecallMessage", + Handler: _LogicExt_RecallMessage_Handler, + }, { MethodName: "PushRoom", Handler: _LogicExt_PushRoom_Handler, diff --git a/pkg/proto/connect.ext.proto b/pkg/proto/connect.ext.proto index 92f01e6..0c050a5 100644 --- a/pkg/proto/connect.ext.proto +++ b/pkg/proto/connect.ext.proto @@ -29,8 +29,8 @@ message Sender { SenderType sender_type = 1; // 发送者类型,1:系统,2:用户,3:第三方业务系统 int64 sender_id = 2; // 发送者id int64 device_id = 3; // 发送者设备id - string avatar_url = 4; // 昵称 - string nickname = 5; // 头像 + string avatar_url = 4; // 头像 + string nickname = 5; // 昵称 string extra = 6; // 扩展字段 } @@ -45,6 +45,7 @@ enum MessageType { MT_LOCATION = 6; // 地理位置 MT_COMMAND = 7; // 指令推送 MT_CUSTOM = 8; // 自定义 + MT_RECALL = 9; // 撤回消息 } // 文本消息 @@ -101,6 +102,11 @@ message Custom { string data = 1; // 自定义数据 } +// 撤回消息 +message RECALL { + int64 recall_seq = 1; // 撤回消息seq +} + /************************************消息体定义结束************************************/ // 上行数据 diff --git a/pkg/proto/logic.ext.proto b/pkg/proto/logic.ext.proto index 9581974..cc5cf36 100644 --- a/pkg/proto/logic.ext.proto +++ b/pkg/proto/logic.ext.proto @@ -11,6 +11,8 @@ service LogicExt { // 发送消息 rpc SendMessage (SendMessageReq) returns (SendMessageResp); + // 撤回消息 + rpc RecallMessage (RecallMessageReq) returns (RecallMessageResp); // 推送消息到房间 rpc PushRoom(PushRoomReq)returns(Empty); @@ -69,6 +71,20 @@ message SendMessageResp { int64 seq = 1; // 消息序列号 } +message RecallMessageReq { + ReceiverType receiver_type = 1; // 接收者类型,1:user;2:group + int64 receiver_id = 2; // 用户id或者群组id + repeated int64 to_user_ids = 3; // 需要@的用户id列表 + MessageType message_type = 4; // 消息类型 + bytes message_content = 5; // 消息内容 + int64 send_time = 6; // 消息发送时间戳,精确到毫秒 + bool is_persist = 7; // 是否将消息持久化到数据库 + string message_content_back = 8; +} +message RecallMessageResp { + int64 seq = 1; // 消息序列号 +} + message PushRoomReq{ int64 room_id = 1; // 房间id MessageType message_type = 2; // 消息类型