mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-24 02:16:16 +08:00
Merge branch 'errcode' of github.com:OpenIMSDK/Open-IM-Server into errcode
This commit is contained in:
commit
af406c3be4
@ -2,6 +2,8 @@ package msgtransfer
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
|
||||||
|
|
||||||
@ -52,7 +54,8 @@ func (mc *OnlineHistoryMongoConsumerHandler) handleChatWs2Mongo(ctx context.Cont
|
|||||||
log.ZError(ctx, "remove cache msg from redis err", err, "msg", msgFromMQ.MsgData, "conversationID", msgFromMQ.ConversationID)
|
log.ZError(ctx, "remove cache msg from redis err", err, "msg", msgFromMQ.MsgData, "conversationID", msgFromMQ.ConversationID)
|
||||||
}
|
}
|
||||||
for _, v := range msgFromMQ.MsgData {
|
for _, v := range msgFromMQ.MsgData {
|
||||||
if v.ContentType == constant.DeleteMessageNotification {
|
switch v.ContentType {
|
||||||
|
case constant.DeleteMessageNotification:
|
||||||
deleteMessageTips := sdkws.DeleteMessageTips{}
|
deleteMessageTips := sdkws.DeleteMessageTips{}
|
||||||
err := proto.Unmarshal(v.Content, &deleteMessageTips)
|
err := proto.Unmarshal(v.Content, &deleteMessageTips)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -61,10 +64,40 @@ func (mc *OnlineHistoryMongoConsumerHandler) handleChatWs2Mongo(ctx context.Cont
|
|||||||
}
|
}
|
||||||
if totalUnExistSeqs, err := mc.msgDatabase.DelMsgBySeqs(ctx, deleteMessageTips.UserID, deleteMessageTips.Seqs); err != nil {
|
if totalUnExistSeqs, err := mc.msgDatabase.DelMsgBySeqs(ctx, deleteMessageTips.UserID, deleteMessageTips.Seqs); err != nil {
|
||||||
log.ZError(ctx, "DelMsgBySeqs", err, "userIDs", deleteMessageTips.UserID, "seqs", deleteMessageTips.Seqs, "totalUnExistSeqs", totalUnExistSeqs)
|
log.ZError(ctx, "DelMsgBySeqs", err, "userIDs", deleteMessageTips.UserID, "seqs", deleteMessageTips.Seqs, "totalUnExistSeqs", totalUnExistSeqs)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
case constant.MsgRevokeNotification:
|
||||||
|
var elem sdkws.NotificationElem
|
||||||
|
if err := json.Unmarshal(v.Content, &elem); err != nil {
|
||||||
|
log.ZError(ctx, "json.Unmarshal NotificationElem", err, "content", string(v.Content))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
var tips sdkws.RevokeMsgTips
|
||||||
|
if err := json.Unmarshal([]byte(elem.Detail), &tips); err != nil {
|
||||||
|
log.ZError(ctx, "json.Unmarshal RevokeMsgTips", err, "content", string(v.Content))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
msgs, err := mc.msgDatabase.GetMsgBySeqs(ctx, tips.ConversationID, []int64{tips.Seq})
|
||||||
|
if err != nil {
|
||||||
|
log.ZError(ctx, "GetMsgBySeqs", err, "conversationID", tips.ConversationID, "seq", tips.Seq)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if len(msgs) == 0 {
|
||||||
|
log.ZError(ctx, "GetMsgBySeqs empty", errors.New("seq not found"), "conversationID", tips.ConversationID, "seq", tips.Seq)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
msgs[0].Content = []byte(elem.Detail)
|
||||||
|
data, err := proto.Marshal(msgs[0])
|
||||||
|
if err != nil {
|
||||||
|
log.ZError(ctx, "proto.Marshal MsgData", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if err := mc.msgDatabase.RevokeMsg(ctx, tips.ConversationID, tips.Seq, data); err != nil {
|
||||||
|
log.ZError(ctx, "RevokeMsg", err, "conversationID", tips.ConversationID, "seq", tips.Seq)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (OnlineHistoryMongoConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil }
|
func (OnlineHistoryMongoConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil }
|
||||||
|
@ -1217,23 +1217,32 @@ func (s *groupServer) SetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGr
|
|||||||
return nil, errs.ErrArgs.Wrap("invalid role level")
|
return nil, errs.ErrArgs.Wrap("invalid role level")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
opMember, ok := memberMap[[...]string{member.GroupID, opUserID}]
|
||||||
|
if !ok {
|
||||||
|
return nil, errs.ErrArgs.Wrap(fmt.Sprintf("user %s not in group %s", opUserID, member.GroupID))
|
||||||
|
}
|
||||||
if member.UserID == opUserID {
|
if member.UserID == opUserID {
|
||||||
if member.RoleLevel != nil {
|
if member.RoleLevel != nil {
|
||||||
return nil, errs.ErrNoPermission.Wrap("can not change self role level")
|
return nil, errs.ErrNoPermission.Wrap("can not change self role level")
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
opMember, ok := memberMap[[...]string{member.GroupID, opUserID}]
|
if opMember.RoleLevel == constant.GroupOrdinaryUsers {
|
||||||
if !ok {
|
return nil, errs.ErrNoPermission.Wrap("ordinary users can not change other role level")
|
||||||
return nil, errs.ErrArgs.Wrap(fmt.Sprintf("user %s not in group %s", opUserID, member.GroupID))
|
|
||||||
}
|
}
|
||||||
dbMember, ok := memberMap[[...]string{member.GroupID, member.UserID}]
|
dbMember, ok := memberMap[[...]string{member.GroupID, member.UserID}]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, errs.ErrRecordNotFound.Wrap(fmt.Sprintf("user %s not in group %s", member.UserID, member.GroupID))
|
return nil, errs.ErrRecordNotFound.Wrap(fmt.Sprintf("user %s not in group %s", member.UserID, member.GroupID))
|
||||||
}
|
}
|
||||||
if opMember.RoleLevel == constant.GroupOrdinaryUsers {
|
//if opMember.RoleLevel == constant.GroupOwner {
|
||||||
return nil, errs.ErrNoPermission.Wrap("ordinary users can not change other role level")
|
// continue
|
||||||
}
|
//}
|
||||||
|
//if dbMember.RoleLevel == constant.GroupOwner {
|
||||||
|
// return nil, errs.ErrNoPermission.Wrap("change group owner")
|
||||||
|
//}
|
||||||
|
//if opMember.RoleLevel == constant.GroupAdmin && dbMember.RoleLevel == constant.GroupAdmin {
|
||||||
|
// return nil, errs.ErrNoPermission.Wrap("admin can not change other admin role info")
|
||||||
|
//}
|
||||||
switch opMember.RoleLevel {
|
switch opMember.RoleLevel {
|
||||||
case constant.GroupOrdinaryUsers:
|
case constant.GroupOrdinaryUsers:
|
||||||
return nil, errs.ErrNoPermission.Wrap("ordinary users can not change other role level")
|
return nil, errs.ErrNoPermission.Wrap("ordinary users can not change other role level")
|
||||||
@ -1241,6 +1250,9 @@ func (s *groupServer) SetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGr
|
|||||||
if dbMember.RoleLevel != constant.GroupOrdinaryUsers {
|
if dbMember.RoleLevel != constant.GroupOrdinaryUsers {
|
||||||
return nil, errs.ErrNoPermission.Wrap("admin can not change other role level")
|
return nil, errs.ErrNoPermission.Wrap("admin can not change other role level")
|
||||||
}
|
}
|
||||||
|
if member.RoleLevel != nil {
|
||||||
|
return nil, errs.ErrNoPermission.Wrap("admin can not change other role level")
|
||||||
|
}
|
||||||
case constant.GroupOwner:
|
case constant.GroupOwner:
|
||||||
//if member.RoleLevel != nil && member.RoleLevel.Value == constant.GroupOwner {
|
//if member.RoleLevel != nil && member.RoleLevel.Value == constant.GroupOwner {
|
||||||
// return nil, errs.ErrNoPermission.Wrap("owner only one")
|
// return nil, errs.ErrNoPermission.Wrap("owner only one")
|
||||||
|
@ -2,13 +2,77 @@ package msg
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
|
||||||
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/constant"
|
||||||
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/tokenverify"
|
||||||
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/errs"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/msg"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/msg"
|
||||||
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
|
||||||
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (m *msgServer) RevokeMsg(ctx context.Context, req *msg.RevokeMsgReq) (*msg.RevokeMsgResp, error) {
|
func (m *msgServer) RevokeMsg(ctx context.Context, req *msg.RevokeMsgReq) (*msg.RevokeMsgResp, error) {
|
||||||
// if _, err := m.MsgDatabase.DelMsgBySeqs(ctx, req.UserID, req.Seqs); err != nil {
|
if req.UserID == "" {
|
||||||
// return nil, err
|
return nil, errs.ErrArgs.Wrap("user_id is empty")
|
||||||
// }
|
}
|
||||||
|
if req.RecvID == "" && req.GroupID == "" {
|
||||||
|
return nil, errs.ErrArgs.Wrap("recv_id and group_id are empty")
|
||||||
|
}
|
||||||
|
if req.RecvID != "" && req.GroupID != "" {
|
||||||
|
return nil, errs.ErrArgs.Wrap("recv_id and group_id cannot exist at the same time")
|
||||||
|
}
|
||||||
|
if err := tokenverify.CheckAccessV3(ctx, req.RecvID); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var sessionType int32
|
||||||
|
var conversationID string
|
||||||
|
if req.GroupID == "" {
|
||||||
|
sessionType = constant.SingleChatType
|
||||||
|
conversationID = utils.GenConversationUniqueKeyForSingle(req.UserID, req.RecvID)
|
||||||
|
} else {
|
||||||
|
sessionType = constant.SuperGroupChatType
|
||||||
|
conversationID = utils.GenConversationUniqueKeyForGroup(req.GroupID)
|
||||||
|
}
|
||||||
|
tips := sdkws.RevokeMsgTips{
|
||||||
|
RevokerUserID: req.UserID,
|
||||||
|
ClientMsgID: "",
|
||||||
|
RevokeTime: utils.GetCurrentTimestampByMill(),
|
||||||
|
Seq: req.Seq,
|
||||||
|
SesstionType: sessionType,
|
||||||
|
ConversationID: conversationID,
|
||||||
|
}
|
||||||
|
detail, err := json.Marshal(&tips)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
notificationElem := sdkws.NotificationElem{Detail: string(detail)}
|
||||||
|
content, err := json.Marshal(¬ificationElem)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errs.Wrap(err)
|
||||||
|
}
|
||||||
|
msgData := sdkws.MsgData{
|
||||||
|
SendID: req.UserID,
|
||||||
|
RecvID: req.RecvID,
|
||||||
|
GroupID: req.GroupID,
|
||||||
|
Content: content,
|
||||||
|
MsgFrom: constant.SysMsgType,
|
||||||
|
ContentType: constant.MsgRevokeNotification,
|
||||||
|
SessionType: sessionType,
|
||||||
|
CreateTime: utils.GetCurrentTimestampByMill(),
|
||||||
|
ClientMsgID: utils.GetMsgID(req.UserID),
|
||||||
|
Options: config.GetOptionsByNotification(config.NotificationConf{
|
||||||
|
IsSendMsg: true,
|
||||||
|
ReliabilityLevel: 2,
|
||||||
|
}),
|
||||||
|
OfflinePushInfo: nil,
|
||||||
|
}
|
||||||
|
if msgData.SessionType == constant.SuperGroupChatType {
|
||||||
|
msgData.GroupID = msgData.RecvID
|
||||||
|
}
|
||||||
|
_, err = m.SendMsg(ctx, &msg.SendMsgReq{MsgData: &msgData})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
return &msg.RevokeMsgResp{}, nil
|
return &msg.RevokeMsgResp{}, nil
|
||||||
}
|
}
|
||||||
|
@ -84,6 +84,8 @@ const (
|
|||||||
ConversationPrivateChatNotification = 1701
|
ConversationPrivateChatNotification = 1701
|
||||||
ConversationUnreadNotification = 1702
|
ConversationUnreadNotification = 1702
|
||||||
|
|
||||||
|
MsgRevokeNotification = 1750
|
||||||
|
|
||||||
BusinessNotificationBegin = 2000
|
BusinessNotificationBegin = 2000
|
||||||
BusinessNotification = 2001
|
BusinessNotification = 2001
|
||||||
BusinessNotificationEnd = 2099
|
BusinessNotificationEnd = 2099
|
||||||
|
@ -32,6 +32,8 @@ import (
|
|||||||
type CommonMsgDatabase interface {
|
type CommonMsgDatabase interface {
|
||||||
// 批量插入消息
|
// 批量插入消息
|
||||||
BatchInsertChat2DB(ctx context.Context, conversationID string, msgs []*sdkws.MsgData, currentMaxSeq int64) error
|
BatchInsertChat2DB(ctx context.Context, conversationID string, msgs []*sdkws.MsgData, currentMaxSeq int64) error
|
||||||
|
// 撤回消息
|
||||||
|
RevokeMsg(ctx context.Context, conversationID string, seq int64, msg []byte) error
|
||||||
// 刪除redis中消息缓存
|
// 刪除redis中消息缓存
|
||||||
DeleteMessageFromCache(ctx context.Context, conversationID string, msgs []*sdkws.MsgData) error
|
DeleteMessageFromCache(ctx context.Context, conversationID string, msgs []*sdkws.MsgData) error
|
||||||
// incrSeq然后批量插入缓存
|
// incrSeq然后批量插入缓存
|
||||||
@ -186,6 +188,10 @@ func (db *commonMsgDatabase) BatchInsertChat2DB(ctx context.Context, conversatio
|
|||||||
DocID: docID,
|
DocID: docID,
|
||||||
Msg: make([]unRelationTb.MsgInfoModel, num),
|
Msg: make([]unRelationTb.MsgInfoModel, num),
|
||||||
}
|
}
|
||||||
|
for i := 0; i < len(doc.Msg); i++ {
|
||||||
|
doc.Msg[i].ReadList = []string{}
|
||||||
|
doc.Msg[i].DelList = []string{}
|
||||||
|
}
|
||||||
for _, msg := range *msgs {
|
for _, msg := range *msgs {
|
||||||
data, err := proto.Marshal(msg)
|
data, err := proto.Marshal(msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -194,6 +200,8 @@ func (db *commonMsgDatabase) BatchInsertChat2DB(ctx context.Context, conversatio
|
|||||||
doc.Msg[msg.Seq%num] = unRelationTb.MsgInfoModel{
|
doc.Msg[msg.Seq%num] = unRelationTb.MsgInfoModel{
|
||||||
SendTime: msg.SendTime,
|
SendTime: msg.SendTime,
|
||||||
Msg: data,
|
Msg: data,
|
||||||
|
ReadList: []string{},
|
||||||
|
DelList: []string{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err := db.msgDocDatabase.Create(ctx, &doc); err != nil {
|
if err := db.msgDocDatabase.Create(ctx, &doc); err != nil {
|
||||||
@ -222,6 +230,12 @@ func (db *commonMsgDatabase) BatchInsertChat2DB(ctx context.Context, conversatio
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db *commonMsgDatabase) RevokeMsg(ctx context.Context, conversationID string, seq int64, msg []byte) error {
|
||||||
|
index := seq / db.msg.GetSingleGocMsgNum()
|
||||||
|
docID := db.msg.IndexDocID(conversationID, index)
|
||||||
|
return db.msgDocDatabase.UpdateMsgContent(ctx, docID, seq%db.msg.GetSingleGocMsgNum(), msg)
|
||||||
|
}
|
||||||
|
|
||||||
func (db *commonMsgDatabase) DeleteMessageFromCache(ctx context.Context, conversationID string, msgs []*sdkws.MsgData) error {
|
func (db *commonMsgDatabase) DeleteMessageFromCache(ctx context.Context, conversationID string, msgs []*sdkws.MsgData) error {
|
||||||
return db.cache.DeleteMessageFromCache(ctx, conversationID, msgs)
|
return db.cache.DeleteMessageFromCache(ctx, conversationID, msgs)
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,15 @@ package controller
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/unrelation"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/unrelation"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
|
"math/rand"
|
||||||
|
"sort"
|
||||||
|
"strconv"
|
||||||
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@ -33,19 +38,610 @@ func Test_BatchInsertChat2DB(t *testing.T) {
|
|||||||
db := &commonMsgDatabase{
|
db := &commonMsgDatabase{
|
||||||
msgDocDatabase: unrelation.NewMsgMongoDriver(mongo.GetDatabase()),
|
msgDocDatabase: unrelation.NewMsgMongoDriver(mongo.GetDatabase()),
|
||||||
}
|
}
|
||||||
ctx := context.Background()
|
//ctx := context.Background()
|
||||||
|
//msgs := make([]*sdkws.MsgData, 0, 1)
|
||||||
|
//for i := 0; i < cap(msgs); i++ {
|
||||||
|
// msgs = append(msgs, &sdkws.MsgData{
|
||||||
|
// Content: []byte(fmt.Sprintf("test-%d", i)),
|
||||||
|
// SendTime: time.Now().UnixMilli(),
|
||||||
|
// })
|
||||||
|
//}
|
||||||
|
//err = db.BatchInsertChat2DB(ctx, "test", msgs, 0)
|
||||||
|
//if err != nil {
|
||||||
|
// panic(err)
|
||||||
|
//}
|
||||||
|
|
||||||
msgs := make([]*sdkws.MsgData, 0, 15000)
|
_ = db.BatchInsertChat2DB
|
||||||
|
c := mongo.GetDatabase().Collection("msg")
|
||||||
|
|
||||||
for i := 0; i < cap(msgs); i++ {
|
ch := make(chan int)
|
||||||
msgs = append(msgs, &sdkws.MsgData{
|
rand.Seed(time.Now().UnixNano())
|
||||||
Content: []byte(fmt.Sprintf("test-%d", i)),
|
|
||||||
SendTime: time.Now().UnixMilli(),
|
index := 10
|
||||||
})
|
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
for i := 0; i < 1000; i++ {
|
||||||
|
wg.Add(1)
|
||||||
|
go func(channelID int) {
|
||||||
|
defer wg.Done()
|
||||||
|
<-ch
|
||||||
|
var arr []string
|
||||||
|
for i := 0; i < 500; i++ {
|
||||||
|
arr = append(arr, strconv.Itoa(i+1))
|
||||||
}
|
}
|
||||||
err = db.BatchInsertChat2DB(ctx, "test", msgs, 4999)
|
rand.Shuffle(len(arr), func(i, j int) {
|
||||||
|
arr[i], arr[j] = arr[j], arr[i]
|
||||||
|
})
|
||||||
|
for j, s := range arr {
|
||||||
|
if j == 0 {
|
||||||
|
fmt.Printf("channnelID: %d, arr[0]: %s\n", channelID, arr[j])
|
||||||
|
}
|
||||||
|
filter := bson.M{"doc_id": "test:0"}
|
||||||
|
update := bson.M{
|
||||||
|
"$addToSet": bson.M{
|
||||||
|
fmt.Sprintf("msgs.%d.del_list", index): bson.M{"$each": []string{s}},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
_, err := c.UpdateOne(context.Background(), filter, update)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < 1000; i++ {
|
||||||
|
wg.Add(1)
|
||||||
|
go func() {
|
||||||
|
defer wg.Done()
|
||||||
|
<-ch
|
||||||
|
var arr []string
|
||||||
|
for i := 0; i < 500; i++ {
|
||||||
|
arr = append(arr, strconv.Itoa(1001+i))
|
||||||
|
}
|
||||||
|
rand.Shuffle(len(arr), func(i, j int) {
|
||||||
|
arr[i], arr[j] = arr[j], arr[i]
|
||||||
|
})
|
||||||
|
for _, s := range arr {
|
||||||
|
filter := bson.M{"doc_id": "test:0"}
|
||||||
|
update := bson.M{
|
||||||
|
"$addToSet": bson.M{
|
||||||
|
fmt.Sprintf("msgs.%d.read_list", index): bson.M{"$each": []string{s}},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
_, err := c.UpdateOne(context.Background(), filter, update)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
|
time.Sleep(time.Second * 2)
|
||||||
|
|
||||||
|
close(ch)
|
||||||
|
|
||||||
|
wg.Wait()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestName(t *testing.T) {
|
||||||
|
s := ` [
|
||||||
|
189,
|
||||||
|
498,
|
||||||
|
310,
|
||||||
|
163,
|
||||||
|
313,
|
||||||
|
335,
|
||||||
|
327,
|
||||||
|
342,
|
||||||
|
123,
|
||||||
|
97,
|
||||||
|
4,
|
||||||
|
362,
|
||||||
|
210,
|
||||||
|
298,
|
||||||
|
436,
|
||||||
|
9,
|
||||||
|
369,
|
||||||
|
432,
|
||||||
|
132,
|
||||||
|
69,
|
||||||
|
248,
|
||||||
|
93,
|
||||||
|
91,
|
||||||
|
112,
|
||||||
|
145,
|
||||||
|
194,
|
||||||
|
84,
|
||||||
|
443,
|
||||||
|
179,
|
||||||
|
241,
|
||||||
|
257,
|
||||||
|
237,
|
||||||
|
169,
|
||||||
|
460,
|
||||||
|
33,
|
||||||
|
441,
|
||||||
|
126,
|
||||||
|
187,
|
||||||
|
390,
|
||||||
|
402,
|
||||||
|
51,
|
||||||
|
35,
|
||||||
|
455,
|
||||||
|
175,
|
||||||
|
389,
|
||||||
|
61,
|
||||||
|
309,
|
||||||
|
467,
|
||||||
|
492,
|
||||||
|
453,
|
||||||
|
159,
|
||||||
|
276,
|
||||||
|
165,
|
||||||
|
417,
|
||||||
|
173,
|
||||||
|
157,
|
||||||
|
12,
|
||||||
|
209,
|
||||||
|
269,
|
||||||
|
36,
|
||||||
|
226,
|
||||||
|
356,
|
||||||
|
92,
|
||||||
|
267,
|
||||||
|
482,
|
||||||
|
318,
|
||||||
|
219,
|
||||||
|
119,
|
||||||
|
176,
|
||||||
|
245,
|
||||||
|
74,
|
||||||
|
13,
|
||||||
|
450,
|
||||||
|
196,
|
||||||
|
215,
|
||||||
|
28,
|
||||||
|
167,
|
||||||
|
366,
|
||||||
|
442,
|
||||||
|
201,
|
||||||
|
341,
|
||||||
|
68,
|
||||||
|
2,
|
||||||
|
484,
|
||||||
|
328,
|
||||||
|
44,
|
||||||
|
423,
|
||||||
|
403,
|
||||||
|
105,
|
||||||
|
109,
|
||||||
|
480,
|
||||||
|
271,
|
||||||
|
134,
|
||||||
|
336,
|
||||||
|
299,
|
||||||
|
148,
|
||||||
|
365,
|
||||||
|
135,
|
||||||
|
277,
|
||||||
|
87,
|
||||||
|
244,
|
||||||
|
301,
|
||||||
|
218,
|
||||||
|
59,
|
||||||
|
280,
|
||||||
|
283,
|
||||||
|
55,
|
||||||
|
499,
|
||||||
|
133,
|
||||||
|
316,
|
||||||
|
407,
|
||||||
|
146,
|
||||||
|
56,
|
||||||
|
394,
|
||||||
|
386,
|
||||||
|
297,
|
||||||
|
285,
|
||||||
|
137,
|
||||||
|
58,
|
||||||
|
214,
|
||||||
|
142,
|
||||||
|
6,
|
||||||
|
124,
|
||||||
|
48,
|
||||||
|
60,
|
||||||
|
212,
|
||||||
|
75,
|
||||||
|
50,
|
||||||
|
412,
|
||||||
|
458,
|
||||||
|
127,
|
||||||
|
45,
|
||||||
|
266,
|
||||||
|
202,
|
||||||
|
368,
|
||||||
|
138,
|
||||||
|
260,
|
||||||
|
41,
|
||||||
|
193,
|
||||||
|
88,
|
||||||
|
114,
|
||||||
|
410,
|
||||||
|
95,
|
||||||
|
382,
|
||||||
|
416,
|
||||||
|
281,
|
||||||
|
434,
|
||||||
|
359,
|
||||||
|
98,
|
||||||
|
462,
|
||||||
|
300,
|
||||||
|
352,
|
||||||
|
230,
|
||||||
|
247,
|
||||||
|
117,
|
||||||
|
64,
|
||||||
|
287,
|
||||||
|
405,
|
||||||
|
224,
|
||||||
|
19,
|
||||||
|
259,
|
||||||
|
305,
|
||||||
|
220,
|
||||||
|
150,
|
||||||
|
477,
|
||||||
|
111,
|
||||||
|
448,
|
||||||
|
78,
|
||||||
|
103,
|
||||||
|
7,
|
||||||
|
385,
|
||||||
|
151,
|
||||||
|
429,
|
||||||
|
325,
|
||||||
|
273,
|
||||||
|
317,
|
||||||
|
470,
|
||||||
|
454,
|
||||||
|
170,
|
||||||
|
223,
|
||||||
|
5,
|
||||||
|
307,
|
||||||
|
396,
|
||||||
|
315,
|
||||||
|
53,
|
||||||
|
154,
|
||||||
|
446,
|
||||||
|
24,
|
||||||
|
255,
|
||||||
|
227,
|
||||||
|
76,
|
||||||
|
456,
|
||||||
|
250,
|
||||||
|
321,
|
||||||
|
330,
|
||||||
|
391,
|
||||||
|
355,
|
||||||
|
49,
|
||||||
|
479,
|
||||||
|
387,
|
||||||
|
216,
|
||||||
|
39,
|
||||||
|
251,
|
||||||
|
312,
|
||||||
|
217,
|
||||||
|
136,
|
||||||
|
262,
|
||||||
|
322,
|
||||||
|
344,
|
||||||
|
466,
|
||||||
|
242,
|
||||||
|
100,
|
||||||
|
388,
|
||||||
|
38,
|
||||||
|
323,
|
||||||
|
376,
|
||||||
|
379,
|
||||||
|
279,
|
||||||
|
239,
|
||||||
|
85,
|
||||||
|
306,
|
||||||
|
181,
|
||||||
|
485,
|
||||||
|
120,
|
||||||
|
333,
|
||||||
|
334,
|
||||||
|
17,
|
||||||
|
395,
|
||||||
|
81,
|
||||||
|
374,
|
||||||
|
147,
|
||||||
|
139,
|
||||||
|
185,
|
||||||
|
42,
|
||||||
|
1,
|
||||||
|
424,
|
||||||
|
199,
|
||||||
|
225,
|
||||||
|
113,
|
||||||
|
438,
|
||||||
|
128,
|
||||||
|
338,
|
||||||
|
156,
|
||||||
|
493,
|
||||||
|
46,
|
||||||
|
160,
|
||||||
|
11,
|
||||||
|
3,
|
||||||
|
171,
|
||||||
|
464,
|
||||||
|
62,
|
||||||
|
238,
|
||||||
|
431,
|
||||||
|
440,
|
||||||
|
302,
|
||||||
|
65,
|
||||||
|
308,
|
||||||
|
348,
|
||||||
|
125,
|
||||||
|
174,
|
||||||
|
195,
|
||||||
|
77,
|
||||||
|
392,
|
||||||
|
249,
|
||||||
|
82,
|
||||||
|
350,
|
||||||
|
444,
|
||||||
|
232,
|
||||||
|
186,
|
||||||
|
494,
|
||||||
|
384,
|
||||||
|
275,
|
||||||
|
129,
|
||||||
|
294,
|
||||||
|
246,
|
||||||
|
357,
|
||||||
|
102,
|
||||||
|
96,
|
||||||
|
73,
|
||||||
|
15,
|
||||||
|
263,
|
||||||
|
296,
|
||||||
|
236,
|
||||||
|
29,
|
||||||
|
340,
|
||||||
|
152,
|
||||||
|
149,
|
||||||
|
143,
|
||||||
|
437,
|
||||||
|
172,
|
||||||
|
190,
|
||||||
|
34,
|
||||||
|
158,
|
||||||
|
254,
|
||||||
|
295,
|
||||||
|
483,
|
||||||
|
397,
|
||||||
|
337,
|
||||||
|
72,
|
||||||
|
343,
|
||||||
|
178,
|
||||||
|
404,
|
||||||
|
270,
|
||||||
|
346,
|
||||||
|
205,
|
||||||
|
377,
|
||||||
|
486,
|
||||||
|
497,
|
||||||
|
370,
|
||||||
|
414,
|
||||||
|
240,
|
||||||
|
360,
|
||||||
|
490,
|
||||||
|
94,
|
||||||
|
256,
|
||||||
|
8,
|
||||||
|
54,
|
||||||
|
398,
|
||||||
|
183,
|
||||||
|
228,
|
||||||
|
162,
|
||||||
|
399,
|
||||||
|
289,
|
||||||
|
83,
|
||||||
|
86,
|
||||||
|
197,
|
||||||
|
243,
|
||||||
|
57,
|
||||||
|
25,
|
||||||
|
288,
|
||||||
|
488,
|
||||||
|
372,
|
||||||
|
168,
|
||||||
|
206,
|
||||||
|
188,
|
||||||
|
491,
|
||||||
|
452,
|
||||||
|
353,
|
||||||
|
478,
|
||||||
|
421,
|
||||||
|
221,
|
||||||
|
430,
|
||||||
|
184,
|
||||||
|
204,
|
||||||
|
26,
|
||||||
|
211,
|
||||||
|
140,
|
||||||
|
155,
|
||||||
|
468,
|
||||||
|
161,
|
||||||
|
420,
|
||||||
|
303,
|
||||||
|
30,
|
||||||
|
449,
|
||||||
|
131,
|
||||||
|
500,
|
||||||
|
20,
|
||||||
|
71,
|
||||||
|
79,
|
||||||
|
445,
|
||||||
|
425,
|
||||||
|
293,
|
||||||
|
411,
|
||||||
|
400,
|
||||||
|
320,
|
||||||
|
474,
|
||||||
|
272,
|
||||||
|
413,
|
||||||
|
329,
|
||||||
|
177,
|
||||||
|
122,
|
||||||
|
21,
|
||||||
|
347,
|
||||||
|
314,
|
||||||
|
451,
|
||||||
|
101,
|
||||||
|
367,
|
||||||
|
311,
|
||||||
|
40,
|
||||||
|
476,
|
||||||
|
415,
|
||||||
|
418,
|
||||||
|
363,
|
||||||
|
282,
|
||||||
|
469,
|
||||||
|
89,
|
||||||
|
274,
|
||||||
|
481,
|
||||||
|
475,
|
||||||
|
203,
|
||||||
|
268,
|
||||||
|
393,
|
||||||
|
261,
|
||||||
|
200,
|
||||||
|
121,
|
||||||
|
164,
|
||||||
|
472,
|
||||||
|
10,
|
||||||
|
284,
|
||||||
|
14,
|
||||||
|
358,
|
||||||
|
153,
|
||||||
|
383,
|
||||||
|
67,
|
||||||
|
473,
|
||||||
|
373,
|
||||||
|
191,
|
||||||
|
144,
|
||||||
|
16,
|
||||||
|
345,
|
||||||
|
361,
|
||||||
|
433,
|
||||||
|
116,
|
||||||
|
331,
|
||||||
|
489,
|
||||||
|
66,
|
||||||
|
106,
|
||||||
|
487,
|
||||||
|
426,
|
||||||
|
99,
|
||||||
|
27,
|
||||||
|
141,
|
||||||
|
264,
|
||||||
|
439,
|
||||||
|
371,
|
||||||
|
213,
|
||||||
|
18,
|
||||||
|
253,
|
||||||
|
292,
|
||||||
|
130,
|
||||||
|
409,
|
||||||
|
278,
|
||||||
|
419,
|
||||||
|
90,
|
||||||
|
496,
|
||||||
|
447,
|
||||||
|
465,
|
||||||
|
461,
|
||||||
|
339,
|
||||||
|
80,
|
||||||
|
31,
|
||||||
|
70,
|
||||||
|
233,
|
||||||
|
326,
|
||||||
|
37,
|
||||||
|
265,
|
||||||
|
252,
|
||||||
|
222,
|
||||||
|
118,
|
||||||
|
198,
|
||||||
|
406,
|
||||||
|
286,
|
||||||
|
380,
|
||||||
|
104,
|
||||||
|
304,
|
||||||
|
351,
|
||||||
|
408,
|
||||||
|
180,
|
||||||
|
22,
|
||||||
|
364,
|
||||||
|
381,
|
||||||
|
401,
|
||||||
|
234,
|
||||||
|
375,
|
||||||
|
459,
|
||||||
|
319,
|
||||||
|
229,
|
||||||
|
207,
|
||||||
|
291,
|
||||||
|
52,
|
||||||
|
463,
|
||||||
|
427,
|
||||||
|
23,
|
||||||
|
235,
|
||||||
|
32,
|
||||||
|
208,
|
||||||
|
192,
|
||||||
|
349,
|
||||||
|
231,
|
||||||
|
354,
|
||||||
|
435,
|
||||||
|
182,
|
||||||
|
428,
|
||||||
|
332,
|
||||||
|
378,
|
||||||
|
290,
|
||||||
|
108,
|
||||||
|
258,
|
||||||
|
471,
|
||||||
|
115,
|
||||||
|
47,
|
||||||
|
457,
|
||||||
|
166,
|
||||||
|
43,
|
||||||
|
495,
|
||||||
|
63,
|
||||||
|
110,
|
||||||
|
107,
|
||||||
|
422,
|
||||||
|
324
|
||||||
|
]`
|
||||||
|
|
||||||
|
var arr []int
|
||||||
|
|
||||||
|
if err := json.Unmarshal([]byte(s), &arr); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sort.Ints(arr)
|
||||||
|
|
||||||
|
for i, v := range arr {
|
||||||
|
fmt.Println(i, v, v == i+1)
|
||||||
|
if v != i+1 {
|
||||||
|
panic(fmt.Sprintf("expected %d, got %d", i+1, v))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -23,12 +23,16 @@ type MsgDocModel struct {
|
|||||||
type MsgInfoModel struct {
|
type MsgInfoModel struct {
|
||||||
SendTime int64 `bson:"sendtime"`
|
SendTime int64 `bson:"sendtime"`
|
||||||
Msg []byte `bson:"msg"`
|
Msg []byte `bson:"msg"`
|
||||||
|
Revoke bool `bson:"revoke"`
|
||||||
|
ReadList []string `bson:"read_list"`
|
||||||
|
DelList []string `bson:"del_list"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type MsgDocModelInterface interface {
|
type MsgDocModelInterface interface {
|
||||||
PushMsgsToDoc(ctx context.Context, docID string, msgsToMongo []MsgInfoModel) error
|
PushMsgsToDoc(ctx context.Context, docID string, msgsToMongo []MsgInfoModel) error
|
||||||
Create(ctx context.Context, model *MsgDocModel) error
|
Create(ctx context.Context, model *MsgDocModel) error
|
||||||
UpdateMsg(ctx context.Context, docID string, index int64, info *MsgInfoModel) error
|
UpdateMsg(ctx context.Context, docID string, index int64, info *MsgInfoModel) error
|
||||||
|
UpdateMsgContent(ctx context.Context, docID string, index int64, msg []byte) error
|
||||||
IsExistDocID(ctx context.Context, docID string) (bool, error)
|
IsExistDocID(ctx context.Context, docID string) (bool, error)
|
||||||
UpdateMsgStatusByIndexInOneDoc(ctx context.Context, docID string, msg *sdkws.MsgData, seqIndex int, status int32) error
|
UpdateMsgStatusByIndexInOneDoc(ctx context.Context, docID string, msg *sdkws.MsgData, seqIndex int, status int32) error
|
||||||
FindOneByDocID(ctx context.Context, docID string) (*MsgDocModel, error)
|
FindOneByDocID(ctx context.Context, docID string) (*MsgDocModel, error)
|
||||||
|
@ -46,6 +46,14 @@ func (m *MsgMongoDriver) UpdateMsg(ctx context.Context, docID string, index int6
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *MsgMongoDriver) UpdateMsgContent(ctx context.Context, docID string, index int64, msg []byte) error {
|
||||||
|
_, err := m.MsgCollection.UpdateOne(ctx, bson.M{"doc_id": docID}, bson.M{"$set": bson.M{fmt.Sprintf("msgs.%d.msg", index): msg}})
|
||||||
|
if err != nil {
|
||||||
|
return utils.Wrap(err, "")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (m *MsgMongoDriver) UpdateMsgStatusByIndexInOneDoc(ctx context.Context, docID string, msg *sdkws.MsgData, seqIndex int, status int32) error {
|
func (m *MsgMongoDriver) UpdateMsgStatusByIndexInOneDoc(ctx context.Context, docID string, msg *sdkws.MsgData, seqIndex int, status int32) error {
|
||||||
msg.Status = status
|
msg.Status = status
|
||||||
bytes, err := proto.Marshal(msg)
|
bytes, err := proto.Marshal(msg)
|
||||||
|
@ -1624,9 +1624,10 @@ type RevokeMsgReq struct {
|
|||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
ConversationID string `protobuf:"bytes,1,opt,name=conversationID,proto3" json:"conversationID"`
|
UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"`
|
||||||
Seq int64 `protobuf:"varint,2,opt,name=seq,proto3" json:"seq"`
|
RecvID string `protobuf:"bytes,2,opt,name=recvID,proto3" json:"recvID"`
|
||||||
UserID string `protobuf:"bytes,3,opt,name=userID,proto3" json:"userID"`
|
GroupID string `protobuf:"bytes,3,opt,name=groupID,proto3" json:"groupID"`
|
||||||
|
Seq int64 `protobuf:"varint,4,opt,name=seq,proto3" json:"seq"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *RevokeMsgReq) Reset() {
|
func (x *RevokeMsgReq) Reset() {
|
||||||
@ -1661,9 +1662,23 @@ func (*RevokeMsgReq) Descriptor() ([]byte, []int) {
|
|||||||
return file_msg_msg_proto_rawDescGZIP(), []int{27}
|
return file_msg_msg_proto_rawDescGZIP(), []int{27}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *RevokeMsgReq) GetConversationID() string {
|
func (x *RevokeMsgReq) GetUserID() string {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.ConversationID
|
return x.UserID
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *RevokeMsgReq) GetRecvID() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.RecvID
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *RevokeMsgReq) GetGroupID() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.GroupID
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
@ -1675,13 +1690,6 @@ func (x *RevokeMsgReq) GetSeq() int64 {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *RevokeMsgReq) GetUserID() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.UserID
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
type RevokeMsgResp struct {
|
type RevokeMsgResp struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
@ -2526,145 +2534,146 @@ var file_msg_msg_proto_rawDesc = []byte{
|
|||||||
0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f,
|
0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f,
|
||||||
0x6e, 0x49, 0x44, 0x22, 0x0c, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x73, 0x52, 0x65,
|
0x6e, 0x49, 0x44, 0x22, 0x0c, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x73, 0x52, 0x65,
|
||||||
0x71, 0x22, 0x0d, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70,
|
0x71, 0x22, 0x0d, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70,
|
||||||
0x22, 0x60, 0x0a, 0x0c, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71,
|
0x22, 0x6a, 0x0a, 0x0c, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71,
|
||||||
0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
|
||||||
0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72,
|
|
||||||
0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18,
|
|
||||||
0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73,
|
|
||||||
0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72,
|
|
||||||
0x49, 0x44, 0x22, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4d, 0x73, 0x67, 0x52,
|
|
||||||
0x65, 0x73, 0x70, 0x22, 0x5c, 0x0a, 0x18, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x76,
|
|
||||||
0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x12,
|
|
||||||
0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
|
|
||||||
0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72,
|
|
||||||
0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65,
|
|
||||||
0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49,
|
|
||||||
0x44, 0x22, 0x1b, 0x0a, 0x19, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72,
|
|
||||||
0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x28,
|
|
||||||
0x0a, 0x0e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x41, 0x6c, 0x6c, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71,
|
|
||||||
0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
|
0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
|
||||||
0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x6c, 0x65, 0x61,
|
0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x76,
|
||||||
0x72, 0x41, 0x6c, 0x6c, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x62, 0x0a, 0x0c, 0x44,
|
0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44,
|
||||||
0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x0e, 0x63,
|
0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28,
|
||||||
0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20,
|
0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65,
|
||||||
0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f,
|
0x71, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x73, 0x65, 0x71, 0x22, 0x0f, 0x0a, 0x0d,
|
||||||
0x6e, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x71, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
|
0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x5c, 0x0a,
|
||||||
0x03, 0x52, 0x04, 0x73, 0x65, 0x71, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49,
|
0x18, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69,
|
||||||
0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22,
|
0x6f, 0x6e, 0x73, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6e,
|
||||||
0x0f, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70,
|
0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03,
|
||||||
0x22, 0x60, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x50, 0x68, 0x79,
|
0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
||||||
0x73, 0x69, 0x63, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x76,
|
0x49, 0x44, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20,
|
||||||
0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
|
0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x1b, 0x0a, 0x19, 0x43,
|
||||||
0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
|
0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
||||||
0x44, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65,
|
0x73, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x28, 0x0a, 0x0e, 0x43, 0x6c, 0x65, 0x61,
|
||||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69,
|
0x72, 0x41, 0x6c, 0x6c, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73,
|
||||||
0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x50,
|
0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72,
|
||||||
0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x57, 0x0a, 0x19, 0x44,
|
0x49, 0x44, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x41, 0x6c, 0x6c, 0x4d, 0x73,
|
||||||
0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x67, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c,
|
0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x62, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d,
|
||||||
0x42, 0x79, 0x53, 0x65, 0x71, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x76,
|
0x73, 0x67, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73,
|
||||||
0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
|
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63,
|
||||||
0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44,
|
0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x12, 0x0a,
|
||||||
0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x71, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04,
|
0x04, 0x73, 0x65, 0x71, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x73, 0x65, 0x71,
|
||||||
0x73, 0x65, 0x71, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73,
|
0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28,
|
||||||
0x67, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x79, 0x53, 0x65, 0x71, 0x52, 0x65,
|
0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x0f, 0x0a, 0x0d, 0x44, 0x65, 0x6c,
|
||||||
0x73, 0x70, 0x32, 0xda, 0x0b, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x50, 0x0a, 0x09, 0x47, 0x65,
|
0x65, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x60, 0x0a, 0x14, 0x44, 0x65,
|
||||||
0x74, 0x4d, 0x61, 0x78, 0x53, 0x65, 0x71, 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d,
|
0x6c, 0x65, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x52,
|
||||||
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x47, 0x65, 0x74,
|
0x65, 0x71, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69,
|
||||||
0x4d, 0x61, 0x78, 0x53, 0x65, 0x71, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e,
|
0x6f, 0x6e, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e,
|
||||||
0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x47,
|
0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x73, 0x12, 0x1e, 0x0a, 0x0a,
|
||||||
0x65, 0x74, 0x4d, 0x61, 0x78, 0x53, 0x65, 0x71, 0x52, 0x65, 0x73, 0x70, 0x12, 0x68, 0x0a, 0x11,
|
0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
|
||||||
0x50, 0x75, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x53, 0x65, 0x71,
|
0x52, 0x0a, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15,
|
||||||
0x73, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61,
|
||||||
0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61,
|
0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x57, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e,
|
||||||
0x67, 0x65, 0x42, 0x79, 0x53, 0x65, 0x71, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70,
|
0x73, 0x67, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x79, 0x53, 0x65, 0x71, 0x52,
|
||||||
|
0x65, 0x71, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69,
|
||||||
|
0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76,
|
||||||
|
0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65,
|
||||||
|
0x71, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x73, 0x65, 0x71, 0x73, 0x22, 0x1c,
|
||||||
|
0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x67, 0x50, 0x68, 0x79, 0x73, 0x69,
|
||||||
|
0x63, 0x61, 0x6c, 0x42, 0x79, 0x53, 0x65, 0x71, 0x52, 0x65, 0x73, 0x70, 0x32, 0xda, 0x0b, 0x0a,
|
||||||
|
0x03, 0x6d, 0x73, 0x67, 0x12, 0x50, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x53, 0x65,
|
||||||
|
0x71, 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||||
|
0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x53, 0x65, 0x71,
|
||||||
|
0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76,
|
||||||
|
0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x53,
|
||||||
|
0x65, 0x71, 0x52, 0x65, 0x73, 0x70, 0x12, 0x68, 0x0a, 0x11, 0x50, 0x75, 0x6c, 0x6c, 0x4d, 0x65,
|
||||||
|
0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x53, 0x65, 0x71, 0x73, 0x12, 0x28, 0x2e, 0x4f, 0x70,
|
||||||
0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73,
|
0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73,
|
||||||
0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x53, 0x65,
|
0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x53, 0x65,
|
||||||
0x71, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x07, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73,
|
0x71, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65,
|
||||||
0x67, 0x12, 0x1c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x4d,
|
||||||
0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a,
|
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x53, 0x65, 0x71, 0x73, 0x52, 0x65, 0x73, 0x70,
|
||||||
0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d,
|
0x12, 0x46, 0x0a, 0x07, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x2e, 0x4f, 0x70,
|
||||||
0x73, 0x67, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x70,
|
|
||||||
0x0a, 0x15, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74,
|
|
||||||
0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x73, 0x67, 0x12, 0x2a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d,
|
|
||||||
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72,
|
|
||||||
0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x73, 0x67,
|
|
||||||
0x52, 0x65, 0x71, 0x1a, 0x2b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76,
|
|
||||||
0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x76,
|
|
||||||
0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70,
|
|
||||||
0x12, 0x52, 0x0a, 0x0b, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x41, 0x6c, 0x6c, 0x4d, 0x73, 0x67, 0x12,
|
|
||||||
0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d,
|
|
||||||
0x73, 0x67, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x41, 0x6c, 0x6c, 0x4d, 0x73, 0x67, 0x52, 0x65,
|
|
||||||
0x71, 0x1a, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
|
||||||
0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x41, 0x6c, 0x6c, 0x4d, 0x73, 0x67,
|
|
||||||
0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x73,
|
|
||||||
0x67, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
|
||||||
0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65,
|
|
||||||
0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
|
||||||
0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65,
|
|
||||||
0x73, 0x70, 0x12, 0x73, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x67, 0x50,
|
|
||||||
0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x79, 0x53, 0x65, 0x71, 0x12, 0x2b, 0x2e, 0x4f,
|
|
||||||
0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e,
|
|
||||||
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x67, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61,
|
|
||||||
0x6c, 0x42, 0x79, 0x53, 0x65, 0x71, 0x52, 0x65, 0x71, 0x1a, 0x2c, 0x2e, 0x4f, 0x70, 0x65, 0x6e,
|
|
||||||
0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x44, 0x65, 0x6c,
|
|
||||||
0x65, 0x74, 0x65, 0x4e, 0x73, 0x67, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x79,
|
|
||||||
0x53, 0x65, 0x71, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x53, 0x65,
|
|
||||||
0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x2e, 0x4f, 0x70,
|
|
||||||
0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x53,
|
0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x53,
|
||||||
0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
|
0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e,
|
||||||
0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65,
|
0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x53, 0x65, 0x6e,
|
||||||
0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67,
|
0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x70, 0x0a, 0x15, 0x43, 0x6c, 0x65, 0x61,
|
||||||
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x10, 0x47, 0x65,
|
0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x73,
|
||||||
0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25,
|
0x67, 0x12, 0x2a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||||
0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73,
|
0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72,
|
||||||
0x67, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74,
|
0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x2b, 0x2e,
|
||||||
0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65,
|
0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67,
|
||||||
0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64,
|
0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69,
|
||||||
0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a,
|
0x6f, 0x6e, 0x73, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x0b, 0x43, 0x6c,
|
||||||
0x09, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65,
|
0x65, 0x61, 0x72, 0x41, 0x6c, 0x6c, 0x4d, 0x73, 0x67, 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e,
|
||||||
0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x52, 0x65,
|
0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x43, 0x6c, 0x65,
|
||||||
0x76, 0x6f, 0x6b, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65,
|
0x61, 0x72, 0x41, 0x6c, 0x6c, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f, 0x70,
|
||||||
0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x52, 0x65,
|
0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x43,
|
||||||
0x76, 0x6f, 0x6b, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x85, 0x01, 0x0a, 0x1c,
|
0x6c, 0x65, 0x61, 0x72, 0x41, 0x6c, 0x6c, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c,
|
||||||
0x53, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69,
|
0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x1e, 0x2e, 0x4f, 0x70,
|
||||||
0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x2e, 0x4f,
|
0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x44,
|
||||||
|
0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70,
|
||||||
|
0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x44,
|
||||||
|
0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x73, 0x0a, 0x16,
|
||||||
|
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x67, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61,
|
||||||
|
0x6c, 0x42, 0x79, 0x53, 0x65, 0x71, 0x12, 0x2b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53,
|
||||||
|
0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
|
||||||
|
0x4e, 0x73, 0x67, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x79, 0x53, 0x65, 0x71,
|
||||||
|
0x52, 0x65, 0x71, 0x1a, 0x2c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76,
|
||||||
|
0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x73, 0x67,
|
||||||
|
0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x79, 0x53, 0x65, 0x71, 0x52, 0x65, 0x73,
|
||||||
|
0x70, 0x12, 0x61, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53,
|
||||||
|
0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65,
|
||||||
|
0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64,
|
||||||
|
0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f,
|
||||||
0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e,
|
0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e,
|
||||||
0x53, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69,
|
0x53, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
|
||||||
0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a,
|
0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d,
|
||||||
0x32, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d,
|
0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49,
|
||||||
0x73, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61,
|
0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x53,
|
||||||
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52,
|
0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a,
|
||||||
0x65, 0x73, 0x70, 0x12, 0x88, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
|
0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d,
|
||||||
0x67, 0x65, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e,
|
0x73, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61,
|
||||||
0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65,
|
0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x09, 0x52, 0x65, 0x76, 0x6f, 0x6b,
|
||||||
0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73,
|
0x65, 0x4d, 0x73, 0x67, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72,
|
||||||
0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65,
|
0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4d, 0x73,
|
||||||
0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x6e,
|
0x67, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72,
|
||||||
0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x47, 0x65, 0x74,
|
0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4d, 0x73,
|
||||||
0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
|
0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x85, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x73,
|
||||||
0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x8b,
|
0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65,
|
||||||
0x01, 0x0a, 0x1c, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61,
|
0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53,
|
||||||
|
0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x73,
|
||||||
|
0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65,
|
||||||
|
0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x32, 0x2e, 0x4f, 0x70, 0x65, 0x6e,
|
||||||
|
0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x53, 0x65, 0x74,
|
||||||
|
0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45,
|
||||||
|
0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x88, 0x01,
|
||||||
|
0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x61,
|
||||||
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12,
|
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12,
|
||||||
0x34, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d,
|
0x32, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d,
|
||||||
|
0x73, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65,
|
||||||
|
0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
|
||||||
|
0x52, 0x65, 0x71, 0x1a, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76,
|
||||||
|
0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
|
||||||
|
0x65, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
|
||||||
|
0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x8b, 0x01, 0x0a, 0x1c, 0x41, 0x64, 0x64,
|
||||||
|
0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45,
|
||||||
|
0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x2e, 0x4f, 0x70, 0x65, 0x6e,
|
||||||
|
0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x4d, 0x6f, 0x64,
|
||||||
|
0x69, 0x66, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69,
|
||||||
|
0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a,
|
||||||
|
0x35, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d,
|
||||||
0x73, 0x67, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
|
0x73, 0x67, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
|
||||||
0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
|
0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
|
||||||
0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x35, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65,
|
0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x90, 0x01, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74,
|
||||||
0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x4d,
|
0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
|
||||||
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78,
|
0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x2e, 0x4f, 0x70, 0x65,
|
||||||
0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x90, 0x01, 0x0a,
|
0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x44, 0x65,
|
||||||
0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65,
|
0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x61, 0x63,
|
||||||
0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
|
0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
|
||||||
0x12, 0x35, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
|
0x71, 0x1a, 0x36, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||||
0x6d, 0x73, 0x67, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
|
0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61,
|
||||||
0x65, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
|
0x67, 0x65, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e,
|
||||||
0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x36, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d,
|
0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74,
|
||||||
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6d, 0x73, 0x67, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
|
0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x44,
|
||||||
0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f,
|
0x4b, 0x2f, 0x4f, 0x70, 0x65, 0x6e, 0x2d, 0x49, 0x4d, 0x2d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||||
0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x42,
|
0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x73, 0x67, 0x62, 0x06,
|
||||||
0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4f, 0x70,
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
0x65, 0x6e, 0x49, 0x4d, 0x53, 0x44, 0x4b, 0x2f, 0x4f, 0x70, 0x65, 0x6e, 0x2d, 0x49, 0x4d, 0x2d,
|
|
||||||
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
|
||||||
0x2f, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -159,9 +159,10 @@ message DelMsgsResp{
|
|||||||
}
|
}
|
||||||
|
|
||||||
message RevokeMsgReq {
|
message RevokeMsgReq {
|
||||||
string conversationID = 1;
|
string userID = 1;
|
||||||
int64 seq = 2;
|
string recvID = 2;
|
||||||
string userID = 3;
|
string groupID = 3;
|
||||||
|
int64 seq = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
message RevokeMsgResp {
|
message RevokeMsgResp {
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -329,7 +329,6 @@ message GroupMemberInfoSetTips{
|
|||||||
GroupMemberFullInfo changedUser = 4;
|
GroupMemberFullInfo changedUser = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//////////////////////friend/////////////////////
|
//////////////////////friend/////////////////////
|
||||||
|
|
||||||
message FriendApplication{
|
message FriendApplication{
|
||||||
@ -411,6 +410,10 @@ message ConversationHasReadTips {
|
|||||||
int64 unreadCountTime = 4;
|
int64 unreadCountTime = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message NotificationElem {
|
||||||
|
string detail = 1;
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////message///////////////////////
|
////////////////////message///////////////////////
|
||||||
message seqs {
|
message seqs {
|
||||||
repeated int64 seqs = 1;
|
repeated int64 seqs = 1;
|
||||||
@ -423,11 +426,11 @@ message DeleteMessageTips{
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
message RevokeMsgTip{
|
message RevokeMsgTips{
|
||||||
string revokerUserID = 1;
|
string revokerUserID = 1;
|
||||||
string clientMsgID = 2;
|
string clientMsgID = 2;
|
||||||
int64 revokeTime = 3;
|
int64 revokeTime = 3;
|
||||||
int64 sesstionType = 5;
|
int32 sesstionType = 5;
|
||||||
int64 seq = 6;
|
int64 seq = 6;
|
||||||
string conversationID = 7;
|
string conversationID = 7;
|
||||||
}
|
}
|
||||||
|
@ -134,13 +134,9 @@ func (m *MsgClient) PullMessageBySeqList(ctx context.Context, req *sdkws.PullMes
|
|||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
type NotificationElem struct {
|
|
||||||
Detail string `json:"detail,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *MsgClient) Notification(ctx context.Context, sendID, recvID string, contentType int32, m proto.Message, opts ...utils.OptionsOpt) error {
|
func (c *MsgClient) Notification(ctx context.Context, sendID, recvID string, contentType int32, m proto.Message, opts ...utils.OptionsOpt) error {
|
||||||
n := NotificationElem{Detail: utils.StructToJsonString(m)}
|
n := sdkws.NotificationElem{Detail: utils.StructToJsonString(m)}
|
||||||
content, err := json.Marshal(n)
|
content, err := json.Marshal(&n)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.ZError(ctx, "MsgClient Notification json.Marshal failed", err, "sendID", sendID, "recvID", recvID, "contentType", contentType, "msg", m)
|
log.ZError(ctx, "MsgClient Notification json.Marshal failed", err, "sendID", sendID, "recvID", recvID, "contentType", contentType, "msg", m)
|
||||||
return err
|
return err
|
||||||
|
Loading…
x
Reference in New Issue
Block a user