// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.20.0--rc1 // source: logic.ext.proto package pb import ( "context" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/runtime/protoimpl" "reflect" "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type MemberType int32 const ( MemberType_GMT_UNKNOWN MemberType = 0 // 未知 MemberType_GMT_ADMIN MemberType = 1 // 管理员 MemberType_GMT_MEMBER MemberType = 2 // 成员 ) // Enum value maps for MemberType. var ( MemberType_name = map[int32]string{ 0: "GMT_UNKNOWN", 1: "GMT_ADMIN", 2: "GMT_MEMBER", } MemberType_value = map[string]int32{ "GMT_UNKNOWN": 0, "GMT_ADMIN": 1, "GMT_MEMBER": 2, } ) func (x MemberType) Enum() *MemberType { p := new(MemberType) *p = x return p } func (x MemberType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (MemberType) Descriptor() protoreflect.EnumDescriptor { return file_logic_ext_proto_enumTypes[0].Descriptor() } func (MemberType) Type() protoreflect.EnumType { return &file_logic_ext_proto_enumTypes[0] } func (x MemberType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use MemberType.Descriptor instead. func (MemberType) EnumDescriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{0} } type RegisterDeviceReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type int32 `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"` // 设备类型 Brand string `protobuf:"bytes,3,opt,name=brand,proto3" json:"brand,omitempty"` // 厂商 Model string `protobuf:"bytes,4,opt,name=model,proto3" json:"model,omitempty"` // 机型 SystemVersion string `protobuf:"bytes,5,opt,name=system_version,json=systemVersion,proto3" json:"system_version,omitempty"` // 系统版本 SdkVersion string `protobuf:"bytes,6,opt,name=sdk_version,json=sdkVersion,proto3" json:"sdk_version,omitempty"` // sdk版本号 } func (x *RegisterDeviceReq) Reset() { *x = RegisterDeviceReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RegisterDeviceReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*RegisterDeviceReq) ProtoMessage() {} func (x *RegisterDeviceReq) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RegisterDeviceReq.ProtoReflect.Descriptor instead. func (*RegisterDeviceReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{0} } func (x *RegisterDeviceReq) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *RegisterDeviceReq) GetBrand() string { if x != nil { return x.Brand } return "" } func (x *RegisterDeviceReq) GetModel() string { if x != nil { return x.Model } return "" } func (x *RegisterDeviceReq) GetSystemVersion() string { if x != nil { return x.SystemVersion } return "" } func (x *RegisterDeviceReq) GetSdkVersion() string { if x != nil { return x.SdkVersion } return "" } type RegisterDeviceResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DeviceId int64 `protobuf:"varint,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` // 设备id } func (x *RegisterDeviceResp) Reset() { *x = RegisterDeviceResp{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RegisterDeviceResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*RegisterDeviceResp) ProtoMessage() {} func (x *RegisterDeviceResp) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RegisterDeviceResp.ProtoReflect.Descriptor instead. func (*RegisterDeviceResp) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{1} } func (x *RegisterDeviceResp) GetDeviceId() int64 { if x != nil { return x.DeviceId } return 0 } type SendMessageReq 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 *SendMessageReq) Reset() { *x = SendMessageReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SendMessageReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SendMessageReq) ProtoMessage() {} func (x *SendMessageReq) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SendMessageReq.ProtoReflect.Descriptor instead. func (*SendMessageReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{2} } func (x *SendMessageReq) GetReceiverType() ReceiverType { if x != nil { return x.ReceiverType } return ReceiverType_RT_UNKNOWN } func (x *SendMessageReq) GetReceiverId() int64 { if x != nil { return x.ReceiverId } return 0 } func (x *SendMessageReq) GetToUserIds() []int64 { if x != nil { return x.ToUserIds } return nil } func (x *SendMessageReq) GetMessageType() MessageType { if x != nil { return x.MessageType } return MessageType_MT_UNKNOWN } func (x *SendMessageReq) GetMessageContent() []byte { if x != nil { return x.MessageContent } return nil } func (x *SendMessageReq) GetSendTime() int64 { if x != nil { return x.SendTime } return 0 } func (x *SendMessageReq) GetIsPersist() bool { if x != nil { return x.IsPersist } return false } func (x *SendMessageReq) GetMessageContentBack() string { if x != nil { return x.MessageContentBack } return "" } type SendMessageResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Seq int64 `protobuf:"varint,1,opt,name=seq,proto3" json:"seq,omitempty"` // 消息序列号 } func (x *SendMessageResp) Reset() { *x = SendMessageResp{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SendMessageResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SendMessageResp) ProtoMessage() {} func (x *SendMessageResp) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SendMessageResp.ProtoReflect.Descriptor instead. func (*SendMessageResp) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{3} } func (x *SendMessageResp) GetSeq() int64 { if x != nil { return x.Seq } 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 SendRedPacketReq 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 MessageType MessageType `protobuf:"varint,3,opt,name=message_type,json=messageType,proto3,enum=pb.MessageType" json:"message_type,omitempty"` // 消息类型 MessageContent []byte `protobuf:"bytes,4,opt,name=message_content,json=messageContent,proto3" json:"message_content,omitempty"` // 消息内容 SendTime int64 `protobuf:"varint,5,opt,name=send_time,json=sendTime,proto3" json:"send_time,omitempty"` // 消息发送时间戳,精确到毫秒 ToUserIds []int64 `protobuf:"varint,6,rep,packed,name=to_user_ids,json=toUserIds,proto3" json:"to_user_ids,omitempty"` // 红包给到哪些用户(专属红包) MessageContentBack string `protobuf:"bytes,7,opt,name=message_content_back,json=messageContentBack,proto3" json:"message_content_back,omitempty"` } func (x *SendRedPacketReq) Reset() { *x = SendRedPacketReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SendRedPacketReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SendRedPacketReq) ProtoMessage() {} func (x *SendRedPacketReq) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SendRedPacketReq.ProtoReflect.Descriptor instead. func (*SendRedPacketReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{6} } func (x *SendRedPacketReq) GetReceiverType() ReceiverType { if x != nil { return x.ReceiverType } return ReceiverType_RT_UNKNOWN } func (x *SendRedPacketReq) GetReceiverId() int64 { if x != nil { return x.ReceiverId } return 0 } func (x *SendRedPacketReq) GetMessageType() MessageType { if x != nil { return x.MessageType } return MessageType_MT_UNKNOWN } func (x *SendRedPacketReq) GetMessageContent() []byte { if x != nil { return x.MessageContent } return nil } func (x *SendRedPacketReq) GetSendTime() int64 { if x != nil { return x.SendTime } return 0 } func (x *SendRedPacketReq) GetToUserIds() []int64 { if x != nil { return x.ToUserIds } return nil } func (x *SendRedPacketReq) GetMessageContentBack() string { if x != nil { return x.MessageContentBack } return "" } type SendRedPacketResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Seq int64 `protobuf:"varint,1,opt,name=seq,proto3" json:"seq,omitempty"` // 消息序列号 } func (x *SendRedPacketResp) Reset() { *x = SendRedPacketResp{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SendRedPacketResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SendRedPacketResp) ProtoMessage() {} func (x *SendRedPacketResp) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SendRedPacketResp.ProtoReflect.Descriptor instead. func (*SendRedPacketResp) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{7} } func (x *SendRedPacketResp) GetSeq() int64 { if x != nil { return x.Seq } return 0 } type PushRoomReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoomId int64 `protobuf:"varint,1,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"` // 房间id MessageType MessageType `protobuf:"varint,2,opt,name=message_type,json=messageType,proto3,enum=pb.MessageType" json:"message_type,omitempty"` // 消息类型 MessageContent []byte `protobuf:"bytes,3,opt,name=message_content,json=messageContent,proto3" json:"message_content,omitempty"` // 消息内容 SendTime int64 `protobuf:"varint,4,opt,name=send_time,json=sendTime,proto3" json:"send_time,omitempty"` // 消息发送时间戳,精确到毫秒 IsPersist bool `protobuf:"varint,5,opt,name=is_persist,json=isPersist,proto3" json:"is_persist,omitempty"` // 是否将消息持久化 IsPriority bool `protobuf:"varint,6,opt,name=is_priority,json=isPriority,proto3" json:"is_priority,omitempty"` // 是否优先推送 } func (x *PushRoomReq) Reset() { *x = PushRoomReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PushRoomReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushRoomReq) ProtoMessage() {} func (x *PushRoomReq) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PushRoomReq.ProtoReflect.Descriptor instead. func (*PushRoomReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{8} } func (x *PushRoomReq) GetRoomId() int64 { if x != nil { return x.RoomId } return 0 } func (x *PushRoomReq) GetMessageType() MessageType { if x != nil { return x.MessageType } return MessageType_MT_UNKNOWN } func (x *PushRoomReq) GetMessageContent() []byte { if x != nil { return x.MessageContent } return nil } func (x *PushRoomReq) GetSendTime() int64 { if x != nil { return x.SendTime } return 0 } func (x *PushRoomReq) GetIsPersist() bool { if x != nil { return x.IsPersist } return false } func (x *PushRoomReq) GetIsPriority() bool { if x != nil { return x.IsPriority } return false } type AddFriendReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FriendId int64 `protobuf:"varint,1,opt,name=friend_id,json=friendId,proto3" json:"friend_id,omitempty"` // 用户id Remarks string `protobuf:"bytes,2,opt,name=remarks,proto3" json:"remarks,omitempty"` // 备注 Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // 描述 } func (x *AddFriendReq) Reset() { *x = AddFriendReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddFriendReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddFriendReq) ProtoMessage() {} func (x *AddFriendReq) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddFriendReq.ProtoReflect.Descriptor instead. func (*AddFriendReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{9} } func (x *AddFriendReq) GetFriendId() int64 { if x != nil { return x.FriendId } return 0 } func (x *AddFriendReq) GetRemarks() string { if x != nil { return x.Remarks } return "" } func (x *AddFriendReq) GetDescription() string { if x != nil { return x.Description } return "" } type DeleteFriendReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId int64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // 用户id } func (x *DeleteFriendReq) Reset() { *x = DeleteFriendReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteFriendReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteFriendReq) ProtoMessage() {} func (x *DeleteFriendReq) ProtoReflect() protoreflect.Message { mi := &file_logic_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 DeleteFriendReq.ProtoReflect.Descriptor instead. func (*DeleteFriendReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{10} } func (x *DeleteFriendReq) GetUserId() int64 { if x != nil { return x.UserId } return 0 } type AgreeAddFriendReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId int64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // 用户id Remarks string `protobuf:"bytes,2,opt,name=remarks,proto3" json:"remarks,omitempty"` // 备注 } func (x *AgreeAddFriendReq) Reset() { *x = AgreeAddFriendReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgreeAddFriendReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgreeAddFriendReq) ProtoMessage() {} func (x *AgreeAddFriendReq) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AgreeAddFriendReq.ProtoReflect.Descriptor instead. func (*AgreeAddFriendReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{11} } func (x *AgreeAddFriendReq) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *AgreeAddFriendReq) GetRemarks() string { if x != nil { return x.Remarks } return "" } type SetFriendReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FriendId int64 `protobuf:"varint,1,opt,name=friend_id,json=friendId,proto3" json:"friend_id,omitempty"` // 好友id Remarks string `protobuf:"bytes,2,opt,name=remarks,proto3" json:"remarks,omitempty"` // 备注 Extra string `protobuf:"bytes,8,opt,name=extra,proto3" json:"extra,omitempty"` // 附加字段 } func (x *SetFriendReq) Reset() { *x = SetFriendReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetFriendReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetFriendReq) ProtoMessage() {} func (x *SetFriendReq) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetFriendReq.ProtoReflect.Descriptor instead. func (*SetFriendReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{12} } func (x *SetFriendReq) GetFriendId() int64 { if x != nil { return x.FriendId } return 0 } func (x *SetFriendReq) GetRemarks() string { if x != nil { return x.Remarks } return "" } func (x *SetFriendReq) GetExtra() string { if x != nil { return x.Extra } return "" } type SetFriendResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FriendId int64 `protobuf:"varint,1,opt,name=friend_id,json=friendId,proto3" json:"friend_id,omitempty"` // 好友id Remarks string `protobuf:"bytes,2,opt,name=remarks,proto3" json:"remarks,omitempty"` // 备注 Extra string `protobuf:"bytes,8,opt,name=extra,proto3" json:"extra,omitempty"` // 附加字段 } func (x *SetFriendResp) Reset() { *x = SetFriendResp{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetFriendResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetFriendResp) ProtoMessage() {} func (x *SetFriendResp) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetFriendResp.ProtoReflect.Descriptor instead. func (*SetFriendResp) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{13} } func (x *SetFriendResp) GetFriendId() int64 { if x != nil { return x.FriendId } return 0 } func (x *SetFriendResp) GetRemarks() string { if x != nil { return x.Remarks } return "" } func (x *SetFriendResp) GetExtra() string { if x != nil { return x.Extra } return "" } type Friend struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId int64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // 用户id PhoneNumber string `protobuf:"bytes,2,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // 电话号码 Nickname string `protobuf:"bytes,3,opt,name=nickname,proto3" json:"nickname,omitempty"` // 昵称 Sex int32 `protobuf:"varint,4,opt,name=sex,proto3" json:"sex,omitempty"` // 性别 AvatarUrl string `protobuf:"bytes,5,opt,name=avatar_url,json=avatarUrl,proto3" json:"avatar_url,omitempty"` // 头像地址 UserExtra string `protobuf:"bytes,6,opt,name=user_extra,json=userExtra,proto3" json:"user_extra,omitempty"` // 用户附加字段 Remarks string `protobuf:"bytes,7,opt,name=remarks,proto3" json:"remarks,omitempty"` // 备注 Extra string `protobuf:"bytes,8,opt,name=extra,proto3" json:"extra,omitempty"` // 附加字段 } func (x *Friend) Reset() { *x = Friend{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Friend) String() string { return protoimpl.X.MessageStringOf(x) } func (*Friend) ProtoMessage() {} func (x *Friend) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Friend.ProtoReflect.Descriptor instead. func (*Friend) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{14} } func (x *Friend) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *Friend) GetPhoneNumber() string { if x != nil { return x.PhoneNumber } return "" } func (x *Friend) GetNickname() string { if x != nil { return x.Nickname } return "" } func (x *Friend) GetSex() int32 { if x != nil { return x.Sex } return 0 } func (x *Friend) GetAvatarUrl() string { if x != nil { return x.AvatarUrl } return "" } func (x *Friend) GetUserExtra() string { if x != nil { return x.UserExtra } return "" } func (x *Friend) GetRemarks() string { if x != nil { return x.Remarks } return "" } func (x *Friend) GetExtra() string { if x != nil { return x.Extra } return "" } type GetFriendsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Friends []*Friend `protobuf:"bytes,1,rep,name=friends,proto3" json:"friends,omitempty"` } func (x *GetFriendsResp) Reset() { *x = GetFriendsResp{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetFriendsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFriendsResp) ProtoMessage() {} func (x *GetFriendsResp) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetFriendsResp.ProtoReflect.Descriptor instead. func (*GetFriendsResp) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{15} } func (x *GetFriendsResp) GetFriends() []*Friend { if x != nil { return x.Friends } return nil } type CreateGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // 名称 AvatarUrl string `protobuf:"bytes,2,opt,name=avatar_url,json=avatarUrl,proto3" json:"avatar_url,omitempty"` // 头像 Introduction string `protobuf:"bytes,3,opt,name=introduction,proto3" json:"introduction,omitempty"` // 简介 Extra string `protobuf:"bytes,4,opt,name=extra,proto3" json:"extra,omitempty"` // 附加字段 MemberIds []int64 `protobuf:"varint,5,rep,packed,name=member_ids,json=memberIds,proto3" json:"member_ids,omitempty"` // 群组成员ID列表 } func (x *CreateGroupReq) Reset() { *x = CreateGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateGroupReq) ProtoMessage() {} func (x *CreateGroupReq) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateGroupReq.ProtoReflect.Descriptor instead. func (*CreateGroupReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{16} } func (x *CreateGroupReq) GetName() string { if x != nil { return x.Name } return "" } func (x *CreateGroupReq) GetAvatarUrl() string { if x != nil { return x.AvatarUrl } return "" } func (x *CreateGroupReq) GetIntroduction() string { if x != nil { return x.Introduction } return "" } func (x *CreateGroupReq) GetExtra() string { if x != nil { return x.Extra } return "" } func (x *CreateGroupReq) GetMemberIds() []int64 { if x != nil { return x.MemberIds } return nil } type CreateGroupResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupId int64 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // 群组id } func (x *CreateGroupResp) Reset() { *x = CreateGroupResp{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateGroupResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateGroupResp) ProtoMessage() {} func (x *CreateGroupResp) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateGroupResp.ProtoReflect.Descriptor instead. func (*CreateGroupResp) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{17} } func (x *CreateGroupResp) GetGroupId() int64 { if x != nil { return x.GroupId } return 0 } type UpdateGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupId int64 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // 群组id AvatarUrl string `protobuf:"bytes,2,opt,name=avatar_url,json=avatarUrl,proto3" json:"avatar_url,omitempty"` // 头像 Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` // 名称 Introduction string `protobuf:"bytes,4,opt,name=introduction,proto3" json:"introduction,omitempty"` // 简介 Extra string `protobuf:"bytes,5,opt,name=extra,proto3" json:"extra,omitempty"` // 附加字段 } func (x *UpdateGroupReq) Reset() { *x = UpdateGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateGroupReq) ProtoMessage() {} func (x *UpdateGroupReq) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateGroupReq.ProtoReflect.Descriptor instead. func (*UpdateGroupReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{18} } func (x *UpdateGroupReq) GetGroupId() int64 { if x != nil { return x.GroupId } return 0 } func (x *UpdateGroupReq) GetAvatarUrl() string { if x != nil { return x.AvatarUrl } return "" } func (x *UpdateGroupReq) GetName() string { if x != nil { return x.Name } return "" } func (x *UpdateGroupReq) GetIntroduction() string { if x != nil { return x.Introduction } return "" } func (x *UpdateGroupReq) GetExtra() string { if x != nil { return x.Extra } return "" } type GetGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupId int64 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` } func (x *GetGroupReq) Reset() { *x = GetGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetGroupReq) ProtoMessage() {} func (x *GetGroupReq) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetGroupReq.ProtoReflect.Descriptor instead. func (*GetGroupReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{19} } func (x *GetGroupReq) GetGroupId() int64 { if x != nil { return x.GroupId } return 0 } type GetGroupResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *Group `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` } func (x *GetGroupResp) Reset() { *x = GetGroupResp{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetGroupResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetGroupResp) ProtoMessage() {} func (x *GetGroupResp) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetGroupResp.ProtoReflect.Descriptor instead. func (*GetGroupResp) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{20} } func (x *GetGroupResp) GetGroup() *Group { if x != nil { return x.Group } return nil } type Group struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupId int64 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // 群组id Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // 名称 AvatarUrl string `protobuf:"bytes,3,opt,name=avatar_url,json=avatarUrl,proto3" json:"avatar_url,omitempty"` // 头像 Introduction string `protobuf:"bytes,4,opt,name=introduction,proto3" json:"introduction,omitempty"` // 简介 UserMum int32 `protobuf:"varint,5,opt,name=user_mum,json=userMum,proto3" json:"user_mum,omitempty"` // 用户数 Extra string `protobuf:"bytes,6,opt,name=extra,proto3" json:"extra,omitempty"` // 附加字段 CreateTime int64 `protobuf:"varint,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` // 创建时间 UpdateTime int64 `protobuf:"varint,8,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` // 更新时间 } func (x *Group) Reset() { *x = Group{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Group) String() string { return protoimpl.X.MessageStringOf(x) } func (*Group) ProtoMessage() {} func (x *Group) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Group.ProtoReflect.Descriptor instead. func (*Group) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{21} } func (x *Group) GetGroupId() int64 { if x != nil { return x.GroupId } return 0 } func (x *Group) GetName() string { if x != nil { return x.Name } return "" } func (x *Group) GetAvatarUrl() string { if x != nil { return x.AvatarUrl } return "" } func (x *Group) GetIntroduction() string { if x != nil { return x.Introduction } return "" } func (x *Group) GetUserMum() int32 { if x != nil { return x.UserMum } return 0 } func (x *Group) GetExtra() string { if x != nil { return x.Extra } return "" } func (x *Group) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *Group) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } type GetGroupsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Groups []*Group `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty"` } func (x *GetGroupsResp) Reset() { *x = GetGroupsResp{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetGroupsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetGroupsResp) ProtoMessage() {} func (x *GetGroupsResp) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetGroupsResp.ProtoReflect.Descriptor instead. func (*GetGroupsResp) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{22} } func (x *GetGroupsResp) GetGroups() []*Group { if x != nil { return x.Groups } return nil } type AddGroupMembersReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupId int64 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // 群组id UserIds []int64 `protobuf:"varint,2,rep,packed,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` // 用户id列表 } func (x *AddGroupMembersReq) Reset() { *x = AddGroupMembersReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddGroupMembersReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddGroupMembersReq) ProtoMessage() {} func (x *AddGroupMembersReq) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddGroupMembersReq.ProtoReflect.Descriptor instead. func (*AddGroupMembersReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{23} } func (x *AddGroupMembersReq) GetGroupId() int64 { if x != nil { return x.GroupId } return 0 } func (x *AddGroupMembersReq) GetUserIds() []int64 { if x != nil { return x.UserIds } return nil } type AddGroupMembersResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserIds []int64 `protobuf:"varint,1,rep,packed,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` // 已经在群组的用户id列表 } func (x *AddGroupMembersResp) Reset() { *x = AddGroupMembersResp{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddGroupMembersResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddGroupMembersResp) ProtoMessage() {} func (x *AddGroupMembersResp) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddGroupMembersResp.ProtoReflect.Descriptor instead. func (*AddGroupMembersResp) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{24} } func (x *AddGroupMembersResp) GetUserIds() []int64 { if x != nil { return x.UserIds } return nil } type UpdateGroupMemberReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupId int64 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // 群组id UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // 用户id MemberType MemberType `protobuf:"varint,3,opt,name=member_type,json=memberType,proto3,enum=pb.MemberType" json:"member_type,omitempty"` // 成员类型 Remarks string `protobuf:"bytes,4,opt,name=remarks,proto3" json:"remarks,omitempty"` // 备注 Extra string `protobuf:"bytes,5,opt,name=extra,proto3" json:"extra,omitempty"` // 附加字段 } func (x *UpdateGroupMemberReq) Reset() { *x = UpdateGroupMemberReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateGroupMemberReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateGroupMemberReq) ProtoMessage() {} func (x *UpdateGroupMemberReq) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateGroupMemberReq.ProtoReflect.Descriptor instead. func (*UpdateGroupMemberReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{25} } func (x *UpdateGroupMemberReq) GetGroupId() int64 { if x != nil { return x.GroupId } return 0 } func (x *UpdateGroupMemberReq) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *UpdateGroupMemberReq) GetMemberType() MemberType { if x != nil { return x.MemberType } return MemberType_GMT_UNKNOWN } func (x *UpdateGroupMemberReq) GetRemarks() string { if x != nil { return x.Remarks } return "" } func (x *UpdateGroupMemberReq) GetExtra() string { if x != nil { return x.Extra } return "" } type DeleteGroupMemberReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupId int64 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // 群组id UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // 用户id } func (x *DeleteGroupMemberReq) Reset() { *x = DeleteGroupMemberReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteGroupMemberReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteGroupMemberReq) ProtoMessage() {} func (x *DeleteGroupMemberReq) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[26] 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 DeleteGroupMemberReq.ProtoReflect.Descriptor instead. func (*DeleteGroupMemberReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{26} } func (x *DeleteGroupMemberReq) GetGroupId() int64 { if x != nil { return x.GroupId } return 0 } func (x *DeleteGroupMemberReq) GetUserId() int64 { if x != nil { return x.UserId } return 0 } type GetGroupMembersReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupId int64 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` } func (x *GetGroupMembersReq) Reset() { *x = GetGroupMembersReq{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetGroupMembersReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetGroupMembersReq) ProtoMessage() {} func (x *GetGroupMembersReq) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[27] 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 GetGroupMembersReq.ProtoReflect.Descriptor instead. func (*GetGroupMembersReq) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{27} } func (x *GetGroupMembersReq) GetGroupId() int64 { if x != nil { return x.GroupId } return 0 } type GetGroupMembersResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Members []*GroupMember `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"` } func (x *GetGroupMembersResp) Reset() { *x = GetGroupMembersResp{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetGroupMembersResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetGroupMembersResp) ProtoMessage() {} func (x *GetGroupMembersResp) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[28] 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 GetGroupMembersResp.ProtoReflect.Descriptor instead. func (*GetGroupMembersResp) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{28} } func (x *GetGroupMembersResp) GetMembers() []*GroupMember { if x != nil { return x.Members } return nil } type GroupMember struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId int64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` // 昵称 Sex int32 `protobuf:"varint,3,opt,name=sex,proto3" json:"sex,omitempty"` // 性别 AvatarUrl string `protobuf:"bytes,4,opt,name=avatar_url,json=avatarUrl,proto3" json:"avatar_url,omitempty"` // 头像地址 UserExtra string `protobuf:"bytes,5,opt,name=user_extra,json=userExtra,proto3" json:"user_extra,omitempty"` // 用户附加字段 MemberType MemberType `protobuf:"varint,6,opt,name=member_type,json=memberType,proto3,enum=pb.MemberType" json:"member_type,omitempty"` // 成员类型 Remarks string `protobuf:"bytes,7,opt,name=remarks,proto3" json:"remarks,omitempty"` // 备注 Extra string `protobuf:"bytes,8,opt,name=extra,proto3" json:"extra,omitempty"` // 群组成员附加字段 } func (x *GroupMember) Reset() { *x = GroupMember{} if protoimpl.UnsafeEnabled { mi := &file_logic_ext_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupMember) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupMember) ProtoMessage() {} func (x *GroupMember) ProtoReflect() protoreflect.Message { mi := &file_logic_ext_proto_msgTypes[29] 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 GroupMember.ProtoReflect.Descriptor instead. func (*GroupMember) Descriptor() ([]byte, []int) { return file_logic_ext_proto_rawDescGZIP(), []int{29} } func (x *GroupMember) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *GroupMember) GetNickname() string { if x != nil { return x.Nickname } return "" } func (x *GroupMember) GetSex() int32 { if x != nil { return x.Sex } return 0 } func (x *GroupMember) GetAvatarUrl() string { if x != nil { return x.AvatarUrl } return "" } func (x *GroupMember) GetUserExtra() string { if x != nil { return x.UserExtra } return "" } func (x *GroupMember) GetMemberType() MemberType { if x != nil { return x.MemberType } return MemberType_GMT_UNKNOWN } func (x *GroupMember) GetRemarks() string { if x != nil { return x.Remarks } return "" } func (x *GroupMember) GetExtra() string { if x != nil { return x.Extra } return "" } var File_logic_ext_proto protoreflect.FileDescriptor var file_logic_ext_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9b, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x64, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x31, 0x0a, 0x12, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 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, 0x22, 0xd3, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x6e, 0x64, 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, 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, 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, 0xb6, 0x02, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 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, 0x32, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 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, 0x04, 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, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 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, 0x07, 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, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 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, 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, 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, 0xd0, 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, 0x3c, 0x0a, 0x0d, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 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 ( file_logic_ext_proto_rawDescOnce sync.Once file_logic_ext_proto_rawDescData = file_logic_ext_proto_rawDesc ) func file_logic_ext_proto_rawDescGZIP() []byte { file_logic_ext_proto_rawDescOnce.Do(func() { file_logic_ext_proto_rawDescData = protoimpl.X.CompressGZIP(file_logic_ext_proto_rawDescData) }) return file_logic_ext_proto_rawDescData } var file_logic_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_logic_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 30) 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 (*RecallMessageReq)(nil), // 5: pb.RecallMessageReq (*RecallMessageResp)(nil), // 6: pb.RecallMessageResp (*SendRedPacketReq)(nil), // 7: pb.SendRedPacketReq (*SendRedPacketResp)(nil), // 8: pb.SendRedPacketResp (*PushRoomReq)(nil), // 9: pb.PushRoomReq (*AddFriendReq)(nil), // 10: pb.AddFriendReq (*DeleteFriendReq)(nil), // 11: pb.DeleteFriendReq (*AgreeAddFriendReq)(nil), // 12: pb.AgreeAddFriendReq (*SetFriendReq)(nil), // 13: pb.SetFriendReq (*SetFriendResp)(nil), // 14: pb.SetFriendResp (*Friend)(nil), // 15: pb.Friend (*GetFriendsResp)(nil), // 16: pb.GetFriendsResp (*CreateGroupReq)(nil), // 17: pb.CreateGroupReq (*CreateGroupResp)(nil), // 18: pb.CreateGroupResp (*UpdateGroupReq)(nil), // 19: pb.UpdateGroupReq (*GetGroupReq)(nil), // 20: pb.GetGroupReq (*GetGroupResp)(nil), // 21: pb.GetGroupResp (*Group)(nil), // 22: pb.Group (*GetGroupsResp)(nil), // 23: pb.GetGroupsResp (*AddGroupMembersReq)(nil), // 24: pb.AddGroupMembersReq (*AddGroupMembersResp)(nil), // 25: pb.AddGroupMembersResp (*UpdateGroupMemberReq)(nil), // 26: pb.UpdateGroupMemberReq (*DeleteGroupMemberReq)(nil), // 27: pb.DeleteGroupMemberReq (*GetGroupMembersReq)(nil), // 28: pb.GetGroupMembersReq (*GetGroupMembersResp)(nil), // 29: pb.GetGroupMembersResp (*GroupMember)(nil), // 30: pb.GroupMember (ReceiverType)(0), // 31: pb.ReceiverType (MessageType)(0), // 32: pb.MessageType (*Empty)(nil), // 33: pb.Empty } var file_logic_ext_proto_depIdxs = []int32{ 31, // 0: pb.SendMessageReq.receiver_type:type_name -> pb.ReceiverType 32, // 1: pb.SendMessageReq.message_type:type_name -> pb.MessageType 31, // 2: pb.RecallMessageReq.receiver_type:type_name -> pb.ReceiverType 32, // 3: pb.RecallMessageReq.message_type:type_name -> pb.MessageType 31, // 4: pb.SendRedPacketReq.receiver_type:type_name -> pb.ReceiverType 32, // 5: pb.SendRedPacketReq.message_type:type_name -> pb.MessageType 32, // 6: pb.PushRoomReq.message_type:type_name -> pb.MessageType 15, // 7: pb.GetFriendsResp.friends:type_name -> pb.Friend 22, // 8: pb.GetGroupResp.group:type_name -> pb.Group 22, // 9: pb.GetGroupsResp.groups:type_name -> pb.Group 0, // 10: pb.UpdateGroupMemberReq.member_type:type_name -> pb.MemberType 30, // 11: pb.GetGroupMembersResp.members:type_name -> pb.GroupMember 0, // 12: pb.GroupMember.member_type:type_name -> pb.MemberType 1, // 13: pb.LogicExt.RegisterDevice:input_type -> pb.RegisterDeviceReq 3, // 14: pb.LogicExt.SendMessage:input_type -> pb.SendMessageReq 5, // 15: pb.LogicExt.RecallMessage:input_type -> pb.RecallMessageReq 9, // 16: pb.LogicExt.PushRoom:input_type -> pb.PushRoomReq 7, // 17: pb.LogicExt.SendRedPacket:input_type -> pb.SendRedPacketReq 10, // 18: pb.LogicExt.AddFriend:input_type -> pb.AddFriendReq 12, // 19: pb.LogicExt.AgreeAddFriend:input_type -> pb.AgreeAddFriendReq 11, // 20: pb.LogicExt.DeleteFriend:input_type -> pb.DeleteFriendReq 13, // 21: pb.LogicExt.SetFriend:input_type -> pb.SetFriendReq 33, // 22: pb.LogicExt.GetFriends:input_type -> pb.Empty 17, // 23: pb.LogicExt.CreateGroup:input_type -> pb.CreateGroupReq 19, // 24: pb.LogicExt.UpdateGroup:input_type -> pb.UpdateGroupReq 20, // 25: pb.LogicExt.GetGroup:input_type -> pb.GetGroupReq 33, // 26: pb.LogicExt.GetGroups:input_type -> pb.Empty 24, // 27: pb.LogicExt.AddGroupMembers:input_type -> pb.AddGroupMembersReq 26, // 28: pb.LogicExt.UpdateGroupMember:input_type -> pb.UpdateGroupMemberReq 27, // 29: pb.LogicExt.DeleteGroupMember:input_type -> pb.DeleteGroupMemberReq 28, // 30: pb.LogicExt.GetGroupMembers:input_type -> pb.GetGroupMembersReq 2, // 31: pb.LogicExt.RegisterDevice:output_type -> pb.RegisterDeviceResp 4, // 32: pb.LogicExt.SendMessage:output_type -> pb.SendMessageResp 6, // 33: pb.LogicExt.RecallMessage:output_type -> pb.RecallMessageResp 33, // 34: pb.LogicExt.PushRoom:output_type -> pb.Empty 8, // 35: pb.LogicExt.SendRedPacket:output_type -> pb.SendRedPacketResp 33, // 36: pb.LogicExt.AddFriend:output_type -> pb.Empty 33, // 37: pb.LogicExt.AgreeAddFriend:output_type -> pb.Empty 33, // 38: pb.LogicExt.DeleteFriend:output_type -> pb.Empty 14, // 39: pb.LogicExt.SetFriend:output_type -> pb.SetFriendResp 16, // 40: pb.LogicExt.GetFriends:output_type -> pb.GetFriendsResp 18, // 41: pb.LogicExt.CreateGroup:output_type -> pb.CreateGroupResp 33, // 42: pb.LogicExt.UpdateGroup:output_type -> pb.Empty 21, // 43: pb.LogicExt.GetGroup:output_type -> pb.GetGroupResp 23, // 44: pb.LogicExt.GetGroups:output_type -> pb.GetGroupsResp 25, // 45: pb.LogicExt.AddGroupMembers:output_type -> pb.AddGroupMembersResp 33, // 46: pb.LogicExt.UpdateGroupMember:output_type -> pb.Empty 33, // 47: pb.LogicExt.DeleteGroupMember:output_type -> pb.Empty 29, // 48: pb.LogicExt.GetGroupMembers:output_type -> pb.GetGroupMembersResp 31, // [31:49] is the sub-list for method output_type 13, // [13:31] is the sub-list for method input_type 13, // [13:13] is the sub-list for extension type_name 13, // [13:13] is the sub-list for extension extendee 0, // [0:13] is the sub-list for field type_name } func init() { file_logic_ext_proto_init() } func file_logic_ext_proto_init() { if File_logic_ext_proto != nil { return } file_common_ext_proto_init() file_connect_ext_proto_init() if !protoimpl.UnsafeEnabled { file_logic_ext_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RegisterDeviceReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RegisterDeviceResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendMessageReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendMessageResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecallMessageReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecallMessageResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendRedPacketReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendRedPacketResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PushRoomReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddFriendReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFriendReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgreeAddFriendReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetFriendReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetFriendResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Friend); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFriendsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateGroupResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetGroupResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Group); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetGroupsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddGroupMembersReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddGroupMembersResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_logic_ext_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateGroupMemberReq); 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.(*DeleteGroupMemberReq); 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.(*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[28].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[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupMember); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_logic_ext_proto_rawDesc, NumEnums: 1, NumMessages: 30, NumExtensions: 0, NumServices: 1, }, GoTypes: file_logic_ext_proto_goTypes, DependencyIndexes: file_logic_ext_proto_depIdxs, EnumInfos: file_logic_ext_proto_enumTypes, MessageInfos: file_logic_ext_proto_msgTypes, }.Build() File_logic_ext_proto = out.File file_logic_ext_proto_rawDesc = nil file_logic_ext_proto_goTypes = nil file_logic_ext_proto_depIdxs = nil } // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 // LogicExtClient is the client API for LogicExt service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. 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) // 发送红包 SendRedPacket(ctx context.Context, in *SendRedPacketReq, opts ...grpc.CallOption) (*SendRedPacketResp, error) // 添加好友 AddFriend(ctx context.Context, in *AddFriendReq, opts ...grpc.CallOption) (*Empty, error) // 同意添加好友 AgreeAddFriend(ctx context.Context, in *AgreeAddFriendReq, opts ...grpc.CallOption) (*Empty, error) // 删除好友 DeleteFriend(ctx context.Context, in *DeleteFriendReq, opts ...grpc.CallOption) (*Empty, error) // 设置好友信息 SetFriend(ctx context.Context, in *SetFriendReq, opts ...grpc.CallOption) (*SetFriendResp, error) // 获取好友列表 GetFriends(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*GetFriendsResp, error) // 创建群组 CreateGroup(ctx context.Context, in *CreateGroupReq, opts ...grpc.CallOption) (*CreateGroupResp, error) // 更新群组 UpdateGroup(ctx context.Context, in *UpdateGroupReq, opts ...grpc.CallOption) (*Empty, error) // 获取群组信息 GetGroup(ctx context.Context, in *GetGroupReq, opts ...grpc.CallOption) (*GetGroupResp, error) // 获取用户加入的所有群组 GetGroups(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*GetGroupsResp, error) // 添加群组成员 AddGroupMembers(ctx context.Context, in *AddGroupMembersReq, opts ...grpc.CallOption) (*AddGroupMembersResp, error) // 更新群组成员信息 UpdateGroupMember(ctx context.Context, in *UpdateGroupMemberReq, opts ...grpc.CallOption) (*Empty, error) // 添加群组成员 DeleteGroupMember(ctx context.Context, in *DeleteGroupMemberReq, opts ...grpc.CallOption) (*Empty, error) // 获取群组成员 GetGroupMembers(ctx context.Context, in *GetGroupMembersReq, opts ...grpc.CallOption) (*GetGroupMembersResp, error) } type logicExtClient struct { cc grpc.ClientConnInterface } func NewLogicExtClient(cc grpc.ClientConnInterface) LogicExtClient { return &logicExtClient{cc} } func (c *logicExtClient) RegisterDevice(ctx context.Context, in *RegisterDeviceReq, opts ...grpc.CallOption) (*RegisterDeviceResp, error) { out := new(RegisterDeviceResp) err := c.cc.Invoke(ctx, "/pb.LogicExt/RegisterDevice", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) SendMessage(ctx context.Context, in *SendMessageReq, opts ...grpc.CallOption) (*SendMessageResp, error) { out := new(SendMessageResp) err := c.cc.Invoke(ctx, "/pb.LogicExt/SendMessage", in, out, opts...) if err != nil { return nil, err } 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...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) SendRedPacket(ctx context.Context, in *SendRedPacketReq, opts ...grpc.CallOption) (*SendRedPacketResp, error) { out := new(SendRedPacketResp) err := c.cc.Invoke(ctx, "/pb.LogicExt/SendRedPacket", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) AddFriend(ctx context.Context, in *AddFriendReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) err := c.cc.Invoke(ctx, "/pb.LogicExt/AddFriend", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) AgreeAddFriend(ctx context.Context, in *AgreeAddFriendReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) err := c.cc.Invoke(ctx, "/pb.LogicExt/AgreeAddFriend", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) DeleteFriend(ctx context.Context, in *DeleteFriendReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) err := c.cc.Invoke(ctx, "/pb.LogicExt/DeleteFriend", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) SetFriend(ctx context.Context, in *SetFriendReq, opts ...grpc.CallOption) (*SetFriendResp, error) { out := new(SetFriendResp) err := c.cc.Invoke(ctx, "/pb.LogicExt/SetFriend", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) GetFriends(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*GetFriendsResp, error) { out := new(GetFriendsResp) err := c.cc.Invoke(ctx, "/pb.LogicExt/GetFriends", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) CreateGroup(ctx context.Context, in *CreateGroupReq, opts ...grpc.CallOption) (*CreateGroupResp, error) { out := new(CreateGroupResp) err := c.cc.Invoke(ctx, "/pb.LogicExt/CreateGroup", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) UpdateGroup(ctx context.Context, in *UpdateGroupReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) err := c.cc.Invoke(ctx, "/pb.LogicExt/UpdateGroup", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) GetGroup(ctx context.Context, in *GetGroupReq, opts ...grpc.CallOption) (*GetGroupResp, error) { out := new(GetGroupResp) err := c.cc.Invoke(ctx, "/pb.LogicExt/GetGroup", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) GetGroups(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*GetGroupsResp, error) { out := new(GetGroupsResp) err := c.cc.Invoke(ctx, "/pb.LogicExt/GetGroups", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) AddGroupMembers(ctx context.Context, in *AddGroupMembersReq, opts ...grpc.CallOption) (*AddGroupMembersResp, error) { out := new(AddGroupMembersResp) err := c.cc.Invoke(ctx, "/pb.LogicExt/AddGroupMembers", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) UpdateGroupMember(ctx context.Context, in *UpdateGroupMemberReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) err := c.cc.Invoke(ctx, "/pb.LogicExt/UpdateGroupMember", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) DeleteGroupMember(ctx context.Context, in *DeleteGroupMemberReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) err := c.cc.Invoke(ctx, "/pb.LogicExt/DeleteGroupMember", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *logicExtClient) GetGroupMembers(ctx context.Context, in *GetGroupMembersReq, opts ...grpc.CallOption) (*GetGroupMembersResp, error) { out := new(GetGroupMembersResp) err := c.cc.Invoke(ctx, "/pb.LogicExt/GetGroupMembers", in, out, opts...) if err != nil { return nil, err } return out, nil } // LogicExtServer is the server API for LogicExt service. // All implementations must embed UnimplementedLogicExtServer // for forward compatibility 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) // 发送红包 SendRedPacket(context.Context, *SendRedPacketReq) (*SendRedPacketResp, error) // 添加好友 AddFriend(context.Context, *AddFriendReq) (*Empty, error) // 同意添加好友 AgreeAddFriend(context.Context, *AgreeAddFriendReq) (*Empty, error) // 删除好友 DeleteFriend(context.Context, *DeleteFriendReq) (*Empty, error) // 设置好友信息 SetFriend(context.Context, *SetFriendReq) (*SetFriendResp, error) // 获取好友列表 GetFriends(context.Context, *Empty) (*GetFriendsResp, error) // 创建群组 CreateGroup(context.Context, *CreateGroupReq) (*CreateGroupResp, error) // 更新群组 UpdateGroup(context.Context, *UpdateGroupReq) (*Empty, error) // 获取群组信息 GetGroup(context.Context, *GetGroupReq) (*GetGroupResp, error) // 获取用户加入的所有群组 GetGroups(context.Context, *Empty) (*GetGroupsResp, error) // 添加群组成员 AddGroupMembers(context.Context, *AddGroupMembersReq) (*AddGroupMembersResp, error) // 更新群组成员信息 UpdateGroupMember(context.Context, *UpdateGroupMemberReq) (*Empty, error) // 添加群组成员 DeleteGroupMember(context.Context, *DeleteGroupMemberReq) (*Empty, error) // 获取群组成员 GetGroupMembers(context.Context, *GetGroupMembersReq) (*GetGroupMembersResp, error) } // UnimplementedLogicExtServer must be embedded to have forward compatible implementations. type UnimplementedLogicExtServer struct { } func (UnimplementedLogicExtServer) RegisterDevice(context.Context, *RegisterDeviceReq) (*RegisterDeviceResp, error) { return nil, status.Errorf(codes.Unimplemented, "method RegisterDevice not implemented") } 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") } func (UnimplementedLogicExtServer) SendRedPacket(context.Context, *SendRedPacketReq) (*SendRedPacketResp, error) { return nil, status.Errorf(codes.Unimplemented, "method SendRedPacket not implemented") } func (UnimplementedLogicExtServer) AddFriend(context.Context, *AddFriendReq) (*Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method AddFriend not implemented") } func (UnimplementedLogicExtServer) AgreeAddFriend(context.Context, *AgreeAddFriendReq) (*Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method AgreeAddFriend not implemented") } func (UnimplementedLogicExtServer) DeleteFriend(context.Context, *DeleteFriendReq) (*Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteFriend not implemented") } func (UnimplementedLogicExtServer) SetFriend(context.Context, *SetFriendReq) (*SetFriendResp, error) { return nil, status.Errorf(codes.Unimplemented, "method SetFriend not implemented") } func (UnimplementedLogicExtServer) GetFriends(context.Context, *Empty) (*GetFriendsResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetFriends not implemented") } func (UnimplementedLogicExtServer) CreateGroup(context.Context, *CreateGroupReq) (*CreateGroupResp, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateGroup not implemented") } func (UnimplementedLogicExtServer) UpdateGroup(context.Context, *UpdateGroupReq) (*Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateGroup not implemented") } func (UnimplementedLogicExtServer) GetGroup(context.Context, *GetGroupReq) (*GetGroupResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetGroup not implemented") } func (UnimplementedLogicExtServer) GetGroups(context.Context, *Empty) (*GetGroupsResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetGroups not implemented") } func (UnimplementedLogicExtServer) AddGroupMembers(context.Context, *AddGroupMembersReq) (*AddGroupMembersResp, error) { return nil, status.Errorf(codes.Unimplemented, "method AddGroupMembers not implemented") } func (UnimplementedLogicExtServer) UpdateGroupMember(context.Context, *UpdateGroupMemberReq) (*Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateGroupMember not implemented") } func (UnimplementedLogicExtServer) DeleteGroupMember(context.Context, *DeleteGroupMemberReq) (*Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteGroupMember not implemented") } func (UnimplementedLogicExtServer) GetGroupMembers(context.Context, *GetGroupMembersReq) (*GetGroupMembersResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetGroupMembers not implemented") } func RegisterLogicExtServer(s grpc.ServiceRegistrar, srv LogicExtServer) { s.RegisterService(&LogicExt_ServiceDesc, srv) } func _LogicExt_RegisterDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RegisterDeviceReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).RegisterDevice(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/RegisterDevice", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).RegisterDevice(ctx, req.(*RegisterDeviceReq)) } return interceptor(ctx, in, info, handler) } func _LogicExt_SendMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SendMessageReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).SendMessage(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/SendMessage", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).SendMessage(ctx, req.(*SendMessageReq)) } 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 { return nil, err } if interceptor == nil { return srv.(LogicExtServer).PushRoom(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/PushRoom", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).PushRoom(ctx, req.(*PushRoomReq)) } return interceptor(ctx, in, info, handler) } func _LogicExt_SendRedPacket_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SendRedPacketReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).SendRedPacket(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/SendRedPacket", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).SendRedPacket(ctx, req.(*SendRedPacketReq)) } return interceptor(ctx, in, info, handler) } func _LogicExt_AddFriend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(AddFriendReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).AddFriend(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/AddFriend", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).AddFriend(ctx, req.(*AddFriendReq)) } return interceptor(ctx, in, info, handler) } func _LogicExt_AgreeAddFriend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(AgreeAddFriendReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).AgreeAddFriend(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/AgreeAddFriend", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).AgreeAddFriend(ctx, req.(*AgreeAddFriendReq)) } return interceptor(ctx, in, info, handler) } func _LogicExt_DeleteFriend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteFriendReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).DeleteFriend(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/DeleteFriend", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).DeleteFriend(ctx, req.(*DeleteFriendReq)) } return interceptor(ctx, in, info, handler) } func _LogicExt_SetFriend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SetFriendReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).SetFriend(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/SetFriend", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).SetFriend(ctx, req.(*SetFriendReq)) } return interceptor(ctx, in, info, handler) } func _LogicExt_GetFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Empty) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).GetFriends(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/GetFriends", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).GetFriends(ctx, req.(*Empty)) } return interceptor(ctx, in, info, handler) } func _LogicExt_CreateGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateGroupReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).CreateGroup(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/CreateGroup", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).CreateGroup(ctx, req.(*CreateGroupReq)) } return interceptor(ctx, in, info, handler) } func _LogicExt_UpdateGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateGroupReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).UpdateGroup(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/UpdateGroup", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).UpdateGroup(ctx, req.(*UpdateGroupReq)) } return interceptor(ctx, in, info, handler) } func _LogicExt_GetGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetGroupReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).GetGroup(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/GetGroup", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).GetGroup(ctx, req.(*GetGroupReq)) } return interceptor(ctx, in, info, handler) } func _LogicExt_GetGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Empty) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).GetGroups(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/GetGroups", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).GetGroups(ctx, req.(*Empty)) } return interceptor(ctx, in, info, handler) } func _LogicExt_AddGroupMembers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(AddGroupMembersReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).AddGroupMembers(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/AddGroupMembers", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).AddGroupMembers(ctx, req.(*AddGroupMembersReq)) } return interceptor(ctx, in, info, handler) } func _LogicExt_UpdateGroupMember_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateGroupMemberReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).UpdateGroupMember(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/UpdateGroupMember", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).UpdateGroupMember(ctx, req.(*UpdateGroupMemberReq)) } return interceptor(ctx, in, info, handler) } func _LogicExt_DeleteGroupMember_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteGroupMemberReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).DeleteGroupMember(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/DeleteGroupMember", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).DeleteGroupMember(ctx, req.(*DeleteGroupMemberReq)) } return interceptor(ctx, in, info, handler) } func _LogicExt_GetGroupMembers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetGroupMembersReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(LogicExtServer).GetGroupMembers(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/pb.LogicExt/GetGroupMembers", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LogicExtServer).GetGroupMembers(ctx, req.(*GetGroupMembersReq)) } return interceptor(ctx, in, info, handler) } // LogicExt_ServiceDesc is the grpc.ServiceDesc for LogicExt service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) var LogicExt_ServiceDesc = grpc.ServiceDesc{ ServiceName: "pb.LogicExt", HandlerType: (*LogicExtServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "RegisterDevice", Handler: _LogicExt_RegisterDevice_Handler, }, { MethodName: "SendMessage", Handler: _LogicExt_SendMessage_Handler, }, { MethodName: "RecallMessage", Handler: _LogicExt_RecallMessage_Handler, }, { MethodName: "PushRoom", Handler: _LogicExt_PushRoom_Handler, }, { MethodName: "SendRedPacket", Handler: _LogicExt_SendRedPacket_Handler, }, { MethodName: "AddFriend", Handler: _LogicExt_AddFriend_Handler, }, { MethodName: "AgreeAddFriend", Handler: _LogicExt_AgreeAddFriend_Handler, }, { MethodName: "DeleteFriend", Handler: _LogicExt_DeleteFriend_Handler, }, { MethodName: "SetFriend", Handler: _LogicExt_SetFriend_Handler, }, { MethodName: "GetFriends", Handler: _LogicExt_GetFriends_Handler, }, { MethodName: "CreateGroup", Handler: _LogicExt_CreateGroup_Handler, }, { MethodName: "UpdateGroup", Handler: _LogicExt_UpdateGroup_Handler, }, { MethodName: "GetGroup", Handler: _LogicExt_GetGroup_Handler, }, { MethodName: "GetGroups", Handler: _LogicExt_GetGroups_Handler, }, { MethodName: "AddGroupMembers", Handler: _LogicExt_AddGroupMembers_Handler, }, { MethodName: "UpdateGroupMember", Handler: _LogicExt_UpdateGroupMember_Handler, }, { MethodName: "DeleteGroupMember", Handler: _LogicExt_DeleteGroupMember_Handler, }, { MethodName: "GetGroupMembers", Handler: _LogicExt_GetGroupMembers_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "logic.ext.proto", }