From fe9e2aa287a45fa0b574aed2050cbcea3a22ac95 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 25 Feb 2022 11:49:52 +0800 Subject: [PATCH 01/81] config update --- config/config.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index a5d755182..d4a8c3e87 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -464,17 +464,17 @@ demoswitch: true demo: openImDemoPort: [ 42233 ] #demo对外服务端口,默认即可,需要开放此端口或做nginx转发 alismsverify: #阿里云短信配置,在阿里云申请成功后修改以下四项,必须修改 - accessKeyId: LTAI5tJPkn4HuuePdiLdGqe71 - accessKeySecret: 4n9OJ7ZCVN1U6KeHDAtOyNeVZcjOuV1 - signName: OpenIM Corporation - verificationCodeTemplateCode: SMS_2268101641 + accessKeyId: LTAI5tJPkn4HuuePdiLdGqe7 + accessKeySecret: 4n9OJ7ZCVN1U6KeHDAtOyNeVZcjOuV + signName: 托云信息技术 + verificationCodeTemplateCode: SMS_226810164 superCode: 666666 #超级验证码,建议修改掉,收不到短信验证码时可以用此替代 # second codeTTL: 300 mail: #仅支持qq邮箱,具体操作参考 https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256 必须修改 title: "openIM" - senderMail: "1765567899@qq.com" - senderAuthorizationCode: "1gxyausfoevlzbfag" + senderMail: "765567899@qq.com" + senderAuthorizationCode: "gxyausfoevlzbfag" smtpAddr: "smtp.qq.com" smtpPort: 25 #需开放此端口 出口方向 From 2c26efb5a994ffa883a452a29c7cca206aadfa5a Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 25 Feb 2022 15:02:02 +0800 Subject: [PATCH 02/81] log remove --- pkg/common/db/mysql_model/im_mysql_model/demo_model.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/db/mysql_model/im_mysql_model/demo_model.go b/pkg/common/db/mysql_model/im_mysql_model/demo_model.go index a10218828..897e5e212 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/demo_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/demo_model.go @@ -11,7 +11,7 @@ func GetRegister(account string) (*db.Register, error) { return nil, err } var r db.Register - return &r, dbConn.Debug().Table("registers").Where("account = ?", + return &r, dbConn.Table("registers").Where("account = ?", account).Take(&r).Error } From 010736839a06dd7fcda32b4dafe370ed8cc50bc0 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Fri, 25 Feb 2022 15:26:55 +0800 Subject: [PATCH 03/81] 2.0.1 --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index b8d99cc7d..5497faa43 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -89,7 +89,7 @@ services: command: /usr/local/bin/etcd --name etcd0 --data-dir /etcd-data --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-advertise-peer-urls http://0.0.0.0:2380 --initial-cluster etcd0=http://0.0.0.0:2380 --initial-cluster-token tkn --initial-cluster-state new open_im_server: - image: openim/open_im_server:v2.0.0 + image: openim/open_im_server:v2.0.1 container_name: open_im_server volumes: - ./logs:/Open-IM-Server/logs From 157cd9a03562415227fd3edb8177a1a6b706c643 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Fri, 25 Feb 2022 15:27:37 +0800 Subject: [PATCH 04/81] 2.0.1 --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index b8d99cc7d..5497faa43 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -89,7 +89,7 @@ services: command: /usr/local/bin/etcd --name etcd0 --data-dir /etcd-data --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-advertise-peer-urls http://0.0.0.0:2380 --initial-cluster etcd0=http://0.0.0.0:2380 --initial-cluster-token tkn --initial-cluster-state new open_im_server: - image: openim/open_im_server:v2.0.0 + image: openim/open_im_server:v2.0.1 container_name: open_im_server volumes: - ./logs:/Open-IM-Server/logs From 751c278052326a25ce6082d52973d420fd05c59d Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Fri, 25 Feb 2022 15:31:18 +0800 Subject: [PATCH 05/81] version: "2" --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 5497faa43..0c9422f62 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,4 +1,4 @@ -version: "3" +version: "2" #fixme Clone openIM Server project before using docker-compose,project address:https://github.com/OpenIMSDK/Open-IM-Server.git services: From 70b97aa856989f4c75a6ba35ca542cd606ef3daa Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Fri, 25 Feb 2022 15:36:29 +0800 Subject: [PATCH 06/81] version: "3" --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 0c9422f62..5497faa43 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,4 +1,4 @@ -version: "2" +version: "3" #fixme Clone openIM Server project before using docker-compose,project address:https://github.com/OpenIMSDK/Open-IM-Server.git services: From a1333dcace141dc1795ce6efb6b9bc460723cc01 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 25 Feb 2022 15:59:33 +0800 Subject: [PATCH 07/81] config update --- config/config.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index d4a8c3e87..6e3eaeea6 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -462,7 +462,8 @@ notification: #是否启动demo,如果自身没有账号体系,设置为true demoswitch: true demo: - openImDemoPort: [ 42233 ] #demo对外服务端口,默认即可,需要开放此端口或做nginx转发 + #demo对外服务端口,默认即可,需要开放此端口或做nginx转发 + openImDemoPort: [ 42233 ] alismsverify: #阿里云短信配置,在阿里云申请成功后修改以下四项,必须修改 accessKeyId: LTAI5tJPkn4HuuePdiLdGqe7 accessKeySecret: 4n9OJ7ZCVN1U6KeHDAtOyNeVZcjOuV From a1067492b72349a1b5a63c3b5dfa464c3f231056 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 25 Feb 2022 18:35:04 +0800 Subject: [PATCH 08/81] server msg id update --- internal/rpc/msg/send_msg.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 114746da2..a57a6e892 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -245,7 +245,7 @@ func (rpc *rpcChat) sendMsgToKafka(m *pbChat.MsgDataToMQ, key string) error { } func GetMsgID(sendID string) string { t := time.Now().Format("2006-01-02 15:04:05") - return t + "-" + sendID + "-" + strconv.Itoa(rand.Int()) + return utils.Md5(t + "-" + sendID + "-" + strconv.Itoa(rand.Int())) } func returnMsg(replay *pbChat.SendMsgResp, pb *pbChat.SendMsgReq, errCode int32, errMsg, serverMsgID string, sendTime int64) (*pbChat.SendMsgResp, error) { From 55c8399084b78c3d73c455b6540ea1fa083ccce1 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 25 Feb 2022 19:19:23 +0800 Subject: [PATCH 09/81] remove mysql for test --- internal/msg_transfer/logic/init.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/msg_transfer/logic/init.go b/internal/msg_transfer/logic/init.go index cce434d99..7d1cad671 100644 --- a/internal/msg_transfer/logic/init.go +++ b/internal/msg_transfer/logic/init.go @@ -20,6 +20,6 @@ func Init() { } func Run() { //register mysqlConsumerHandler to - go persistentCH.persistentConsumerGroup.RegisterHandleAndConsumer(&persistentCH) + //go persistentCH.persistentConsumerGroup.RegisterHandleAndConsumer(&persistentCH) go historyCH.historyConsumerGroup.RegisterHandleAndConsumer(&historyCH) } From 8c9d1b7dec123c1f192d27e9b39a157ee8d1efdb Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Fri, 25 Feb 2022 19:29:39 +0800 Subject: [PATCH 10/81] statistics --- pkg/statistics/statistics.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 pkg/statistics/statistics.go diff --git a/pkg/statistics/statistics.go b/pkg/statistics/statistics.go new file mode 100644 index 000000000..51ff4c871 --- /dev/null +++ b/pkg/statistics/statistics.go @@ -0,0 +1,20 @@ +package statistics + +import "time" + +type Statistics struct { + Count *uint64 + Dr int +} + +func (s *Statistics) output() { + for { + time.Sleep(time.Duration(s.Dr) * time.Second) + + } +} + +func NewStatistics(count *uint64, dr int) *Statistics { + p := &Statistics{Count: count} + go p.output() +} From 4f01b0b2adb336b172a0c67d71bb24ed8ef264a9 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 25 Feb 2022 19:39:42 +0800 Subject: [PATCH 11/81] remove mysql for test --- internal/push/logic/init.go | 12 +++ internal/push/logic/push_to_client.go | 126 +++++++++++++------------- pkg/statistics/statistics.go | 25 +++-- 3 files changed, 92 insertions(+), 71 deletions(-) diff --git a/internal/push/logic/init.go b/internal/push/logic/init.go index b8941cc6f..3581a361e 100644 --- a/internal/push/logic/init.go +++ b/internal/push/logic/init.go @@ -11,6 +11,7 @@ import ( "Open_IM/pkg/common/constant" "Open_IM/pkg/common/kafka" "Open_IM/pkg/common/log" + "time" ) var ( @@ -33,4 +34,15 @@ func init() { func Run() { go rpcServer.run() go pushCh.pushConsumerGroup.RegisterHandleAndConsumer(&pushCh) + go stat() +} +func stat() { + t := time.NewTicker(time.Second * 10) + defer t.Stop() + for { + select { + case <-t.C: + } + log.Debug("", "10 second handle msg to mongo is ") + } } diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go index 41c943c4b..fa147e762 100644 --- a/internal/push/logic/push_to_client.go +++ b/internal/push/logic/push_to_client.go @@ -7,16 +7,12 @@ package logic import ( - push "Open_IM/internal/push/jpush" "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" "Open_IM/pkg/grpc-etcdv3/getcdv3" pbPush "Open_IM/pkg/proto/push" pbRelay "Open_IM/pkg/proto/relay" - "Open_IM/pkg/utils" "context" - "encoding/json" "strings" ) @@ -34,7 +30,7 @@ type AtContent struct { func MsgToUser(pushMsg *pbPush.PushMsgReq) { var wsResult []*pbRelay.SingleMsgToUser - isOfflinePush := utils.GetSwitchFromOptions(pushMsg.MsgData.Options, constant.IsOfflinePush) + //isOfflinePush := utils.GetSwitchFromOptions(pushMsg.MsgData.Options, constant.IsOfflinePush) log.InfoByKv("Get msg from msg_transfer And push msg", pushMsg.OperationID, "PushData", pushMsg.String()) grpcCons := getcdv3.GetConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOnlineMessageRelayName) //Online push message @@ -51,66 +47,66 @@ func MsgToUser(pushMsg *pbPush.PushMsgReq) { } } log.InfoByKv("push_result", pushMsg.OperationID, "result", wsResult, "sendData", pushMsg.MsgData) - if isOfflinePush && pushMsg.PushToUserID != pushMsg.MsgData.SendID { - for _, v := range wsResult { - if v.ResultCode == 0 { - continue - } - //supported terminal - for _, t := range pushTerminal { - if v.RecvPlatFormID == t { - //Use offline push messaging - var UIDList []string - UIDList = append(UIDList, v.RecvID) - customContent := OpenIMContent{ - SessionType: int(pushMsg.MsgData.SessionType), - From: pushMsg.MsgData.SendID, - To: pushMsg.MsgData.RecvID, - Seq: pushMsg.MsgData.Seq, - } - bCustomContent, _ := json.Marshal(customContent) - jsonCustomContent := string(bCustomContent) - var content string - if pushMsg.MsgData.OfflinePushInfo != nil { - content = pushMsg.MsgData.OfflinePushInfo.Title - - } else { - switch pushMsg.MsgData.ContentType { - case constant.Text: - content = constant.ContentType2PushContent[constant.Text] - case constant.Picture: - content = constant.ContentType2PushContent[constant.Picture] - case constant.Voice: - content = constant.ContentType2PushContent[constant.Voice] - case constant.Video: - content = constant.ContentType2PushContent[constant.Video] - case constant.File: - content = constant.ContentType2PushContent[constant.File] - case constant.AtText: - a := AtContent{} - _ = utils.JsonStringToStruct(string(pushMsg.MsgData.Content), &a) - if utils.IsContain(v.RecvID, a.AtUserList) { - content = constant.ContentType2PushContent[constant.AtText] + constant.ContentType2PushContent[constant.Common] - } else { - content = constant.ContentType2PushContent[constant.GroupMsg] - } - default: - content = constant.ContentType2PushContent[constant.Common] - } - } - - pushResult, err := push.JGAccountListPush(UIDList, content, jsonCustomContent, constant.PlatformIDToName(t)) - if err != nil { - log.NewError(pushMsg.OperationID, "offline push error", pushMsg.String(), err.Error(), constant.PlatformIDToName(t)) - } else { - log.NewDebug(pushMsg.OperationID, "offline push return result is ", string(pushResult), pushMsg.MsgData, constant.PlatformIDToName(t)) - } - - } - } - } - - } + //if isOfflinePush && pushMsg.PushToUserID != pushMsg.MsgData.SendID { + // for _, v := range wsResult { + // if v.ResultCode == 0 { + // continue + // } + // //supported terminal + // for _, t := range pushTerminal { + // if v.RecvPlatFormID == t { + // //Use offline push messaging + // var UIDList []string + // UIDList = append(UIDList, v.RecvID) + // customContent := OpenIMContent{ + // SessionType: int(pushMsg.MsgData.SessionType), + // From: pushMsg.MsgData.SendID, + // To: pushMsg.MsgData.RecvID, + // Seq: pushMsg.MsgData.Seq, + // } + // bCustomContent, _ := json.Marshal(customContent) + // jsonCustomContent := string(bCustomContent) + // var content string + // if pushMsg.MsgData.OfflinePushInfo != nil { + // content = pushMsg.MsgData.OfflinePushInfo.Title + // + // } else { + // switch pushMsg.MsgData.ContentType { + // case constant.Text: + // content = constant.ContentType2PushContent[constant.Text] + // case constant.Picture: + // content = constant.ContentType2PushContent[constant.Picture] + // case constant.Voice: + // content = constant.ContentType2PushContent[constant.Voice] + // case constant.Video: + // content = constant.ContentType2PushContent[constant.Video] + // case constant.File: + // content = constant.ContentType2PushContent[constant.File] + // case constant.AtText: + // a := AtContent{} + // _ = utils.JsonStringToStruct(string(pushMsg.MsgData.Content), &a) + // if utils.IsContain(v.RecvID, a.AtUserList) { + // content = constant.ContentType2PushContent[constant.AtText] + constant.ContentType2PushContent[constant.Common] + // } else { + // content = constant.ContentType2PushContent[constant.GroupMsg] + // } + // default: + // content = constant.ContentType2PushContent[constant.Common] + // } + // } + // + // pushResult, err := push.JGAccountListPush(UIDList, content, jsonCustomContent, constant.PlatformIDToName(t)) + // if err != nil { + // log.NewError(pushMsg.OperationID, "offline push error", pushMsg.String(), err.Error(), constant.PlatformIDToName(t)) + // } else { + // log.NewDebug(pushMsg.OperationID, "offline push return result is ", string(pushResult), pushMsg.MsgData, constant.PlatformIDToName(t)) + // } + // + // } + // } + // } + // + //} } //func SendMsgByWS(m *pbChat.WSToMsgSvrChatMsg) { diff --git a/pkg/statistics/statistics.go b/pkg/statistics/statistics.go index 51ff4c871..eb018fbf0 100644 --- a/pkg/statistics/statistics.go +++ b/pkg/statistics/statistics.go @@ -1,20 +1,33 @@ package statistics -import "time" +import ( + "Open_IM/pkg/common/log" + "time" +) type Statistics struct { - Count *uint64 - Dr int + Count *uint64 + ModuleName string + PrintArgs string + SleepTime int } func (s *Statistics) output() { + t := time.NewTicker(time.Duration(s.SleepTime) * time.Second) + defer t.Stop() + var sum uint64 for { - time.Sleep(time.Duration(s.Dr) * time.Second) + sum = *s.Count + select { + case <-t.C: + } + log.Debug(s.ModuleName, s.PrintArgs, *s.Count-sum) } } -func NewStatistics(count *uint64, dr int) *Statistics { - p := &Statistics{Count: count} +func NewStatistics(count *uint64, moduleName, printArgs string, sleepTime int) *Statistics { + p := &Statistics{Count: count, ModuleName: moduleName, SleepTime: sleepTime, PrintArgs: printArgs} go p.output() + return p } From 2775d9b78a7ef68d32ed75d9384ab848c48e1b6e Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 25 Feb 2022 19:49:38 +0800 Subject: [PATCH 12/81] test --- internal/msg_gateway/gate/init.go | 4 ++++ internal/msg_gateway/gate/logic.go | 1 + internal/push/logic/init.go | 16 ++++------------ internal/push/logic/push_to_client.go | 1 + 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/internal/msg_gateway/gate/init.go b/internal/msg_gateway/gate/init.go index 03f82f3ad..47d1dcedb 100644 --- a/internal/msg_gateway/gate/init.go +++ b/internal/msg_gateway/gate/init.go @@ -3,6 +3,8 @@ package gate import ( "Open_IM/pkg/common/config" "Open_IM/pkg/common/log" + "Open_IM/pkg/statistics" + "fmt" "github.com/go-playground/validator/v10" "sync" ) @@ -12,6 +14,7 @@ var ( validate *validator.Validate ws WServer rpcSvr RPCServer + count uint64 ) func Init(rpcPort, wsPort int) { @@ -19,6 +22,7 @@ func Init(rpcPort, wsPort int) { log.NewPrivateLog(config.Config.ModuleName.LongConnSvrName) rwLock = new(sync.RWMutex) validate = validator.New() + statistics.NewStatistics(&count, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second recv to msg_gateway count", count), 10) ws.onInit(wsPort) rpcSvr.onInit(rpcPort) } diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index d1756093c..2aa19f609 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -142,6 +142,7 @@ func (ws *WServer) pullMsgBySeqListResp(conn *UserConn, m *Req, pb *sdk_ws.PullM } func (ws *WServer) sendMsgReq(conn *UserConn, m *Req) { + count++ log.NewInfo(m.OperationID, "Ws call success to sendMsgReq start", m.MsgIncr, m.ReqIdentifier, m.SendID) nReply := new(pbChat.SendMsgResp) isPass, errCode, errMsg, pData := ws.argsValidate(m, constant.WSSendMsg) diff --git a/internal/push/logic/init.go b/internal/push/logic/init.go index 3581a361e..253aea2b2 100644 --- a/internal/push/logic/init.go +++ b/internal/push/logic/init.go @@ -11,7 +11,8 @@ import ( "Open_IM/pkg/common/constant" "Open_IM/pkg/common/kafka" "Open_IM/pkg/common/log" - "time" + "Open_IM/pkg/statistics" + "fmt" ) var ( @@ -19,6 +20,7 @@ var ( pushCh PushConsumerHandler pushTerminal []int32 producer *kafka.Producer + count uint64 ) func Init(rpcPort int) { @@ -29,20 +31,10 @@ func Init(rpcPort int) { } func init() { producer = kafka.NewKafkaProducer(config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.Ws2mschat.Topic) + statistics.NewStatistics(&count, config.Config.ModuleName.PushName, fmt.Sprintf("%d second push to msg_gateway count", count), 10) } func Run() { go rpcServer.run() go pushCh.pushConsumerGroup.RegisterHandleAndConsumer(&pushCh) - go stat() -} -func stat() { - t := time.NewTicker(time.Second * 10) - defer t.Stop() - for { - select { - case <-t.C: - } - log.Debug("", "10 second handle msg to mongo is ") - } } diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go index fa147e762..b6a624f91 100644 --- a/internal/push/logic/push_to_client.go +++ b/internal/push/logic/push_to_client.go @@ -47,6 +47,7 @@ func MsgToUser(pushMsg *pbPush.PushMsgReq) { } } log.InfoByKv("push_result", pushMsg.OperationID, "result", wsResult, "sendData", pushMsg.MsgData) + count++ //if isOfflinePush && pushMsg.PushToUserID != pushMsg.MsgData.SendID { // for _, v := range wsResult { // if v.ResultCode == 0 { From 739096a9c0673124d474d5e3422a2b8271c5db94 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Fri, 25 Feb 2022 19:50:18 +0800 Subject: [PATCH 13/81] statistics performance --- internal/msg_transfer/logic/history_msg_handler.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/internal/msg_transfer/logic/history_msg_handler.go b/internal/msg_transfer/logic/history_msg_handler.go index b78695c11..f0ba102cd 100644 --- a/internal/msg_transfer/logic/history_msg_handler.go +++ b/internal/msg_transfer/logic/history_msg_handler.go @@ -8,6 +8,7 @@ import ( "Open_IM/pkg/grpc-etcdv3/getcdv3" pbMsg "Open_IM/pkg/proto/chat" pbPush "Open_IM/pkg/proto/push" + "Open_IM/pkg/statistics" "Open_IM/pkg/utils" "context" "github.com/Shopify/sarama" @@ -20,9 +21,14 @@ type fcb func(msg []byte, msgKey string) type HistoryConsumerHandler struct { msgHandle map[string]fcb historyConsumerGroup *kfk.MConsumerGroup + singleMsgCount uint64 + groupMsgCount uint64 } func (mc *HistoryConsumerHandler) Init() { + statistics.NewStatistics(&mc.singleMsgCount, config.Config.ModuleName.MsgTransferName, "singleMsgCount insert to mongo ", 10) + statistics.NewStatistics(&mc.singleMsgCount, config.Config.ModuleName.MsgTransferName, "groupMsgCount insert to mongo ", 10) + mc.msgHandle = make(map[string]fcb) mc.msgHandle[config.Config.Kafka.Ws2mschat.Topic] = mc.handleChatWs2Mongo mc.historyConsumerGroup = kfk.NewMConsumerGroup(&kfk.MConsumerGroupConfig{KafkaVersion: sarama.V0_10_2_0, @@ -55,6 +61,7 @@ func (mc *HistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey string) log.NewError(operationID, "single data insert to mongo err", err.Error(), msgFromMQ.String()) return } + mc.singleMsgCount++ log.NewDebug(msgFromMQ.OperationID, "sendMessageToPush cost time ", utils.GetCurrentTimestampByNano()-time) } if !isSenderSync && msgKey == msgFromMQ.MsgData.SendID { @@ -70,6 +77,7 @@ func (mc *HistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey string) log.NewError(operationID, "group data insert to mongo err", msgFromMQ.String(), msgFromMQ.MsgData.RecvID, err.Error()) return } + mc.groupMsgCount++ } go sendMessageToPush(&msgFromMQ, msgFromMQ.MsgData.RecvID) default: From e1f58f07fe9146d58584e753c23e2f34e0bb7e26 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Fri, 25 Feb 2022 19:55:58 +0800 Subject: [PATCH 14/81] 2.0.1 --- cmd/Open-IM-SDK-Core | 2 +- pkg/statistics/statistics.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 992f76df0..1c6c7af53 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 992f76df0ee500a0377523b0780d3a85f2275755 +Subproject commit 1c6c7af5393b3e9eefbaf16b673519ca863a6c2c diff --git a/pkg/statistics/statistics.go b/pkg/statistics/statistics.go index eb018fbf0..bda8ded85 100644 --- a/pkg/statistics/statistics.go +++ b/pkg/statistics/statistics.go @@ -21,7 +21,7 @@ func (s *Statistics) output() { select { case <-t.C: } - log.Debug(s.ModuleName, s.PrintArgs, *s.Count-sum) + log.NewWarn(s.ModuleName, s.PrintArgs, *s.Count-sum) } } From ca18958669b98794686e36673a230fb00bf35139 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 25 Feb 2022 19:56:00 +0800 Subject: [PATCH 15/81] test config --- config/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index 6e3eaeea6..7d025c863 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -132,7 +132,7 @@ log: storageLocation: ../logs/ rotationTime: 24 remainRotationCount: 5 #日志数量 - remainLogLevel: 6 #日志级别 6表示全都打印,测试阶段建议设置为6 + remainLogLevel: 4 #日志级别 6表示全都打印,测试阶段建议设置为6 elasticSearchSwitch: false elasticSearchAddr: [ 127.0.0.1:9201 ] elasticSearchUser: "" From 00a52475de85eb39cfee7ae58aac8053027165e3 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Fri, 25 Feb 2022 20:01:02 +0800 Subject: [PATCH 16/81] statistics --- internal/msg_transfer/logic/history_msg_handler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/msg_transfer/logic/history_msg_handler.go b/internal/msg_transfer/logic/history_msg_handler.go index f0ba102cd..294b5ed70 100644 --- a/internal/msg_transfer/logic/history_msg_handler.go +++ b/internal/msg_transfer/logic/history_msg_handler.go @@ -27,7 +27,7 @@ type HistoryConsumerHandler struct { func (mc *HistoryConsumerHandler) Init() { statistics.NewStatistics(&mc.singleMsgCount, config.Config.ModuleName.MsgTransferName, "singleMsgCount insert to mongo ", 10) - statistics.NewStatistics(&mc.singleMsgCount, config.Config.ModuleName.MsgTransferName, "groupMsgCount insert to mongo ", 10) + statistics.NewStatistics(&mc.groupMsgCount, config.Config.ModuleName.MsgTransferName, "groupMsgCount insert to mongo ", 10) mc.msgHandle = make(map[string]fcb) mc.msgHandle[config.Config.Kafka.Ws2mschat.Topic] = mc.handleChatWs2Mongo From 05fbbfcf39c9f03bd285c8105bdb1296bd2d9693 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 28 Feb 2022 15:28:13 +0800 Subject: [PATCH 17/81] grpc-etcd log --- pkg/grpc-etcdv3/getcdv3/register.go | 12 +++++++----- pkg/grpc-etcdv3/getcdv3/resolver.go | 19 ++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/pkg/grpc-etcdv3/getcdv3/register.go b/pkg/grpc-etcdv3/getcdv3/register.go index 4fd2cd5a7..d1c7957bf 100644 --- a/pkg/grpc-etcdv3/getcdv3/register.go +++ b/pkg/grpc-etcdv3/getcdv3/register.go @@ -1,6 +1,7 @@ package getcdv3 import ( + "Open_IM/pkg/common/log" "context" "fmt" "go.etcd.io/etcd/clientv3" @@ -39,9 +40,9 @@ func RegisterEtcd4Unique(schema, etcdAddr, myHost string, myPort int, serviceNam func RegisterEtcd(schema, etcdAddr, myHost string, myPort int, serviceName string, ttl int) error { cli, err := clientv3.New(clientv3.Config{ Endpoints: strings.Split(etcdAddr, ","), DialTimeout: 5 * time.Second}) - fmt.Println("RegisterEtcd") + + log.Info("", "RegisterEtcd, ", schema, etcdAddr, myHost, myPort, serviceName, ttl) if err != nil { - // return fmt.Errorf("grpclb: create clientv3 client failed: %v", err) return fmt.Errorf("create etcd clientv3 client failed, errmsg:%v, etcd addr:%s", err, etcdAddr) } @@ -66,15 +67,16 @@ func RegisterEtcd(schema, etcdAddr, myHost string, myPort int, serviceName strin if err != nil { return fmt.Errorf("keepalive failed, errmsg:%v, lease id:%d", err, resp.ID) } - fmt.Println("RegisterEtcd ok") + log.Info("", "RegisterEtcd ok ") + go func() { for { select { case v, ok := <-kresp: if ok == true { - // fmt.Println(" kresp ok ", v) + log.Debug("", "KeepAlive kresp ok", v, schema, etcdAddr, myHost, myPort, serviceName, ttl) } else { - fmt.Println(" kresp failed ", v) + log.Error("", "KeepAlive kresp failed", schema, etcdAddr, myHost, myPort, serviceName, ttl) } } } diff --git a/pkg/grpc-etcdv3/getcdv3/resolver.go b/pkg/grpc-etcdv3/getcdv3/resolver.go index aa41f86c4..45f47a717 100644 --- a/pkg/grpc-etcdv3/getcdv3/resolver.go +++ b/pkg/grpc-etcdv3/getcdv3/resolver.go @@ -1,6 +1,7 @@ package getcdv3 import ( + "Open_IM/pkg/common/log" "context" "fmt" "go.etcd.io/etcd/clientv3" @@ -102,7 +103,7 @@ func (r *Resolver) Build(target resolver.Target, cc resolver.ClientConn, opts re if err == nil { var addrList []resolver.Address for i := range resp.Kvs { - fmt.Println("init addr: ", string(resp.Kvs[i].Value)) + log.Debug("", "init addr: ", string(resp.Kvs[i].Value)) addrList = append(addrList, resolver.Address{Addr: string(resp.Kvs[i].Value)}) } r.cc.UpdateState(resolver.State{Addresses: addrList}) @@ -148,27 +149,27 @@ func (r *Resolver) watch(prefix string, addrList []resolver.Address) { if !exists(addrList, string(ev.Kv.Value)) { flag = 1 addrList = append(addrList, resolver.Address{Addr: string(ev.Kv.Value)}) - fmt.Println("after add, new list: ", addrList) + log.Debug("", "after add, new list: ", addrList) } case mvccpb.DELETE: - fmt.Println("remove addr key: ", string(ev.Kv.Key), "value:", string(ev.Kv.Value)) + log.Debug("remove addr key: ", string(ev.Kv.Key), "value:", string(ev.Kv.Value)) i := strings.LastIndexAny(string(ev.Kv.Key), "/") if i < 0 { return } t := string(ev.Kv.Key)[i+1:] - fmt.Println("remove addr key: ", string(ev.Kv.Key), "value:", string(ev.Kv.Value), "addr:", t) + log.Debug("remove addr key: ", string(ev.Kv.Key), "value:", string(ev.Kv.Value), "addr:", t) if s, ok := remove(addrList, t); ok { flag = 1 addrList = s - fmt.Println("after remove, new list: ", addrList) + log.Debug("after remove, new list: ", addrList) } } } if flag == 1 { r.cc.UpdateState(resolver.State{Addresses: addrList}) - fmt.Println("update: ", addrList) + log.Debug("update: ", addrList) } } } @@ -176,7 +177,7 @@ func (r *Resolver) watch(prefix string, addrList []resolver.Address) { func GetConn4Unique(schema, etcdaddr, servicename string) []*grpc.ClientConn { gEtcdCli, err := clientv3.New(clientv3.Config{Endpoints: strings.Split(etcdaddr, ",")}) if err != nil { - fmt.Println("eeeeeeeeeeeee", err.Error()) + log.Error("clientv3.New failed", err.Error()) return nil } @@ -200,7 +201,7 @@ func GetConn4Unique(schema, etcdaddr, servicename string) []*grpc.ClientConn { } } else { gEtcdCli.Close() - fmt.Println("rrrrrrrrrrr", err.Error()) + log.Error("gEtcdCli.Get failed", err.Error()) return nil } gEtcdCli.Close() @@ -236,7 +237,7 @@ func GetConnPool(schema, etcdaddr, servicename string) (*ClientConn, error) { ctx, _ := context.WithDeadline(context.Background(), time.Now().Add(1000*time.Millisecond)) c, err := p.Get(ctx) - fmt.Println(err) + log.Info("", "Get ", err) return c, err } From b30da3eea4191d5a61d3546608e0810e55c82943 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Mon, 28 Feb 2022 17:03:29 +0800 Subject: [PATCH 18/81] database judge modify --- internal/push/logic/init.go | 2 +- pkg/common/db/mysql_model/im_mysql_model/friend_model.go | 2 +- .../db/mysql_model/im_mysql_model/friend_request_model.go | 2 +- pkg/common/db/mysql_model/im_mysql_model/user_model.go | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/push/logic/init.go b/internal/push/logic/init.go index 253aea2b2..02d96fda4 100644 --- a/internal/push/logic/init.go +++ b/internal/push/logic/init.go @@ -31,7 +31,7 @@ func Init(rpcPort int) { } func init() { producer = kafka.NewKafkaProducer(config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.Ws2mschat.Topic) - statistics.NewStatistics(&count, config.Config.ModuleName.PushName, fmt.Sprintf("%d second push to msg_gateway count", count), 10) + statistics.NewStatistics(&count, config.Config.ModuleName.PushName, fmt.Sprintf("%d second push to msg_gateway count", 10), 10) } func Run() { diff --git a/pkg/common/db/mysql_model/im_mysql_model/friend_model.go b/pkg/common/db/mysql_model/im_mysql_model/friend_model.go index 45650357b..700082353 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/friend_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/friend_model.go @@ -26,7 +26,7 @@ func GetFriendRelationshipFromFriend(OwnerUserID, FriendUserID string) (*db.Frie return nil, err } var friend db.Friend - err = dbConn.Table("friends").Where("owner_user_id=? and friend_user_id=?", OwnerUserID, FriendUserID).Find(&friend).Error + err = dbConn.Table("friends").Where("owner_user_id=? and friend_user_id=?", OwnerUserID, FriendUserID).Take(&friend).Error if err != nil { return nil, err } diff --git a/pkg/common/db/mysql_model/im_mysql_model/friend_request_model.go b/pkg/common/db/mysql_model/im_mysql_model/friend_request_model.go index 609be8687..171a6aedf 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/friend_request_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/friend_request_model.go @@ -53,7 +53,7 @@ func GetFriendApplicationByBothUserID(FromUserID, ToUserID string) (*db.FriendRe return nil, err } var friendRequest db.FriendRequest - err = dbConn.Table("friend_requests").Where("from_user_id=? and to_user_id=?", FromUserID, ToUserID).Find(&friendRequest).Error + err = dbConn.Table("friend_requests").Where("from_user_id=? and to_user_id=?", FromUserID, ToUserID).Take(&friendRequest).Error if err != nil { return nil, err } diff --git a/pkg/common/db/mysql_model/im_mysql_model/user_model.go b/pkg/common/db/mysql_model/im_mysql_model/user_model.go index de5045855..618e0727d 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/user_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/user_model.go @@ -78,7 +78,7 @@ func GetUserByUserID(userID string) (*db.User, error) { return nil, err } var user db.User - err = dbConn.Table("users").Where("user_id=?", userID).First(&user).Error + err = dbConn.Table("users").Where("user_id=?", userID).Take(&user).Error if err != nil { return nil, err } From ed65ad842f3d201ea968b367e5bf58454b16f277 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 28 Feb 2022 17:20:40 +0800 Subject: [PATCH 19/81] Replace find with take --- .../im_mysql_model/group_member_model.go | 7 +++++-- .../mysql_model/im_mysql_model/group_model.go | 19 ++++++++----------- .../im_mysql_model/group_request_model.go | 3 +-- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go b/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go index 4dafa30a6..63f12c115 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go @@ -4,6 +4,7 @@ import ( "Open_IM/pkg/common/constant" "Open_IM/pkg/common/db" "Open_IM/pkg/utils" + "errors" "fmt" "time" ) @@ -43,6 +44,7 @@ func GetGroupMemberListByUserID(userID string) ([]db.GroupMember, error) { } var groupMemberList []db.GroupMember err = dbConn.Table("group_members").Where("user_id=?", userID).Find(&groupMemberList).Error + //err = dbConn.Table("group_members").Where("user_id=?", userID).Take(&groupMemberList).Error if err != nil { return nil, err } @@ -82,7 +84,7 @@ func GetGroupMemberInfoByGroupIDAndUserID(groupID, userID string) (*db.GroupMemb return nil, err } var groupMember db.GroupMember - err = dbConn.Table("group_members").Where("group_id=? and user_id=? ", groupID, userID).Limit(1).Find(&groupMember).Error + err = dbConn.Table("group_members").Where("group_id=? and user_id=? ", groupID, userID).Limit(1).Take(&groupMember).Error if err != nil { return nil, err } @@ -149,7 +151,8 @@ func GetGroupOwnerInfoByGroupID(groupID string) (*db.GroupMember, error) { return &v, nil } } - return nil, nil + + return nil, utils.Wrap(errors.New("no owner"), "") } func IsExistGroupMember(groupID, userID string) bool { diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_model.go b/pkg/common/db/mysql_model/im_mysql_model/group_model.go index a9fe13236..587e3672e 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_model.go @@ -45,7 +45,7 @@ func GetGroupInfoByGroupID(groupId string) (*db.Group, error) { return nil, utils.Wrap(err, "") } var groupInfo db.Group - err = dbConn.Table("groups").Where("group_id=?", groupId).Find(&groupInfo).Error + err = dbConn.Table("groups").Where("group_id=?", groupId).Take(&groupInfo).Error if err != nil { return nil, err } @@ -86,11 +86,10 @@ func GetGroups(pageNumber, showNumber int) ([]db.Group, error) { return groups, nil } - func OperateGroupStatus(groupId string, groupStatus int32) error { group := db.Group{ GroupID: groupId, - Status: groupStatus, + Status: groupStatus, } if err := SetGroupInfo(group); err != nil { return err @@ -98,7 +97,6 @@ func OperateGroupStatus(groupId string, groupStatus int32) error { return nil } - func DeleteGroup(groupId string) error { dbConn, err := db.DB.MysqlDB.DefaultGormDB() if err != nil { @@ -129,15 +127,14 @@ func OperateGroupRole(userId, groupId string, roleLevel int32) (string, string, updateInfo := db.GroupMember{ RoleLevel: roleLevel, } - groupMaster := db.GroupMember{ - } + groupMaster := db.GroupMember{} switch roleLevel { case constant.GroupOwner: err = dbConn.Transaction(func(tx *gorm.DB) error { result := dbConn.Table("group_members").Where("group_id = ? and role_level = ?", groupId, constant.GroupOwner).First(&groupMaster).Update(&db.GroupMember{ RoleLevel: constant.GroupOrdinaryUsers, }) - if result.Error != nil { + if result.Error != nil { return result.Error } if result.RowsAffected == 0 { @@ -145,7 +142,7 @@ func OperateGroupRole(userId, groupId string, roleLevel int32) (string, string, } result = dbConn.Table("group_members").First(&groupMember).Update(updateInfo) - if result.Error != nil { + if result.Error != nil { return result.Error } if result.RowsAffected == 0 { @@ -161,7 +158,7 @@ func OperateGroupRole(userId, groupId string, roleLevel int32) (string, string, return result.Error } if result.RowsAffected == 0 { - return errors.New(fmt.Sprintf("user %s not exist in group %s or already operate", userId, groupId)) + return errors.New(fmt.Sprintf("user %s not exist in group %s or already operate", userId, groupId)) } if groupMaster.UserID == userId { return errors.New(fmt.Sprintf("user %s is master of %s, cant set to ordinary user", userId, groupId)) @@ -171,7 +168,7 @@ func OperateGroupRole(userId, groupId string, roleLevel int32) (string, string, return result.Error } if result.RowsAffected == 0 { - return errors.New(fmt.Sprintf("user %s not exist in group %s or already operate", userId, groupId)) + return errors.New(fmt.Sprintf("user %s not exist in group %s or already operate", userId, groupId)) } } return nil @@ -219,4 +216,4 @@ func GetGroupMaster(groupId string) (db.GroupMember, error) { return groupMember, err } return groupMember, nil -} \ No newline at end of file +} diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go b/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go index 745ad0034..836f3f0bf 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go @@ -63,7 +63,7 @@ func GetGroupRequestByGroupIDAndUserID(groupID, userID string) (*db.GroupRequest return nil, err } var groupRequest db.GroupRequest - err = dbConn.Table("group_requests").Where("user_id=? and group_id=?", userID, groupID).Find(&groupRequest).Error + err = dbConn.Table("group_requests").Where("user_id=? and group_id=?", userID, groupID).Take(&groupRequest).Error if err != nil { return nil, err } @@ -128,7 +128,6 @@ func GetUserReqGroupByUserID(userID string) ([]db.GroupRequest, error) { return groupRequestList, err } - // //func GroupApplicationResponse(pb *group.GroupApplicationResponseReq) (*group.CommonResp, error) { // From 04f8a7247d51273b17a9e9350ba4c29d22a5eac3 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 28 Feb 2022 17:28:00 +0800 Subject: [PATCH 20/81] replace find with take --- .../db/mysql_model/im_mysql_model/user_model.go | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/pkg/common/db/mysql_model/im_mysql_model/user_model.go b/pkg/common/db/mysql_model/im_mysql_model/user_model.go index 618e0727d..7492d6a38 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/user_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/user_model.go @@ -51,18 +51,6 @@ func UserRegister(user db.User) error { return nil } -type User struct { - UserID string `gorm:"column:user_id;primaryKey;"` - Nickname string `gorm:"column:name"` - FaceUrl string `gorm:"column:icon"` - Gender int32 `gorm:"column:gender"` - PhoneNumber string `gorm:"column:phone_number"` - Birth string `gorm:"column:birth"` - Email string `gorm:"column:email"` - Ex string `gorm:"column:ex"` - CreateTime time.Time `gorm:"column:create_time"` -} - func DeleteUser(userID string) (i int64) { dbConn, err := db.DB.MysqlDB.DefaultGormDB() if err != nil { From 67d7ee275194820f2231bff819264501d9597ec2 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 28 Feb 2022 17:47:53 +0800 Subject: [PATCH 21/81] fix bug --- internal/api/third/minio_init.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index 4f54996ba..5aae5d4e8 100644 --- a/internal/api/third/minio_init.go +++ b/internal/api/third/minio_init.go @@ -34,7 +34,7 @@ func init() { if err == nil && exists { log.NewInfo("", utils.GetSelfFuncName(), "We already own %s\n", config.Config.Credential.Minio.Bucket) } else { - log.NewError("", utils.GetSelfFuncName(), "create bucket failed and bucket not exists", err.Error()) + log.NewError("", utils.GetSelfFuncName(), "create bucket failed and bucket not exists") return } } From f01a6e82dca2d40ae236d6812fb83f5a59d438ee Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 28 Feb 2022 17:52:13 +0800 Subject: [PATCH 22/81] fix minio bug --- internal/api/third/minio_init.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index 5aae5d4e8..d073524f3 100644 --- a/internal/api/third/minio_init.go +++ b/internal/api/third/minio_init.go @@ -30,10 +30,14 @@ func init() { } err = minioClient.MakeBucket(context.Background(), config.Config.Credential.Minio.Bucket, opt) if err != nil { + log.NewInfo("", utils.GetSelfFuncName(), err.Error()) exists, err := minioClient.BucketExists(context.Background(), config.Config.Credential.Minio.Bucket) if err == nil && exists { log.NewInfo("", utils.GetSelfFuncName(), "We already own %s\n", config.Config.Credential.Minio.Bucket) } else { + if err != nil { + log.NewError("", utils.GetSelfFuncName(), err.Error()) + } log.NewError("", utils.GetSelfFuncName(), "create bucket failed and bucket not exists") return } From 0bed7ee669da994060c7219b765138d191656205 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 28 Feb 2022 17:57:03 +0800 Subject: [PATCH 23/81] merge code --- config/config.yaml | 38 ++++++-- .../api/third/minio_storage_credential.go | 18 ++-- internal/demo/register/reset_password.go | 4 +- internal/rpc/auth/callback.go | 1 + internal/rpc/friend/callback.go | 1 + internal/rpc/group/callback.go | 9 ++ internal/rpc/group/group.go | 9 +- internal/rpc/msg/callback.go | 94 +++++++++++++++++++ internal/rpc/msg/send_msg.go | 50 ++++++---- internal/rpc/user/callback.go | 1 + internal/utils/callback.go | 1 + pkg/call_back_struct/common.go | 16 ++++ pkg/call_back_struct/group.go | 9 ++ pkg/call_back_struct/message.go | 60 ++++++++++++ pkg/common/config/config.go | 20 +++- pkg/common/constant/constant.go | 10 ++ pkg/common/constant/error.go | 2 + pkg/common/http/http_client.go | 10 ++ pkg/common/log/logrus.go | 15 ++- pkg/proto/sdk_ws/ws.proto | 30 ++++++ 20 files changed, 341 insertions(+), 57 deletions(-) create mode 100644 internal/rpc/auth/callback.go create mode 100644 internal/rpc/friend/callback.go create mode 100644 internal/rpc/group/callback.go create mode 100644 internal/rpc/msg/callback.go create mode 100644 internal/rpc/user/callback.go create mode 100644 internal/utils/callback.go create mode 100644 pkg/call_back_struct/group.go diff --git a/config/config.yaml b/config/config.yaml index 7d025c863..da3264de7 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -8,7 +8,7 @@ etcd: etcdAddr: [ 127.0.0.1:2379 ] #单机部署时,默认即可 mysql: - dbMysqlAddress: [ 127.0.0.1:13306 ] #mysql地址 目前仅支持单机,默认即可 + dbMysqlAddress: [ 43.128.5.63:13306 ] #mysql地址 目前仅支持单机,默认即可 dbMysqlUserName: root #mysql用户名,建议修改 dbMysqlPassword: openIM # mysql密码,建议修改 dbMysqlDatabaseName: openIM_v2 #默认即可 @@ -19,7 +19,7 @@ mysql: dbMaxLifeTime: 120 mongo: - dbAddress: [ 127.0.0.1:37017 ] #redis地址 目前仅支持单机,默认即可 + dbAddress: [ 43.128.5.63:37017 ] #redis地址 目前仅支持单机,默认即可 dbDirect: false dbTimeout: 10 dbDatabase: openIM #mongo db 默认即可 @@ -30,7 +30,7 @@ mongo: dbRetainChatRecords: 3650 #mongo保存离线消息时间(天),根据需求修改 redis: - dbAddress: 127.0.0.1:16379 #redis地址 目前仅支持单机,默认即可 + dbAddress: 43.128.5.63:16379 #redis地址 目前仅支持单机,默认即可 dbMaxIdle: 128 dbMaxActive: 0 dbIdleTimeout: 120 @@ -178,13 +178,6 @@ tokenpolicy: # Token effective time day as a unit accessExpire: 3650 #token过期时间(天) 默认即可 -messagecallback: - callbackSwitch: false - callbackUrl: "http://www.xxx.com/msg/judge" - #TimeOut use second as unit - callbackTimeOut: 10 -messagejudge: - isJudgeFriend: true # c2c: # callbackBeforeSendMsg: # switch: false @@ -199,6 +192,31 @@ iospush: pushSound: "xxx" badgeCount: true +callback: + callbackUrl : "http://xxx.com" + # 开启关闭操作前后回调的配置 + callbackbeforeSendSingleMsg: + enable: true # 回调是否启用 + callbackTimeOut: 5 # 回调超时时间 + CallbackFailedContinue: true # 回调超时是否继续执行代码 + callbackAfterSendSingleMsg: + enable: true + callbackTimeOut: 5 + CallbackFailedContinue: true + callbackBeforeSendGroupMsg: + enable: true + callbackTimeOut: 5 + CallbackFailedContinue: true + callbackAfterSendGroupMsg: + enable: true + callbackTimeOut: 5 + CallbackFailedContinue: true + callbackWordFilter: + enable: true + callbackTimeOut: 5 + CallbackFailedContinue: true + + notification: groupCreated: conversation: diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index 4d5800e06..f34f64c94 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -5,6 +5,7 @@ import ( "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" + "Open_IM/pkg/common/token_verify" _ "Open_IM/pkg/common/token_verify" "Open_IM/pkg/utils" "github.com/gin-gonic/gin" @@ -23,12 +24,12 @@ func MinioStorageCredential(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } - //ok, _ := token_verify.GetUserIDFromToken(c.Request.Header.Get("token")) - //if !ok { - // log.NewError("", utils.GetSelfFuncName(), "GetUserIDFromToken false ", c.Request.Header.Get("token")) - // c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) - // return - //} + ok, _ := token_verify.GetUserIDFromToken(c.Request.Header.Get("token")) + if !ok { + log.NewError("", utils.GetSelfFuncName(), "GetUserIDFromToken false ", c.Request.Header.Get("token")) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + return + } var stsOpts cr.STSAssumeRoleOptions stsOpts.AccessKey = config.Config.Credential.Minio.AccessKeyID stsOpts.SecretKey = config.Config.Credential.Minio.SecretAccessKey @@ -45,11 +46,6 @@ func MinioStorageCredential(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } - if err != nil { - log.NewError("0", utils.GetSelfFuncName(), err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } resp.SessionToken = v.SessionToken resp.SecretAccessKey = v.SecretAccessKey resp.AccessKeyID = v.AccessKeyID diff --git a/internal/demo/register/reset_password.go b/internal/demo/register/reset_password.go index 0ff7115a0..b668f4f62 100644 --- a/internal/demo/register/reset_password.go +++ b/internal/demo/register/reset_password.go @@ -12,10 +12,10 @@ import ( ) type resetPasswordRequest struct { - VerificationCode string `json:"verificationCode"` + VerificationCode string `json:"verificationCode" binding:"required"` Email string `json:"email"` PhoneNumber string `json:"phoneNumber"` - NewPassword string `json:"newPassword"` + NewPassword string `json:"newPassword" binding:"required"` OperationID string `json:"operationID"` } diff --git a/internal/rpc/auth/callback.go b/internal/rpc/auth/callback.go new file mode 100644 index 000000000..8832b06d1 --- /dev/null +++ b/internal/rpc/auth/callback.go @@ -0,0 +1 @@ +package auth diff --git a/internal/rpc/friend/callback.go b/internal/rpc/friend/callback.go new file mode 100644 index 000000000..cf8ea69c8 --- /dev/null +++ b/internal/rpc/friend/callback.go @@ -0,0 +1 @@ +package friend diff --git a/internal/rpc/group/callback.go b/internal/rpc/group/callback.go new file mode 100644 index 000000000..8e0fcfb7b --- /dev/null +++ b/internal/rpc/group/callback.go @@ -0,0 +1,9 @@ +package group + +import ( + pbGroup "Open_IM/pkg/proto/group" +) + +func callbackBeforeCreateGroup(req *pbGroup.CreateGroupReq) (bool, error) { + return true, nil +} diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 40255d071..7d4b85094 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -76,7 +76,12 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR log.NewError(req.OperationID, "CheckAccess false ", req.OpUserID, req.OwnerUserID) return &pbGroup.CreateGroupResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil } - + canCreate, err := callbackBeforeCreateGroup(req) + if err != nil || !canCreate { + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "callbackBeforeCreateGroup failed", ) + } + } //Time stamp + MD5 to generate group chat id groupId := utils.Md5(strconv.FormatInt(time.Now().UnixNano(), 10)) //to group @@ -84,7 +89,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR utils.CopyStructFields(&groupInfo, req.GroupInfo) groupInfo.CreatorUserID = req.OpUserID groupInfo.GroupID = groupId - err := imdb.InsertIntoGroup(groupInfo) + err = imdb.InsertIntoGroup(groupInfo) if err != nil { log.NewError(req.OperationID, "InsertIntoGroup failed, ", err.Error(), groupInfo) return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, http.WrapError(constant.ErrDB) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go new file mode 100644 index 000000000..d55d9046e --- /dev/null +++ b/internal/rpc/msg/callback.go @@ -0,0 +1,94 @@ +package msg + +import ( + cbApi "Open_IM/pkg/call_back_struct" + "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/http" + "Open_IM/pkg/common/log" + pbChat "Open_IM/pkg/proto/chat" + "Open_IM/pkg/utils" +) + +func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err error) { + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) + if !config.Config.Callback.CallbackbeforeSendSingleMsg.Enable || msg.MsgData.ContentType != constant.Text { + return true, nil + } + req := cbApi.CallbackBeforeSendSingleMsgReq{CommonCallbackReq:cbApi.CommonCallbackReq{ + }} + resp := &cbApi.CallbackBeforeSendSingleMsgResp{CommonCallbackResp:cbApi.CommonCallbackResp{ + }} + utils.CopyStructFields(req, msg.MsgData) + if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackTimeOut); err != nil && !config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackFailedContinue{ + return false, err + } + if resp.ActionCode == constant.ActionForbidden { + return false, nil + } + return true, nil +} + + +func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) + if !config.Config.Callback.CallbackAfterSendSingleMsg.Enable || msg.MsgData.ContentType != constant.Text { + return nil + } + req := cbApi.CallbackAfterSendSingleMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{}} + resp := &cbApi.CallbackAfterSendSingleMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} + utils.CopyStructFields(req, msg.MsgData) + if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendSingleMsg.CallbackTimeOut); err != nil && config.Config.Callback.CallbackAfterSendSingleMsg.CallbackFailedContinue{ + return err + } + return nil +} + + +func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error) { + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) + if !config.Config.Callback.CallbackBeforeSendGroupMsg.Enable || msg.MsgData.ContentType != constant.Text { + return true, nil + } + req := cbApi.CallbackBeforeSendSingleMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{}} + resp := &cbApi.CallbackBeforeSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} + utils.CopyStructFields(req, msg.MsgData) + if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackTimeOut); err != nil && !config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackFailedContinue{ + return false, nil + } + if resp.ActionCode == constant.ActionForbidden { + return false, nil + } + return true, nil +} + +func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) + if !config.Config.Callback.CallbackAfterSendGroupMsg.Enable || msg.MsgData.ContentType != constant.Text { + return nil + } + return nil +} + + +func callBackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) + if !config.Config.Callback.CallbackWordFilter.Enable || msg.MsgData.ContentType != constant.Text { + return true, nil + } + req := cbApi.CallBackWordFilterReq{ + CommonCallbackReq: cbApi.CommonCallbackReq{}, + } + resp := cbApi.CallBackWordFilterResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} + utils.CopyStructFields(&req, msg.MsgData) + if err := http.PostReturn(msg.OperationID, req, &resp, config.Config.Callback.CallbackWordFilter.CallbackTimeOut); err != nil { + return false, err + } + msg.MsgData.Content = resp.Content + return true, nil +} + + + + + diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index a57a6e892..390f151f9 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -4,7 +4,6 @@ import ( "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" "Open_IM/pkg/common/db" - http2 "Open_IM/pkg/common/http" "Open_IM/pkg/common/log" "Open_IM/pkg/grpc-etcdv3/getcdv3" pbChat "Open_IM/pkg/proto/chat" @@ -12,11 +11,9 @@ import ( sdk_ws "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" - "encoding/json" "github.com/garyburd/redigo/redis" "github.com/golang/protobuf/proto" "math/rand" - "net/http" "strconv" "strings" "time" @@ -127,25 +124,26 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S if !isHistory { mReq.IsOnlineOnly = true } - mResp := MsgCallBackResp{} - if config.Config.MessageCallBack.CallbackSwitch { - bMsg, err := http2.Post(config.Config.MessageCallBack.CallbackUrl, mReq, config.Config.MessageCallBack.CallBackTimeOut) - if err != nil { - log.ErrorByKv("callback to Business server err", pb.OperationID, "args", pb.String(), "err", err.Error()) - return returnMsg(&replay, pb, http.StatusInternalServerError, http.StatusText(http.StatusInternalServerError), "", 0) - } else if err = json.Unmarshal(bMsg, &mResp); err != nil { - log.ErrorByKv("ws json Unmarshal err", pb.OperationID, "args", pb.String(), "err", err.Error()) - return returnMsg(&replay, pb, 200, err.Error(), "", 0) - } else { - if mResp.ErrCode != 0 { - return returnMsg(&replay, pb, mResp.ResponseErrCode, mResp.ErrMsg, "", 0) - } else { - pb.MsgData.Content = []byte(mResp.ResponseResult.ModifiedMsg) - } - } + + // callback + canSend, err := callBackWordFilter(pb) + if err != nil { + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallbackBeforeSendMsg failed", err.Error(), pb.MsgData) + } + if !canSend { + log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callback result", canSend, "end rpc and return") + return returnMsg(&replay, pb, 201, "callback result stop rpc and return", "", 0) } switch pb.MsgData.SessionType { case constant.SingleChatType: + canSend, err := callbackBeforeSendSingleMsg(pb) + if err != nil { + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallBackAfterSendMsg failed", err.Error()) + } + if !canSend { + log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callback result", canSend, "end rpc and return") + return returnMsg(&replay, pb, 201, "callback result stop rpc and return", "", 0) + } isSend := modifyMessageByUserMessageReceiveOpt(pb.MsgData.RecvID, pb.MsgData.SendID, constant.SingleChatType, pb) if isSend { msgToMQ.MsgData = pb.MsgData @@ -163,8 +161,19 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) } } + if err := callbackAfterSendSingleMsg(pb); err != nil { + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallBackAfterSendMsg failed", err.Error()) + } return returnMsg(&replay, pb, 0, "", msgToMQ.MsgData.ServerMsgID, msgToMQ.MsgData.SendTime) case constant.GroupChatType: + canSend, err := callbackBeforeSendGroupMsg(pb) + if err != nil { + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallBackAfterSendMsg failed", err.Error()) + } + if !canSend { + log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callback result", canSend, "end rpc and return") + return returnMsg(&replay, pb, 201, "callback result stop rpc and return", "", 0) + } etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) client := pbGroup.NewGroupClient(etcdConn) req := &pbGroup.GetGroupAllMemberReq{ @@ -230,6 +239,9 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S } } + if err := callbackAfterSendGroupMsg(pb); err != nil { + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallBackAfterSendMsg failed", err.Error()) + } return returnMsg(&replay, pb, 0, "", msgToMQ.MsgData.ServerMsgID, msgToMQ.MsgData.SendTime) default: return returnMsg(&replay, pb, 203, "unkonwn sessionType", "", 0) diff --git a/internal/rpc/user/callback.go b/internal/rpc/user/callback.go new file mode 100644 index 000000000..a00006b65 --- /dev/null +++ b/internal/rpc/user/callback.go @@ -0,0 +1 @@ +package user diff --git a/internal/utils/callback.go b/internal/utils/callback.go new file mode 100644 index 000000000..d4b585bf7 --- /dev/null +++ b/internal/utils/callback.go @@ -0,0 +1 @@ +package utils diff --git a/pkg/call_back_struct/common.go b/pkg/call_back_struct/common.go index 90b77eda8..fa7e4d4d3 100644 --- a/pkg/call_back_struct/common.go +++ b/pkg/call_back_struct/common.go @@ -1 +1,17 @@ package call_back_struct + +type CommonCallbackReq struct { + CallbackCommand string `json:"callbackCommand"` + ServerMsgID string `json:"serverID"` + ClientID string `json:"clientID"` + OperationID string `json:"operationID"` +} + +type CommonCallbackResp struct { + ActionCode int `json:"actionCode"` + ErrCode int `json:"errCode"` + ErrMsg string `json:"errMsg"` + OperationID string `json:"operationID"` +} + + diff --git a/pkg/call_back_struct/group.go b/pkg/call_back_struct/group.go new file mode 100644 index 000000000..3681dddcc --- /dev/null +++ b/pkg/call_back_struct/group.go @@ -0,0 +1,9 @@ +package call_back_struct + +type CallbackBeforeCreateGroupReq struct { + CommonCallbackReq +} + +type CallbackAfterCreateGroupResp struct { + CommonCallbackResp +} \ No newline at end of file diff --git a/pkg/call_back_struct/message.go b/pkg/call_back_struct/message.go index 90b77eda8..26473182e 100644 --- a/pkg/call_back_struct/message.go +++ b/pkg/call_back_struct/message.go @@ -1 +1,61 @@ package call_back_struct + +type singleMsg struct { + SendID string `json:"sendID"` + RecvID string `json:"recvID"` + ClientMsgID string `json:"clientMsgID"` + ServerMsgID string `json:"serverMsgId"` + SendTime int64 `json:"sendTime"` + CreateTime int64 `json:"createTime"` +} + +type CallbackBeforeSendSingleMsgReq struct { + CommonCallbackReq + singleMsg +} + +type CallbackBeforeSendSingleMsgResp struct { + CommonCallbackResp +} + +type CallbackAfterSendSingleMsgReq struct { + CommonCallbackReq + singleMsg +} + +type CallbackAfterSendSingleMsgResp struct { + CommonCallbackResp +} + +type groupMsg struct { + +} + +type CallbackBeforeSendGroupMsgReq struct { + CommonCallbackReq +} + +type CallbackBeforeSendGroupMsgResp struct { + CommonCallbackResp +} + +type CallbackAfterSendGroupMsgReq struct { + CommonCallbackReq +} + +type CallbackAfterSendGroupMsgResp struct { + CommonCallbackResp +} + +type CallBackWordFilterReq struct { + CommonCallbackReq + Content []byte `json:"content"` + SendID string `json:"SendID"` + RecvID string `json:"RecvID"` + GroupID string `json:"GroupID"` +} + +type CallBackWordFilterResp struct { + CommonCallbackResp + Content []byte `json:"content"` +} diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index ae0d3cadc..4782276e7 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -19,6 +19,12 @@ var ( var Config config +type callBackConfig struct { + Enable bool `yaml:"enable"` + CallbackTimeOut int `yaml:"callbackTimeOut"` + CallbackFailedContinue bool `CallbackFailedContinue` +} + type config struct { ServerIP string `yaml:"serverip"` ServerVersion string `yaml:"serverversion"` @@ -167,11 +173,6 @@ type config struct { AccessSecret string `yaml:"accessSecret"` AccessExpire int64 `yaml:"accessExpire"` } - MessageCallBack struct { - CallbackSwitch bool `yaml:"callbackSwitch"` - CallbackUrl string `yaml:"callbackUrl"` - CallBackTimeOut int `yaml:"callbackTimeOut"` - } MessageJudge struct { IsJudgeFriend bool `yaml:"isJudgeFriend"` } @@ -179,6 +180,15 @@ type config struct { PushSound string `yaml:"pushSound"` BadgeCount bool `yaml:"badgeCount"` } + + Callback struct { + CallbackUrl string `yaml:"callbackUrl"` + CallbackbeforeSendSingleMsg callBackConfig `yaml:"callbackSendGroupMsg"` + CallbackAfterSendSingleMsg callBackConfig `yaml:"callbackSendSingleMsg"` + CallbackBeforeSendGroupMsg callBackConfig `yaml:"CallbackBeforeSendGroupMsg"` + CallbackAfterSendGroupMsg callBackConfig `yaml:"callbackAfterSendGroupMsg"` + CallbackWordFilter callBackConfig `yaml:"callbackWordFilter"` + } `yaml:"callback"` Notification struct { ///////////////////////group///////////////////////////// GroupCreated struct { diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index c5e2d38b9..9d0c9724b 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -136,6 +136,16 @@ const ( VerificationCodeForReset = 2 VerificationCodeForRegisterSuffix = "_forRegister" VerificationCodeForResetSuffix = "_forReset" + + //callbackCommand + CallbackBeforeSendSingleMsgCommand = "callbackBeforeSendSingleMsg" + CallbackAfterSendSingleMsgCommand = "callbackAfterSendSingleMsg" + CallbackBeforeSendGroupMsgCommand = "callbackBeforeSendGroupMsg" + CallbackAfterSendGroupMsgCommand = "callbackAfterSendGroupMsgCommand" + CallbackWordFilterCommand = "callbackWordFilterCommand" + //actionCode + ActionAllow = 0 + ActionForbidden = 1 ) var ContentType2PushContent = map[int64]string{ diff --git a/pkg/common/constant/error.go b/pkg/common/constant/error.go index 339f2c953..548720a37 100644 --- a/pkg/common/constant/error.go +++ b/pkg/common/constant/error.go @@ -51,6 +51,7 @@ var ( ErrAccess = ErrInfo{ErrCode: 801, ErrMsg: AccessMsg.Error()} ErrDB = ErrInfo{ErrCode: 802, ErrMsg: DBMsg.Error()} ErrArgs = ErrInfo{ErrCode: 8003, ErrMsg: ArgsMsg.Error()} + ErrCallback = ErrInfo{ErrCode: 809, ErrMsg: CallBackMsg.Error()} ) var ( @@ -64,6 +65,7 @@ var ( AccessMsg = errors.New("no permission") DBMsg = errors.New("db failed") ArgsMsg = errors.New("args failed") + CallBackMsg = errors.New("callback failed") ThirdPartyMsg = errors.New("third party error") ) diff --git a/pkg/common/http/http_client.go b/pkg/common/http/http_client.go index 4d480770a..38d18c119 100644 --- a/pkg/common/http/http_client.go +++ b/pkg/common/http/http_client.go @@ -53,3 +53,13 @@ func Post(url string, data interface{}, timeOutSecond int) (content []byte, err } return result, nil } + +func PostReturn(url string, input, output interface{}, timeOut int) error { + b, err := Post(url, input, timeOut) + if err != nil { + return err + } + if err = json.Unmarshal(b, output); err != nil { + return err + } +} diff --git a/pkg/common/log/logrus.go b/pkg/common/log/logrus.go index a5e0ae7dd..63485e8d9 100644 --- a/pkg/common/log/logrus.go +++ b/pkg/common/log/logrus.go @@ -2,7 +2,6 @@ package log import ( "Open_IM/pkg/common/config" - "bufio" "fmt" "os" "time" @@ -33,13 +32,13 @@ func loggerInit(moduleName string) *Logger { //All logs will be printed logger.SetLevel(logrus.Level(config.Config.Log.RemainLogLevel)) //Close std console output - src, err := os.OpenFile(os.DevNull, os.O_APPEND|os.O_WRONLY, os.ModeAppend) - if err != nil { - panic(err.Error()) - } - writer := bufio.NewWriter(src) - logger.SetOutput(writer) - //logger.SetOutput(os.Stdout) + //src, err := os.OpenFile(os.DevNull, os.O_APPEND|os.O_WRONLY, os.ModeAppend) + //if err != nil { + // panic(err.Error()) + //} + //writer := bufio.NewWriter(src) + //logger.SetOutput(writer) + logger.SetOutput(os.Stdout) //Log Console Print Style Setting logger.SetFormatter(&nested.Formatter{ TimestampFormat: "2006-01-02 15:04:05.000", diff --git a/pkg/proto/sdk_ws/ws.proto b/pkg/proto/sdk_ws/ws.proto index 5d200cce6..cb622b96c 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -338,6 +338,36 @@ message ConversationUpdateTips{ } +///callback +message CommonCallbackURLReq { + string CallbackCommand = 1 [json_name = "code"]; + string OpenIMServerID = 2; + string OperationID = 3; +} + +message CommonCallbackURLResp { + string Code = 1 [json_name = "code"]; + string Msg = 2 [json_name = "msg"]; + string OperationID = 3 [json_name = "operationID"]; +} + +message CallbackBeforeSendMsgReq { + commonReq CommonCallbackURLReq = 1; + +} + +message CallbackBeforeSendMsgResp { + commonResp CommonCallbackURLResp = 1; + string FromUserID = 2; +} + +message CallbackAfterAddFriendReq { + commonReq CommonCallbackURLReq = 1; +} + +message CallbackAfterAddFriendResp { + commonResp CommonCallbackURLResp = 1; +} ///cms From 123aad2707b7117fcc4920e9d40b11f3fa20e296 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 28 Feb 2022 19:10:32 +0800 Subject: [PATCH 24/81] statistics log --- pkg/statistics/statistics.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/statistics/statistics.go b/pkg/statistics/statistics.go index bda8ded85..23fd0e901 100644 --- a/pkg/statistics/statistics.go +++ b/pkg/statistics/statistics.go @@ -21,7 +21,7 @@ func (s *Statistics) output() { select { case <-t.C: } - log.NewWarn(s.ModuleName, s.PrintArgs, *s.Count-sum) + log.NewWarn(s.ModuleName, s.PrintArgs, *s.Count-sum, *s.Count) } } From 63625007416da72e2e65069006c4fe0c27faf1c6 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 1 Mar 2022 15:14:56 +0800 Subject: [PATCH 25/81] Statistics --- pkg/statistics/statistics.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/statistics/statistics.go b/pkg/statistics/statistics.go index 23fd0e901..58d376986 100644 --- a/pkg/statistics/statistics.go +++ b/pkg/statistics/statistics.go @@ -21,7 +21,7 @@ func (s *Statistics) output() { select { case <-t.C: } - log.NewWarn(s.ModuleName, s.PrintArgs, *s.Count-sum, *s.Count) + log.NewWarn(s.ModuleName, s.PrintArgs, *s.Count-sum, "total:", *s.Count) } } From de7dae445564974583bbe586fef40e48d4d0feb9 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 1 Mar 2022 15:17:43 +0800 Subject: [PATCH 26/81] statistics --- pkg/statistics/statistics.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/statistics/statistics.go b/pkg/statistics/statistics.go index 58d376986..26690b696 100644 --- a/pkg/statistics/statistics.go +++ b/pkg/statistics/statistics.go @@ -21,8 +21,7 @@ func (s *Statistics) output() { select { case <-t.C: } - log.NewWarn(s.ModuleName, s.PrintArgs, *s.Count-sum, "total:", *s.Count) - + log.NewWarn("", "system stat ", s.ModuleName, s.PrintArgs, *s.Count-sum, "total:", *s.Count) } } From c4ec54f6e440b95a09c47e8a804b5fcbc613fe9e Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 1 Mar 2022 15:22:02 +0800 Subject: [PATCH 27/81] Statistics --- pkg/statistics/statistics.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/statistics/statistics.go b/pkg/statistics/statistics.go index 26690b696..bea4479bd 100644 --- a/pkg/statistics/statistics.go +++ b/pkg/statistics/statistics.go @@ -21,7 +21,7 @@ func (s *Statistics) output() { select { case <-t.C: } - log.NewWarn("", "system stat ", s.ModuleName, s.PrintArgs, *s.Count-sum, "total:", *s.Count) + log.NewWarn("", " system stat ", s.ModuleName, s.PrintArgs, *s.Count-sum, "total:", *s.Count) } } From 58163cefa0970f8b2037df1f73601427bb7a3f64 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 1 Mar 2022 15:32:47 +0800 Subject: [PATCH 28/81] set max open file num --- script/msg_gateway_start.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/script/msg_gateway_start.sh b/script/msg_gateway_start.sh index 1df53cfdd..978cc11fb 100644 --- a/script/msg_gateway_start.sh +++ b/script/msg_gateway_start.sh @@ -3,6 +3,8 @@ source ./style_info.cfg source ./path_info.cfg source ./function.sh +ulimit -n 200000 + list1=$(cat $config_path | grep openImOnlineRelayPort | awk -F '[:]' '{print $NF}') list2=$(cat $config_path | grep openImWsPort | awk -F '[:]' '{print $NF}') list_to_string $list1 From 0e9e02de0baf5d88b97b266344143264541185ef Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Tue, 1 Mar 2022 15:53:33 +0800 Subject: [PATCH 29/81] statistics code --- internal/api/third/minio_init.go | 2 +- internal/msg_gateway/gate/init.go | 14 ++++++++------ internal/msg_gateway/gate/logic.go | 2 +- internal/msg_gateway/gate/ws_server.go | 2 ++ 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index d073524f3..9d5e404de 100644 --- a/internal/api/third/minio_init.go +++ b/internal/api/third/minio_init.go @@ -45,7 +45,7 @@ func init() { //err = minioClient.SetBucketPolicy(context.Background(), config.Config.Credential.Minio.Bucket, policy.BucketPolicyReadWrite) //if err != nil { // log.NewError("", utils.GetSelfFuncName(), "SetBucketPolicy failed please set in ", err.Error()) - // return + // return`z //} log.NewInfo("", utils.GetSelfFuncName(), "minio create and set policy success") } diff --git a/internal/msg_gateway/gate/init.go b/internal/msg_gateway/gate/init.go index 47d1dcedb..a98027561 100644 --- a/internal/msg_gateway/gate/init.go +++ b/internal/msg_gateway/gate/init.go @@ -10,11 +10,12 @@ import ( ) var ( - rwLock *sync.RWMutex - validate *validator.Validate - ws WServer - rpcSvr RPCServer - count uint64 + rwLock *sync.RWMutex + validate *validator.Validate + ws WServer + rpcSvr RPCServer + sendMsgCount uint64 + userCount uint64 ) func Init(rpcPort, wsPort int) { @@ -22,7 +23,8 @@ func Init(rpcPort, wsPort int) { log.NewPrivateLog(config.Config.ModuleName.LongConnSvrName) rwLock = new(sync.RWMutex) validate = validator.New() - statistics.NewStatistics(&count, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second recv to msg_gateway count", count), 10) + statistics.NewStatistics(&sendMsgCount, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second recv to msg_gateway sendMsgCount", sendMsgCount), 10) + statistics.NewStatistics(&userCount, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second add user conn", userCount), 10) ws.onInit(wsPort) rpcSvr.onInit(rpcPort) } diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index 2aa19f609..df3b1a356 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -142,7 +142,7 @@ func (ws *WServer) pullMsgBySeqListResp(conn *UserConn, m *Req, pb *sdk_ws.PullM } func (ws *WServer) sendMsgReq(conn *UserConn, m *Req) { - count++ + sendMsgCount++ log.NewInfo(m.OperationID, "Ws call success to sendMsgReq start", m.MsgIncr, m.ReqIdentifier, m.SendID) nReply := new(pbChat.SendMsgResp) isPass, errCode, errMsg, pData := ws.argsValidate(m, constant.WSSendMsg) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 2197fbbc2..ba14561ef 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -184,6 +184,7 @@ func (ws *WServer) addUserConn(uid string, platformID int32, conn *UserConn, tok count = count + len(v) } log.WarnByKv("WS Add operation", "", "wsUser added", ws.wsUserToConn, "connection_uid", uid, "connection_platform", constant.PlatformIDToName(platformID), "online_user_num", len(ws.wsUserToConn), "online_conn_num", count) + userCount = uint64(len(ws.wsUserToConn)) } @@ -210,6 +211,7 @@ func (ws *WServer) delUserConn(conn *UserConn) { } else { log.WarnByKv("WS delete operation", "", "wsUser deleted", ws.wsUserToConn, "disconnection_uid", uid, "disconnection_platform", platform, "online_user_num", len(ws.wsUserToConn)) } + userCount = uint64(len(ws.wsUserToConn)) delete(ws.wsConnToUser, conn) } From 72ed38156af22fc51a06c395a3b20b697074e2fa Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Tue, 1 Mar 2022 17:48:53 +0800 Subject: [PATCH 30/81] test code --- internal/msg_gateway/gate/ws_server.go | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index ba14561ef..0f751b58d 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -5,7 +5,6 @@ import ( "Open_IM/pkg/common/constant" "Open_IM/pkg/common/db" "Open_IM/pkg/common/log" - "Open_IM/pkg/common/token_verify" "Open_IM/pkg/utils" "bytes" "encoding/gob" @@ -258,16 +257,16 @@ func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request) bool { status := http.StatusUnauthorized query := r.URL.Query() if len(query["token"]) != 0 && len(query["sendID"]) != 0 && len(query["platformID"]) != 0 { - if ok, err := token_verify.VerifyToken(query["token"][0], query["sendID"][0]); !ok { - e := err.(*constant.ErrInfo) - log.ErrorByKv("Token verify failed", "", "query", query) - w.Header().Set("Sec-Websocket-Version", "13") - http.Error(w, e.ErrMsg, int(e.ErrCode)) - return false - } else { - log.InfoByKv("Connection Authentication Success", "", "token", query["token"][0], "userID", query["sendID"][0]) - return true - } + //if ok, err := token_verify.VerifyToken(query["token"][0], query["sendID"][0]); !ok { + // e := err.(*constant.ErrInfo) + // log.ErrorByKv("Token verify failed", "", "query", query) + // w.Header().Set("Sec-Websocket-Version", "13") + // http.Error(w, e.ErrMsg, int(e.ErrCode)) + // return false + //} else { + log.InfoByKv("Connection Authentication Success", "", "token", query["token"][0], "userID", query["sendID"][0]) + return true + //} } else { log.ErrorByKv("Args err", "", "query", query) w.Header().Set("Sec-Websocket-Version", "13") From 84a01569d644cee9fe91b88f1ab79c9dd49fee71 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Wed, 2 Mar 2022 09:45:12 +0800 Subject: [PATCH 31/81] limit mongo memory --- docker-compose.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docker-compose.yaml b/docker-compose.yaml index 5497faa43..154c61faa 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -24,6 +24,10 @@ services: - ./components/mongodb/data/db:/data/db - ./components/mongodb/data/logs:/data/logs - ./components/mongodb/data/conf:/etc/mongo + environment: + - TZ=Asia/Shanghai + # cache + - wiredTigerCacheSizeGB=1 # environment: # - MONGO_INITDB_ROOT_USERNAME=openIM # - MONGO_INITDB_ROOT_PASSWORD=openIM From dcfd802757f92c3ab3655dc2102d1e1a84c196e5 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 2 Mar 2022 19:07:17 +0800 Subject: [PATCH 32/81] callback add --- config/config.yaml | 6 ++-- internal/api/third/minio_init.go | 1 + internal/rpc/msg/callback.go | 48 ++++++++++++++++++--------- internal/rpc/msg/send_msg.go | 2 +- internal/rpc/statistics/statistics.go | 41 +++++++++++++++-------- pkg/call_back_struct/message.go | 24 +++++++++----- 6 files changed, 80 insertions(+), 42 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index da3264de7..d8ff4060d 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -8,7 +8,7 @@ etcd: etcdAddr: [ 127.0.0.1:2379 ] #单机部署时,默认即可 mysql: - dbMysqlAddress: [ 43.128.5.63:13306 ] #mysql地址 目前仅支持单机,默认即可 + dbMysqlAddress: [ 127.0.0.1:13306 ] #mysql地址 目前仅支持单机,默认即可 dbMysqlUserName: root #mysql用户名,建议修改 dbMysqlPassword: openIM # mysql密码,建议修改 dbMysqlDatabaseName: openIM_v2 #默认即可 @@ -19,7 +19,7 @@ mysql: dbMaxLifeTime: 120 mongo: - dbAddress: [ 43.128.5.63:37017 ] #redis地址 目前仅支持单机,默认即可 + dbAddress: [ 127.0.0.1:37017 ] #redis地址 目前仅支持单机,默认即可 dbDirect: false dbTimeout: 10 dbDatabase: openIM #mongo db 默认即可 @@ -30,7 +30,7 @@ mongo: dbRetainChatRecords: 3650 #mongo保存离线消息时间(天),根据需求修改 redis: - dbAddress: 43.128.5.63:16379 #redis地址 目前仅支持单机,默认即可 + dbAddress: 127.0.0.1:16379 #redis地址 目前仅支持单机,默认即可 dbMaxIdle: 128 dbMaxActive: 0 dbIdleTimeout: 120 diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index d073524f3..bcec45402 100644 --- a/internal/api/third/minio_init.go +++ b/internal/api/third/minio_init.go @@ -42,6 +42,7 @@ func init() { return } } + // 自动化桶public的代码 //err = minioClient.SetBucketPolicy(context.Background(), config.Config.Credential.Minio.Bucket, policy.BucketPolicyReadWrite) //if err != nil { // log.NewError("", utils.GetSelfFuncName(), "SetBucketPolicy failed please set in ", err.Error()) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index d55d9046e..19d8ca4f4 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -12,16 +12,19 @@ import ( func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err error) { log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - if !config.Config.Callback.CallbackbeforeSendSingleMsg.Enable || msg.MsgData.ContentType != constant.Text { + if !config.Config.Callback.CallbackbeforeSendSingleMsg.Enable { return true, nil } req := cbApi.CallbackBeforeSendSingleMsgReq{CommonCallbackReq:cbApi.CommonCallbackReq{ }} resp := &cbApi.CallbackBeforeSendSingleMsgResp{CommonCallbackResp:cbApi.CommonCallbackResp{ }} + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) utils.CopyStructFields(req, msg.MsgData) - if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackTimeOut); err != nil && !config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackFailedContinue{ - return false, err + if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackTimeOut); err != nil{ + if !config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackFailedContinue { + return false, err + } } if resp.ActionCode == constant.ActionForbidden { return false, nil @@ -32,13 +35,14 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - if !config.Config.Callback.CallbackAfterSendSingleMsg.Enable || msg.MsgData.ContentType != constant.Text { + if !config.Config.Callback.CallbackAfterSendSingleMsg.Enable { return nil } req := cbApi.CallbackAfterSendSingleMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{}} resp := &cbApi.CallbackAfterSendSingleMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) utils.CopyStructFields(req, msg.MsgData) - if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendSingleMsg.CallbackTimeOut); err != nil && config.Config.Callback.CallbackAfterSendSingleMsg.CallbackFailedContinue{ + if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendSingleMsg.CallbackTimeOut); err != nil{ return err } return nil @@ -47,14 +51,17 @@ func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error) { log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - if !config.Config.Callback.CallbackBeforeSendGroupMsg.Enable || msg.MsgData.ContentType != constant.Text { + if !config.Config.Callback.CallbackBeforeSendGroupMsg.Enable { return true, nil } req := cbApi.CallbackBeforeSendSingleMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{}} resp := &cbApi.CallbackBeforeSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) utils.CopyStructFields(req, msg.MsgData) - if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackTimeOut); err != nil && !config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackFailedContinue{ - return false, nil + if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackTimeOut); err != nil { + if !config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackFailedContinue { + return false, nil + } } if resp.ActionCode == constant.ActionForbidden { return false, nil @@ -64,9 +71,16 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - if !config.Config.Callback.CallbackAfterSendGroupMsg.Enable || msg.MsgData.ContentType != constant.Text { + if !config.Config.Callback.CallbackAfterSendGroupMsg.Enable { return nil } + req := cbApi.CallbackAfterSendGroupMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{}} + resp := &cbApi.CallbackAfterSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) + utils.CopyStructFields(req, msg.MsgData) + if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendGroupMsg.CallbackTimeOut); err != nil { + return err + } return nil } @@ -76,13 +90,17 @@ func callBackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { if !config.Config.Callback.CallbackWordFilter.Enable || msg.MsgData.ContentType != constant.Text { return true, nil } - req := cbApi.CallBackWordFilterReq{ - CommonCallbackReq: cbApi.CommonCallbackReq{}, - } - resp := cbApi.CallBackWordFilterResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} + req := cbApi.CallbackWordFilterReq{CommonCallbackReq: cbApi.CommonCallbackReq{}} + resp := &cbApi.CallbackWordFilterResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) utils.CopyStructFields(&req, msg.MsgData) - if err := http.PostReturn(msg.OperationID, req, &resp, config.Config.Callback.CallbackWordFilter.CallbackTimeOut); err != nil { - return false, err + if err := http.PostReturn(msg.OperationID, req, resp, config.Config.Callback.CallbackWordFilter.CallbackTimeOut); err != nil { + if !config.Config.Callback.CallbackWordFilter.CallbackFailedContinue { + return false, err + } + } + if resp.ActionCode == constant.ActionForbidden { + return false, nil } msg.MsgData.Content = resp.Content return true, nil diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 390f151f9..86a28d480 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -131,7 +131,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallbackBeforeSendMsg failed", err.Error(), pb.MsgData) } if !canSend { - log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callback result", canSend, "end rpc and return") + log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callback result", canSend, "end rpc and return", pb.MsgData) return returnMsg(&replay, pb, 201, "callback result stop rpc and return", "", 0) } switch pb.MsgData.SessionType { diff --git a/internal/rpc/statistics/statistics.go b/internal/rpc/statistics/statistics.go index 9554bf116..e8b1383f9 100644 --- a/internal/rpc/statistics/statistics.go +++ b/internal/rpc/statistics/statistics.go @@ -164,28 +164,41 @@ func GetRangeDate(from, to time.Time) [][2]time.Time { } // month case !isInOneMonth(from, to): - for i := 0; ; i++ { - if i == 0 { - fromTime := from - toTime := getFirstDateOfNextNMonth(fromTime, 1) + if to.Sub(from) < time.Hour * 24 * 30 { + for i := 0; ; i++ { + fromTime := from.Add(time.Hour * 24 * time.Duration(i)) + toTime := from.Add(time.Hour * 24 * time.Duration(i+1)) + if toTime.After(to.Add(time.Hour * 24)) { + break + } times = append(times, [2]time.Time{ fromTime, toTime, }) - } else { - fromTime := getFirstDateOfNextNMonth(from, i) - toTime := getFirstDateOfNextNMonth(fromTime, 1) - if toTime.After(to) { - toTime = to + } + } else { + for i := 0; ; i++ { + if i == 0 { + fromTime := from + toTime := getFirstDateOfNextNMonth(fromTime, 1) + times = append(times, [2]time.Time{ + fromTime, toTime, + }) + } else { + fromTime := getFirstDateOfNextNMonth(from, i) + toTime := getFirstDateOfNextNMonth(fromTime, 1) + if toTime.After(to) { + toTime = to + times = append(times, [2]time.Time{ + fromTime, toTime, + }) + break + } times = append(times, [2]time.Time{ fromTime, toTime, }) - break } - times = append(times, [2]time.Time{ - fromTime, toTime, - }) - } + } } } return times diff --git a/pkg/call_back_struct/message.go b/pkg/call_back_struct/message.go index 26473182e..253c2561e 100644 --- a/pkg/call_back_struct/message.go +++ b/pkg/call_back_struct/message.go @@ -1,12 +1,16 @@ package call_back_struct -type singleMsg struct { +type msg struct { SendID string `json:"sendID"` - RecvID string `json:"recvID"` ClientMsgID string `json:"clientMsgID"` ServerMsgID string `json:"serverMsgId"` - SendTime int64 `json:"sendTime"` CreateTime int64 `json:"createTime"` + Content []byte `json:"content"` +} + +type singleMsg struct { + msg + RecvID string `json:"recvID"` } type CallbackBeforeSendSingleMsgReq struct { @@ -16,6 +20,7 @@ type CallbackBeforeSendSingleMsgReq struct { type CallbackBeforeSendSingleMsgResp struct { CommonCallbackResp + singleMsg } type CallbackAfterSendSingleMsgReq struct { @@ -28,18 +33,22 @@ type CallbackAfterSendSingleMsgResp struct { } type groupMsg struct { - + msg + GroupID string `json:"groupID"` } type CallbackBeforeSendGroupMsgReq struct { CommonCallbackReq + groupMsg } type CallbackBeforeSendGroupMsgResp struct { CommonCallbackResp + groupMsg } type CallbackAfterSendGroupMsgReq struct { + groupMsg CommonCallbackReq } @@ -47,15 +56,12 @@ type CallbackAfterSendGroupMsgResp struct { CommonCallbackResp } -type CallBackWordFilterReq struct { +type CallbackWordFilterReq struct { CommonCallbackReq Content []byte `json:"content"` - SendID string `json:"SendID"` - RecvID string `json:"RecvID"` - GroupID string `json:"GroupID"` } -type CallBackWordFilterResp struct { +type CallbackWordFilterResp struct { CommonCallbackResp Content []byte `json:"content"` } From c0c08fe373344542aaf6f95e28b58cc6b7f713e2 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Wed, 2 Mar 2022 20:59:54 +0800 Subject: [PATCH 33/81] adjust log --- internal/msg_gateway/gate/ws_server.go | 2 +- internal/push/logic/push_to_client.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 0f751b58d..ff7e739c8 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -182,7 +182,7 @@ func (ws *WServer) addUserConn(uid string, platformID int32, conn *UserConn, tok for _, v := range ws.wsUserToConn { count = count + len(v) } - log.WarnByKv("WS Add operation", "", "wsUser added", ws.wsUserToConn, "connection_uid", uid, "connection_platform", constant.PlatformIDToName(platformID), "online_user_num", len(ws.wsUserToConn), "online_conn_num", count) + log.Debug("WS Add operation", "", "wsUser added", ws.wsUserToConn, "connection_uid", uid, "connection_platform", constant.PlatformIDToName(platformID), "online_user_num", len(ws.wsUserToConn), "online_conn_num", count) userCount = uint64(len(ws.wsUserToConn)) } diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go index b6a624f91..11d090ac5 100644 --- a/internal/push/logic/push_to_client.go +++ b/internal/push/logic/push_to_client.go @@ -31,10 +31,10 @@ type AtContent struct { func MsgToUser(pushMsg *pbPush.PushMsgReq) { var wsResult []*pbRelay.SingleMsgToUser //isOfflinePush := utils.GetSwitchFromOptions(pushMsg.MsgData.Options, constant.IsOfflinePush) - log.InfoByKv("Get msg from msg_transfer And push msg", pushMsg.OperationID, "PushData", pushMsg.String()) + log.Debug("Get msg from msg_transfer And push msg", pushMsg.OperationID, "PushData", pushMsg.String()) grpcCons := getcdv3.GetConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOnlineMessageRelayName) //Online push message - log.InfoByKv("test", pushMsg.OperationID, "len grpc", len(grpcCons), "data", pushMsg.String()) + log.Debug("test", pushMsg.OperationID, "len grpc", len(grpcCons), "data", pushMsg.String()) for _, v := range grpcCons { msgClient := pbRelay.NewOnlineMessageRelayServiceClient(v) reply, err := msgClient.OnlinePushMsg(context.Background(), &pbRelay.OnlinePushMsgReq{OperationID: pushMsg.OperationID, MsgData: pushMsg.MsgData, PushToUserID: pushMsg.PushToUserID}) From e6b302abf9c51bccd121b563f09339a1a7f6f4f9 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Wed, 2 Mar 2022 21:02:21 +0800 Subject: [PATCH 34/81] log --- pkg/common/http/http_client.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/common/http/http_client.go b/pkg/common/http/http_client.go index 38d18c119..e227da91e 100644 --- a/pkg/common/http/http_client.go +++ b/pkg/common/http/http_client.go @@ -62,4 +62,5 @@ func PostReturn(url string, input, output interface{}, timeOut int) error { if err = json.Unmarshal(b, output); err != nil { return err } + return nil } From 25f24801d6acb46c81364dd2c0a342af7f01dc92 Mon Sep 17 00:00:00 2001 From: FG <1432970085@qq.com> Date: Wed, 2 Mar 2022 22:52:39 +0800 Subject: [PATCH 35/81] log --- pkg/common/log/logrus.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/pkg/common/log/logrus.go b/pkg/common/log/logrus.go index 63485e8d9..a5e0ae7dd 100644 --- a/pkg/common/log/logrus.go +++ b/pkg/common/log/logrus.go @@ -2,6 +2,7 @@ package log import ( "Open_IM/pkg/common/config" + "bufio" "fmt" "os" "time" @@ -32,13 +33,13 @@ func loggerInit(moduleName string) *Logger { //All logs will be printed logger.SetLevel(logrus.Level(config.Config.Log.RemainLogLevel)) //Close std console output - //src, err := os.OpenFile(os.DevNull, os.O_APPEND|os.O_WRONLY, os.ModeAppend) - //if err != nil { - // panic(err.Error()) - //} - //writer := bufio.NewWriter(src) - //logger.SetOutput(writer) - logger.SetOutput(os.Stdout) + src, err := os.OpenFile(os.DevNull, os.O_APPEND|os.O_WRONLY, os.ModeAppend) + if err != nil { + panic(err.Error()) + } + writer := bufio.NewWriter(src) + logger.SetOutput(writer) + //logger.SetOutput(os.Stdout) //Log Console Print Style Setting logger.SetFormatter(&nested.Formatter{ TimestampFormat: "2006-01-02 15:04:05.000", From d8a729c961f55a552d81c71de6d6bafb5c862810 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 3 Mar 2022 10:53:44 +0800 Subject: [PATCH 36/81] config update --- config/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index 7d025c863..9d1f7f71b 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -180,7 +180,7 @@ tokenpolicy: messagecallback: callbackSwitch: false - callbackUrl: "http://www.xxx.com/msg/judge" + callbackUrl: "http://www.uuu.com/msg/judge" #TimeOut use second as unit callbackTimeOut: 10 messagejudge: From 97ec9602f7e83b012e3026e8bcc9a65904fd1c3f Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 3 Mar 2022 12:11:38 +0800 Subject: [PATCH 37/81] callback note --- internal/rpc/msg/send_msg.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 86a28d480..b4581456a 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -126,14 +126,14 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S } // callback - canSend, err := callBackWordFilter(pb) - if err != nil { - log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallbackBeforeSendMsg failed", err.Error(), pb.MsgData) - } - if !canSend { - log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callback result", canSend, "end rpc and return", pb.MsgData) - return returnMsg(&replay, pb, 201, "callback result stop rpc and return", "", 0) - } + //canSend, err := callBackWordFilter(pb) + //if err != nil { + // log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallbackBeforeSendMsg failed", err.Error(), pb.MsgData) + //} + //if !canSend { + // log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callback result", canSend, "end rpc and return", pb.MsgData) + // return returnMsg(&replay, pb, 201, "callback result stop rpc and return", "", 0) + //} switch pb.MsgData.SessionType { case constant.SingleChatType: canSend, err := callbackBeforeSendSingleMsg(pb) From f1c11ac1144cfd68c761a49beb0d8580eaa9f58b Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 14:18:28 +0800 Subject: [PATCH 38/81] add callback --- config/config.yaml | 2 -- internal/rpc/msg/callback.go | 17 ++++++++++------- pkg/call_back_struct/message.go | 6 +++--- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index d8ff4060d..ff98b2692 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -202,7 +202,6 @@ callback: callbackAfterSendSingleMsg: enable: true callbackTimeOut: 5 - CallbackFailedContinue: true callbackBeforeSendGroupMsg: enable: true callbackTimeOut: 5 @@ -210,7 +209,6 @@ callback: callbackAfterSendGroupMsg: enable: true callbackTimeOut: 5 - CallbackFailedContinue: true callbackWordFilter: enable: true callbackTimeOut: 5 diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index 19d8ca4f4..310a80f67 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -62,9 +62,10 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error if !config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackFailedContinue { return false, nil } - } - if resp.ActionCode == constant.ActionForbidden { - return false, nil + } else { + if resp.ActionCode == constant.ActionForbidden { + return false, nil + } } return true, nil } @@ -94,15 +95,17 @@ func callBackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { resp := &cbApi.CallbackWordFilterResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) utils.CopyStructFields(&req, msg.MsgData) + req.Content = string(msg.MsgData.Content) if err := http.PostReturn(msg.OperationID, req, resp, config.Config.Callback.CallbackWordFilter.CallbackTimeOut); err != nil { if !config.Config.Callback.CallbackWordFilter.CallbackFailedContinue { return false, err } + } else { + msg.MsgData.Content = []byte(resp.Content) + if resp.ActionCode == constant.ActionForbidden { + return false, nil + } } - if resp.ActionCode == constant.ActionForbidden { - return false, nil - } - msg.MsgData.Content = resp.Content return true, nil } diff --git a/pkg/call_back_struct/message.go b/pkg/call_back_struct/message.go index 253c2561e..97d31a09f 100644 --- a/pkg/call_back_struct/message.go +++ b/pkg/call_back_struct/message.go @@ -5,7 +5,7 @@ type msg struct { ClientMsgID string `json:"clientMsgID"` ServerMsgID string `json:"serverMsgId"` CreateTime int64 `json:"createTime"` - Content []byte `json:"content"` + Content string `json:"content"` } type singleMsg struct { @@ -58,10 +58,10 @@ type CallbackAfterSendGroupMsgResp struct { type CallbackWordFilterReq struct { CommonCallbackReq - Content []byte `json:"content"` + Content string `json:"content"` } type CallbackWordFilterResp struct { CommonCallbackResp - Content []byte `json:"content"` + Content string `json:"content"` } From d13a6b0c3683cc30620ee8756de8c979c6a4afda Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 14:42:50 +0800 Subject: [PATCH 39/81] add callback --- config/config.yaml | 2 +- internal/rpc/msg/callback.go | 13 +++++++++---- internal/rpc/msg/send_msg.go | 16 ++++++++-------- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index ff98b2692..f7e966eb8 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -193,7 +193,7 @@ iospush: badgeCount: true callback: - callbackUrl : "http://xxx.com" + callbackUrl : "http://127.0.0.1:8070" # 开启关闭操作前后回调的配置 callbackbeforeSendSingleMsg: enable: true # 回调是否启用 diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index 310a80f67..6bdc29bb2 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -21,13 +21,15 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro }} defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) utils.CopyStructFields(req, msg.MsgData) + req.Content = string(msg.MsgData.Content) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackTimeOut); err != nil{ if !config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackFailedContinue { return false, err } - } - if resp.ActionCode == constant.ActionForbidden { - return false, nil + } else { + if resp.ActionCode == constant.ActionForbidden { + return false, nil + } } return true, nil } @@ -42,6 +44,7 @@ func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { resp := &cbApi.CallbackAfterSendSingleMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) utils.CopyStructFields(req, msg.MsgData) + req.Content = string(msg.MsgData.Content) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendSingleMsg.CallbackTimeOut); err != nil{ return err } @@ -58,6 +61,7 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error resp := &cbApi.CallbackBeforeSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) utils.CopyStructFields(req, msg.MsgData) + req.Content = string(msg.MsgData.Content) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackTimeOut); err != nil { if !config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackFailedContinue { return false, nil @@ -79,6 +83,7 @@ func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { resp := &cbApi.CallbackAfterSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) utils.CopyStructFields(req, msg.MsgData) + req.Content = string(msg.MsgData.Content) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendGroupMsg.CallbackTimeOut); err != nil { return err } @@ -101,10 +106,10 @@ func callBackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { return false, err } } else { - msg.MsgData.Content = []byte(resp.Content) if resp.ActionCode == constant.ActionForbidden { return false, nil } + msg.MsgData.Content = []byte(resp.Content) } return true, nil } diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index b4581456a..86a28d480 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -126,14 +126,14 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S } // callback - //canSend, err := callBackWordFilter(pb) - //if err != nil { - // log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallbackBeforeSendMsg failed", err.Error(), pb.MsgData) - //} - //if !canSend { - // log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callback result", canSend, "end rpc and return", pb.MsgData) - // return returnMsg(&replay, pb, 201, "callback result stop rpc and return", "", 0) - //} + canSend, err := callBackWordFilter(pb) + if err != nil { + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallbackBeforeSendMsg failed", err.Error(), pb.MsgData) + } + if !canSend { + log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callback result", canSend, "end rpc and return", pb.MsgData) + return returnMsg(&replay, pb, 201, "callback result stop rpc and return", "", 0) + } switch pb.MsgData.SessionType { case constant.SingleChatType: canSend, err := callbackBeforeSendSingleMsg(pb) From 85dbf4f98f2325dff94226d1800072c8b030b7cd Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 15:52:19 +0800 Subject: [PATCH 40/81] alter port --- config/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index f7e966eb8..21435f5bd 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -193,7 +193,7 @@ iospush: badgeCount: true callback: - callbackUrl : "http://127.0.0.1:8070" + callbackUrl : "http://127.0.0.1:8080" # 开启关闭操作前后回调的配置 callbackbeforeSendSingleMsg: enable: true # 回调是否启用 From 2d55e2edd52191c564f1a16a730e8ca12cb13c67 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 15:59:31 +0800 Subject: [PATCH 41/81] alter cfg --- config/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index 21435f5bd..09b190a46 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -132,7 +132,7 @@ log: storageLocation: ../logs/ rotationTime: 24 remainRotationCount: 5 #日志数量 - remainLogLevel: 4 #日志级别 6表示全都打印,测试阶段建议设置为6 + remainLogLevel: 6 #日志级别 6表示全都打印,测试阶段建议设置为6 elasticSearchSwitch: false elasticSearchAddr: [ 127.0.0.1:9201 ] elasticSearchUser: "" From e2b5b7016c58d66619a9767856fbd769ad3e33af Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 16:08:46 +0800 Subject: [PATCH 42/81] add debug log --- config/config.yaml | 8 ++++---- internal/rpc/msg/callback.go | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 09b190a46..4c31b0c7c 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -196,18 +196,18 @@ callback: callbackUrl : "http://127.0.0.1:8080" # 开启关闭操作前后回调的配置 callbackbeforeSendSingleMsg: - enable: true # 回调是否启用 + enable: false # 回调是否启用 callbackTimeOut: 5 # 回调超时时间 CallbackFailedContinue: true # 回调超时是否继续执行代码 callbackAfterSendSingleMsg: - enable: true + enable: false callbackTimeOut: 5 callbackBeforeSendGroupMsg: - enable: true + enable: false callbackTimeOut: 5 CallbackFailedContinue: true callbackAfterSendGroupMsg: - enable: true + enable: false callbackTimeOut: 5 callbackWordFilter: enable: true diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index 6bdc29bb2..5b2dc05d0 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -101,8 +101,9 @@ func callBackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) utils.CopyStructFields(&req, msg.MsgData) req.Content = string(msg.MsgData.Content) - if err := http.PostReturn(msg.OperationID, req, resp, config.Config.Callback.CallbackWordFilter.CallbackTimeOut); err != nil { + if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackWordFilter.CallbackTimeOut); err != nil { if !config.Config.Callback.CallbackWordFilter.CallbackFailedContinue { + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), "config disable, stop this operation") return false, err } } else { From 6cef26f893652754fe083231a4727a5a0d588dbf Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 16:23:59 +0800 Subject: [PATCH 43/81] alter callback fg --- config/config.yaml | 2 +- internal/demo/register/login.go | 2 +- internal/demo/register/set_password.go | 2 +- internal/rpc/msg/callback.go | 10 +++++----- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 4c31b0c7c..578113f19 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -193,7 +193,7 @@ iospush: badgeCount: true callback: - callbackUrl : "http://127.0.0.1:8080" + callbackUrl : "http://127.0.0.1:8080/callback" # 开启关闭操作前后回调的配置 callbackbeforeSendSingleMsg: enable: false # 回调是否启用 diff --git a/internal/demo/register/login.go b/internal/demo/register/login.go index 3a477e12e..e6de926dc 100644 --- a/internal/demo/register/login.go +++ b/internal/demo/register/login.go @@ -53,7 +53,7 @@ func Login(c *gin.Context) { openIMGetUserToken.Secret = config.Config.Secret openIMGetUserToken.UserID = account openIMGetUserTokenResp := api.UserTokenResp{} - bMsg, err := http2.Post(url, openIMGetUserToken, config.Config.MessageCallBack.CallBackTimeOut) + bMsg, err := http2.Post(url, openIMGetUserToken, 2) if err != nil { log.NewError(params.OperationID, "request openIM get user token error", account, "err", err.Error()) c.JSON(http.StatusOK, gin.H{"errCode": constant.GetIMTokenErr, "errMsg": err.Error()}) diff --git a/internal/demo/register/set_password.go b/internal/demo/register/set_password.go index 3fb996a56..7540d9830 100644 --- a/internal/demo/register/set_password.go +++ b/internal/demo/register/set_password.go @@ -57,7 +57,7 @@ func SetPassword(c *gin.Context) { openIMRegisterReq.Nickname = account openIMRegisterReq.Secret = config.Config.Secret openIMRegisterResp := api.UserRegisterResp{} - bMsg, err := http2.Post(url, openIMRegisterReq, config.Config.MessageCallBack.CallBackTimeOut) + bMsg, err := http2.Post(url, openIMRegisterReq, 2) if err != nil { log.NewError(params.OperationID, "request openIM register error", account, "err", err.Error()) c.JSON(http.StatusOK, gin.H{"errCode": constant.RegisterFailed, "errMsg": err.Error()}) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index 5b2dc05d0..3ba0dac08 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -11,10 +11,10 @@ import ( ) func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err error) { - log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) if !config.Config.Callback.CallbackbeforeSendSingleMsg.Enable { return true, nil } + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) req := cbApi.CallbackBeforeSendSingleMsgReq{CommonCallbackReq:cbApi.CommonCallbackReq{ }} resp := &cbApi.CallbackBeforeSendSingleMsgResp{CommonCallbackResp:cbApi.CommonCallbackResp{ @@ -36,10 +36,10 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { - log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) if !config.Config.Callback.CallbackAfterSendSingleMsg.Enable { return nil } + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) req := cbApi.CallbackAfterSendSingleMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{}} resp := &cbApi.CallbackAfterSendSingleMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) @@ -53,10 +53,10 @@ func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error) { - log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) if !config.Config.Callback.CallbackBeforeSendGroupMsg.Enable { return true, nil } + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) req := cbApi.CallbackBeforeSendSingleMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{}} resp := &cbApi.CallbackBeforeSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) @@ -75,10 +75,10 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error } func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { - log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) if !config.Config.Callback.CallbackAfterSendGroupMsg.Enable { return nil } + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) req := cbApi.CallbackAfterSendGroupMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{}} resp := &cbApi.CallbackAfterSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) @@ -92,10 +92,10 @@ func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { func callBackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { - log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) if !config.Config.Callback.CallbackWordFilter.Enable || msg.MsgData.ContentType != constant.Text { return true, nil } + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) req := cbApi.CallbackWordFilterReq{CommonCallbackReq: cbApi.CommonCallbackReq{}} resp := &cbApi.CallbackWordFilterResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) From 9cec4b0c8ebb45ee8dd8f1c2d3a45422e63e9141 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 16:41:17 +0800 Subject: [PATCH 44/81] alter callback fg --- internal/rpc/msg/callback.go | 25 +++++++++++++------------ pkg/common/constant/constant.go | 3 +++ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index 3ba0dac08..0c42b01b3 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -16,10 +16,11 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) req := cbApi.CallbackBeforeSendSingleMsgReq{CommonCallbackReq:cbApi.CommonCallbackReq{ + CallbackCommand: constant.CallbackBeforeSendSingleMsgCommand, }} resp := &cbApi.CallbackBeforeSendSingleMsgResp{CommonCallbackResp:cbApi.CommonCallbackResp{ }} - defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) utils.CopyStructFields(req, msg.MsgData) req.Content = string(msg.MsgData.Content) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackTimeOut); err != nil{ @@ -27,7 +28,7 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro return false, err } } else { - if resp.ActionCode == constant.ActionForbidden { + if resp.ActionCode == constant.ActionForbidden && resp.ErrCode == constant.CallbackHandleSuccess { return false, nil } } @@ -40,9 +41,9 @@ func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { return nil } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - req := cbApi.CallbackAfterSendSingleMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{}} + req := cbApi.CallbackAfterSendSingleMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{CallbackCommand:constant.CallbackAfterSendSingleMsgCommand}} resp := &cbApi.CallbackAfterSendSingleMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} - defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) utils.CopyStructFields(req, msg.MsgData) req.Content = string(msg.MsgData.Content) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendSingleMsg.CallbackTimeOut); err != nil{ @@ -57,9 +58,9 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error return true, nil } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - req := cbApi.CallbackBeforeSendSingleMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{}} + req := cbApi.CallbackBeforeSendSingleMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{CallbackCommand:constant.CallbackBeforeSendGroupMsgCommand}} resp := &cbApi.CallbackBeforeSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} - defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) utils.CopyStructFields(req, msg.MsgData) req.Content = string(msg.MsgData.Content) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackTimeOut); err != nil { @@ -67,7 +68,7 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error return false, nil } } else { - if resp.ActionCode == constant.ActionForbidden { + if resp.ActionCode == constant.ActionForbidden && resp.ErrCode == constant.CallbackHandleSuccess { return false, nil } } @@ -79,9 +80,9 @@ func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { return nil } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - req := cbApi.CallbackAfterSendGroupMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{}} + req := cbApi.CallbackAfterSendGroupMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{CallbackCommand:constant.CallbackAfterSendGroupMsgCommand}} resp := &cbApi.CallbackAfterSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} - defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) utils.CopyStructFields(req, msg.MsgData) req.Content = string(msg.MsgData.Content) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendGroupMsg.CallbackTimeOut); err != nil { @@ -96,9 +97,9 @@ func callBackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { return true, nil } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - req := cbApi.CallbackWordFilterReq{CommonCallbackReq: cbApi.CommonCallbackReq{}} + req := cbApi.CallbackWordFilterReq{CommonCallbackReq: cbApi.CommonCallbackReq{CallbackCommand:constant.CallbackWordFilterCommand}} resp := &cbApi.CallbackWordFilterResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} - defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, resp) + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) utils.CopyStructFields(&req, msg.MsgData) req.Content = string(msg.MsgData.Content) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackWordFilter.CallbackTimeOut); err != nil { @@ -107,7 +108,7 @@ func callBackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { return false, err } } else { - if resp.ActionCode == constant.ActionForbidden { + if resp.ActionCode == constant.ActionForbidden && resp.ErrCode == constant.CallbackHandleSuccess { return false, nil } msg.MsgData.Content = []byte(resp.Content) diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index 9d0c9724b..fa8646d5e 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -146,6 +146,9 @@ const ( //actionCode ActionAllow = 0 ActionForbidden = 1 + //callbackHandleCode + CallbackHandleSuccess = 0 + CallbackHandleFailed = 1 ) var ContentType2PushContent = map[int64]string{ From fb4c02ca9bb6f428c0bf9bc2cfc211ce1fecf447 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 16:47:03 +0800 Subject: [PATCH 45/81] alter callback fg --- internal/rpc/msg/callback.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index 0c42b01b3..0c80adeaa 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -99,9 +99,9 @@ func callBackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) req := cbApi.CallbackWordFilterReq{CommonCallbackReq: cbApi.CommonCallbackReq{CallbackCommand:constant.CallbackWordFilterCommand}} resp := &cbApi.CallbackWordFilterResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} - defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) utils.CopyStructFields(&req, msg.MsgData) req.Content = string(msg.MsgData.Content) + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackWordFilter.CallbackTimeOut); err != nil { if !config.Config.Callback.CallbackWordFilter.CallbackFailedContinue { log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), "config disable, stop this operation") @@ -112,6 +112,7 @@ func callBackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { return false, nil } msg.MsgData.Content = []byte(resp.Content) + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg.MsgData.Content) } return true, nil } From 3698f1dab88d98307f73d8600583b11b0612e68e Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 16:50:06 +0800 Subject: [PATCH 46/81] alter callback fg --- internal/rpc/msg/callback.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index 0c80adeaa..51478fee6 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -20,9 +20,9 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro }} resp := &cbApi.CallbackBeforeSendSingleMsgResp{CommonCallbackResp:cbApi.CommonCallbackResp{ }} - defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) utils.CopyStructFields(req, msg.MsgData) req.Content = string(msg.MsgData.Content) + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackTimeOut); err != nil{ if !config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackFailedContinue { return false, err @@ -43,9 +43,9 @@ func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) req := cbApi.CallbackAfterSendSingleMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{CallbackCommand:constant.CallbackAfterSendSingleMsgCommand}} resp := &cbApi.CallbackAfterSendSingleMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} - defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) utils.CopyStructFields(req, msg.MsgData) req.Content = string(msg.MsgData.Content) + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendSingleMsg.CallbackTimeOut); err != nil{ return err } @@ -60,9 +60,9 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) req := cbApi.CallbackBeforeSendSingleMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{CallbackCommand:constant.CallbackBeforeSendGroupMsgCommand}} resp := &cbApi.CallbackBeforeSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} - defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) utils.CopyStructFields(req, msg.MsgData) req.Content = string(msg.MsgData.Content) + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackTimeOut); err != nil { if !config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackFailedContinue { return false, nil @@ -82,9 +82,9 @@ func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) req := cbApi.CallbackAfterSendGroupMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{CallbackCommand:constant.CallbackAfterSendGroupMsgCommand}} resp := &cbApi.CallbackAfterSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} - defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) utils.CopyStructFields(req, msg.MsgData) req.Content = string(msg.MsgData.Content) + defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendGroupMsg.CallbackTimeOut); err != nil { return err } @@ -112,7 +112,7 @@ func callBackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { return false, nil } msg.MsgData.Content = []byte(resp.Content) - log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg.MsgData.Content) + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), string(msg.MsgData.Content)) } return true, nil } From 2ed3fd3cba58d41bd183df31a1fe161488e80f0a Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 17:53:37 +0800 Subject: [PATCH 47/81] alter callback fg --- internal/rpc/msg/callback.go | 36 ++++++++++++++++++++++++++++----- pkg/call_back_struct/common.go | 14 +++++++++---- pkg/call_back_struct/message.go | 24 ++++++++++------------ 3 files changed, 52 insertions(+), 22 deletions(-) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index 51478fee6..f50552ad8 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -80,9 +80,24 @@ func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { return nil } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - req := cbApi.CallbackAfterSendGroupMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{CallbackCommand:constant.CallbackAfterSendGroupMsgCommand}} + req := cbApi.CallbackAfterSendGroupMsgReq{ + CommonCallbackReq: cbApi.CommonCallbackReq{ + CallbackCommand:constant.CallbackAfterSendGroupMsgCommand, + ServerMsgID: msg.MsgData.ServerMsgID, + ClientMsgID: msg.MsgData.ClientMsgID, + OperationID: msg.OperationID, + + }, + GroupMsg: cbApi.GroupMsg{ + Msg: cbApi.Msg{ + SendID: msg.MsgData. + }, + GroupID: msg.MsgData.GroupID, + } + } resp := &cbApi.CallbackAfterSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} - utils.CopyStructFields(req, msg.MsgData) + + //utils.CopyStructFields(req, msg.MsgData) req.Content = string(msg.MsgData.Content) defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendGroupMsg.CallbackTimeOut); err != nil { @@ -97,10 +112,21 @@ func callBackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { return true, nil } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - req := cbApi.CallbackWordFilterReq{CommonCallbackReq: cbApi.CommonCallbackReq{CallbackCommand:constant.CallbackWordFilterCommand}} + //req := cbApi.CallbackWordFilterReq{ + // CommonCallbackReq: cbApi.CommonCallbackReq{ + // CallbackCommand: constant.CallbackWordFilterCommand, + // ServerMsgID: msg.MsgData.ServerMsgID, + // ClientMsgID: msg.MsgData.ClientMsgID, + // OperationID: msg.OperationID, + // }, + // Content: string(msg.MsgData.Content), + //} + req := cbApi.CallbackWordFilterReq{ + CommonCallbackReq: cbApi.CommonCallbackReq{}, + } + utils.CopyStructFields(req.CommonCallbackReq, msg.MsgData) resp := &cbApi.CallbackWordFilterResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} - utils.CopyStructFields(&req, msg.MsgData) - req.Content = string(msg.MsgData.Content) + //utils.CopyStructFields(&req., msg.MsgData) defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackWordFilter.CallbackTimeOut); err != nil { if !config.Config.Callback.CallbackWordFilter.CallbackFailedContinue { diff --git a/pkg/call_back_struct/common.go b/pkg/call_back_struct/common.go index fa7e4d4d3..5266e0b26 100644 --- a/pkg/call_back_struct/common.go +++ b/pkg/call_back_struct/common.go @@ -1,10 +1,16 @@ package call_back_struct type CommonCallbackReq struct { - CallbackCommand string `json:"callbackCommand"` - ServerMsgID string `json:"serverID"` - ClientID string `json:"clientID"` - OperationID string `json:"operationID"` + CallbackCommand string `json:"callbackCommand"` + ServerMsgID string `json:"serverID"` + ClientMsgID string `json:"clientID"` + OperationID string `json:"operationID"` + SenderPlatformID int32 `json:"senderPlatformID"` + SenderNickname string `json:"senderNickname"` + SessionType int32 `json:"sessionType"` + MsgFrom int32 `json:"MsgFrom"` + ContentType int32 `json:"contentType"` + Status int32 `json:"status"` } type CommonCallbackResp struct { diff --git a/pkg/call_back_struct/message.go b/pkg/call_back_struct/message.go index 97d31a09f..13a67db4a 100644 --- a/pkg/call_back_struct/message.go +++ b/pkg/call_back_struct/message.go @@ -1,54 +1,52 @@ package call_back_struct -type msg struct { +type Msg struct { SendID string `json:"sendID"` - ClientMsgID string `json:"clientMsgID"` - ServerMsgID string `json:"serverMsgId"` CreateTime int64 `json:"createTime"` Content string `json:"content"` } -type singleMsg struct { - msg +type SingleMsg struct { + Msg RecvID string `json:"recvID"` } type CallbackBeforeSendSingleMsgReq struct { CommonCallbackReq - singleMsg + SingleMsg } type CallbackBeforeSendSingleMsgResp struct { CommonCallbackResp - singleMsg + SingleMsg } type CallbackAfterSendSingleMsgReq struct { CommonCallbackReq - singleMsg + SingleMsg } type CallbackAfterSendSingleMsgResp struct { CommonCallbackResp } -type groupMsg struct { - msg +type GroupMsg struct { + Msg GroupID string `json:"groupID"` } type CallbackBeforeSendGroupMsgReq struct { CommonCallbackReq - groupMsg + GroupMsg } type CallbackBeforeSendGroupMsgResp struct { CommonCallbackResp - groupMsg + GroupMsg } type CallbackAfterSendGroupMsgReq struct { - groupMsg + GroupMsg CommonCallbackReq } From 9f80e0a0e6634ab962dad96dce871e8db348e6f6 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 17:54:31 +0800 Subject: [PATCH 48/81] alter callback fg --- internal/rpc/msg/callback.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index f50552ad8..c77400b95 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -88,12 +88,12 @@ func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { OperationID: msg.OperationID, }, - GroupMsg: cbApi.GroupMsg{ - Msg: cbApi.Msg{ - SendID: msg.MsgData. - }, - GroupID: msg.MsgData.GroupID, - } + //GroupMsg: cbApi.GroupMsg{ + // Msg: cbApi.Msg{ + // SendID: msg.MsgData. + // }, + // GroupID: msg.MsgData.GroupID, + //} } resp := &cbApi.CallbackAfterSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} From 4d4520226deb489426a0c80439891b1142235ff4 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 18:49:36 +0800 Subject: [PATCH 49/81] msg callback --- internal/rpc/msg/callback.go | 88 ++++++++++++++++++--------------- pkg/call_back_struct/common.go | 3 ++ pkg/call_back_struct/message.go | 26 ++-------- 3 files changed, 56 insertions(+), 61 deletions(-) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index c77400b95..0fce99edc 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -10,18 +10,38 @@ import ( "Open_IM/pkg/utils" ) +func copyCallbackCommonReqStruct(msg *pbChat.SendMsgReq) cbApi.CommonCallbackReq { + return cbApi.CommonCallbackReq{ + SendID: msg.MsgData.SendID, + ServerMsgID: msg.MsgData.ServerMsgID, + ClientMsgID: msg.MsgData.ClientMsgID, + OperationID: msg.OperationID, + SenderPlatformID: msg.MsgData.SenderPlatformID, + SenderNickname: msg.MsgData.SenderNickname, + SessionType: msg.MsgData.SessionType, + MsgFrom: msg.MsgData.MsgFrom, + ContentType: msg.MsgData.ContentType, + Status: msg.MsgData.Status, + CreateTime: msg.MsgData.CreateTime, + Content: string(msg.MsgData.Content), + } +} + func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err error) { if !config.Config.Callback.CallbackbeforeSendSingleMsg.Enable { return true, nil } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - req := cbApi.CallbackBeforeSendSingleMsgReq{CommonCallbackReq:cbApi.CommonCallbackReq{ - CallbackCommand: constant.CallbackBeforeSendSingleMsgCommand, - }} - resp := &cbApi.CallbackBeforeSendSingleMsgResp{CommonCallbackResp:cbApi.CommonCallbackResp{ - }} - utils.CopyStructFields(req, msg.MsgData) - req.Content = string(msg.MsgData.Content) + commonCallbackReq := copyCallbackCommonReqStruct(msg) + commonCallbackReq.CallbackCommand = constant.CallbackBeforeSendSingleMsgCommand + req := cbApi.CallbackBeforeSendSingleMsgReq{ + CommonCallbackReq: commonCallbackReq, + RecvID: msg.MsgData.RecvID, + } + resp := &cbApi.CallbackBeforeSendSingleMsgResp{ + CommonCallbackResp: cbApi.CommonCallbackResp{}, + } + //utils.CopyStructFields(req, msg.MsgData) defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackTimeOut); err != nil{ if !config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackFailedContinue { @@ -41,10 +61,14 @@ func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { return nil } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - req := cbApi.CallbackAfterSendSingleMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{CallbackCommand:constant.CallbackAfterSendSingleMsgCommand}} + commonCallbackReq := copyCallbackCommonReqStruct(msg) + commonCallbackReq.CallbackCommand = constant.CallbackAfterSendSingleMsgCommand + req := cbApi.CallbackAfterSendSingleMsgReq{ + CommonCallbackReq: commonCallbackReq, + RecvID: msg.MsgData.RecvID, + } resp := &cbApi.CallbackAfterSendSingleMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} - utils.CopyStructFields(req, msg.MsgData) - req.Content = string(msg.MsgData.Content) + //utils.CopyStructFields(req, msg.MsgData) defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendSingleMsg.CallbackTimeOut); err != nil{ return err @@ -58,10 +82,14 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error return true, nil } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - req := cbApi.CallbackBeforeSendSingleMsgReq{CommonCallbackReq: cbApi.CommonCallbackReq{CallbackCommand:constant.CallbackBeforeSendGroupMsgCommand}} + commonCallbackReq := copyCallbackCommonReqStruct(msg) + commonCallbackReq.CallbackCommand = constant.CallbackBeforeSendGroupMsgCommand + req := cbApi.CallbackBeforeSendSingleMsgReq{ + CommonCallbackReq: commonCallbackReq, + RecvID: msg.MsgData.RecvID, + } resp := &cbApi.CallbackBeforeSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} - utils.CopyStructFields(req, msg.MsgData) - req.Content = string(msg.MsgData.Content) + //utils.CopyStructFields(req, msg.MsgData) defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackTimeOut); err != nil { if !config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackFailedContinue { @@ -80,25 +108,15 @@ func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { return nil } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - req := cbApi.CallbackAfterSendGroupMsgReq{ - CommonCallbackReq: cbApi.CommonCallbackReq{ - CallbackCommand:constant.CallbackAfterSendGroupMsgCommand, - ServerMsgID: msg.MsgData.ServerMsgID, - ClientMsgID: msg.MsgData.ClientMsgID, - OperationID: msg.OperationID, - - }, - //GroupMsg: cbApi.GroupMsg{ - // Msg: cbApi.Msg{ - // SendID: msg.MsgData. - // }, - // GroupID: msg.MsgData.GroupID, - //} + commonCallbackReq := copyCallbackCommonReqStruct(msg) + commonCallbackReq.CallbackCommand = constant.CallbackBeforeSendGroupMsgCommand + req := cbApi.CallbackBeforeSendSingleMsgReq{ + CommonCallbackReq: commonCallbackReq, + RecvID: msg.MsgData.RecvID, } resp := &cbApi.CallbackAfterSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} //utils.CopyStructFields(req, msg.MsgData) - req.Content = string(msg.MsgData.Content) defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendGroupMsg.CallbackTimeOut); err != nil { return err @@ -112,19 +130,11 @@ func callBackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { return true, nil } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - //req := cbApi.CallbackWordFilterReq{ - // CommonCallbackReq: cbApi.CommonCallbackReq{ - // CallbackCommand: constant.CallbackWordFilterCommand, - // ServerMsgID: msg.MsgData.ServerMsgID, - // ClientMsgID: msg.MsgData.ClientMsgID, - // OperationID: msg.OperationID, - // }, - // Content: string(msg.MsgData.Content), - //} + commonCallbackReq := copyCallbackCommonReqStruct(msg) + commonCallbackReq.CallbackCommand = constant.CallbackWordFilterCommand req := cbApi.CallbackWordFilterReq{ - CommonCallbackReq: cbApi.CommonCallbackReq{}, + CommonCallbackReq: commonCallbackReq, } - utils.CopyStructFields(req.CommonCallbackReq, msg.MsgData) resp := &cbApi.CallbackWordFilterResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} //utils.CopyStructFields(&req., msg.MsgData) defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) diff --git a/pkg/call_back_struct/common.go b/pkg/call_back_struct/common.go index 5266e0b26..5e33889fe 100644 --- a/pkg/call_back_struct/common.go +++ b/pkg/call_back_struct/common.go @@ -1,6 +1,7 @@ package call_back_struct type CommonCallbackReq struct { + SendID string `json:"sendID"` CallbackCommand string `json:"callbackCommand"` ServerMsgID string `json:"serverID"` ClientMsgID string `json:"clientID"` @@ -11,6 +12,8 @@ type CommonCallbackReq struct { MsgFrom int32 `json:"MsgFrom"` ContentType int32 `json:"contentType"` Status int32 `json:"status"` + CreateTime int64 `json:"createTime"` + Content string `json:"content"` } type CommonCallbackResp struct { diff --git a/pkg/call_back_struct/message.go b/pkg/call_back_struct/message.go index 13a67db4a..31c215ea2 100644 --- a/pkg/call_back_struct/message.go +++ b/pkg/call_back_struct/message.go @@ -1,53 +1,36 @@ package call_back_struct -type Msg struct { - SendID string `json:"sendID"` - CreateTime int64 `json:"createTime"` - Content string `json:"content"` -} - -type SingleMsg struct { - Msg - RecvID string `json:"recvID"` -} type CallbackBeforeSendSingleMsgReq struct { CommonCallbackReq - SingleMsg + RecvID string `json:"recvID"` } type CallbackBeforeSendSingleMsgResp struct { CommonCallbackResp - SingleMsg } type CallbackAfterSendSingleMsgReq struct { CommonCallbackReq - SingleMsg + RecvID string `json:"recvID"` } type CallbackAfterSendSingleMsgResp struct { CommonCallbackResp } -type GroupMsg struct { - Msg - GroupID string `json:"groupID"` -} - type CallbackBeforeSendGroupMsgReq struct { CommonCallbackReq - GroupMsg + GroupID string `json:"groupID"` } type CallbackBeforeSendGroupMsgResp struct { CommonCallbackResp - GroupMsg } type CallbackAfterSendGroupMsgReq struct { - GroupMsg CommonCallbackReq + GroupID string `json:"groupID"` } type CallbackAfterSendGroupMsgResp struct { @@ -56,7 +39,6 @@ type CallbackAfterSendGroupMsgResp struct { type CallbackWordFilterReq struct { CommonCallbackReq - Content string `json:"content"` } type CallbackWordFilterResp struct { From 7deffeffd8e00726af9614b16b814dc713c08d54 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 19:06:00 +0800 Subject: [PATCH 50/81] msg callback --- config/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index 578113f19..0259c23be 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -212,7 +212,7 @@ callback: callbackWordFilter: enable: true callbackTimeOut: 5 - CallbackFailedContinue: true + CallbackFailedContinue: false notification: From 02510528d125f93f0854d44abcd68cc99713d870 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 19:09:59 +0800 Subject: [PATCH 51/81] msg callback --- config/config.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 0259c23be..6e00a21f2 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -196,18 +196,18 @@ callback: callbackUrl : "http://127.0.0.1:8080/callback" # 开启关闭操作前后回调的配置 callbackbeforeSendSingleMsg: - enable: false # 回调是否启用 + enable: true # 回调是否启用 callbackTimeOut: 5 # 回调超时时间 CallbackFailedContinue: true # 回调超时是否继续执行代码 callbackAfterSendSingleMsg: - enable: false + enable: true callbackTimeOut: 5 callbackBeforeSendGroupMsg: - enable: false + enable: true callbackTimeOut: 5 CallbackFailedContinue: true callbackAfterSendGroupMsg: - enable: false + enable: true callbackTimeOut: 5 callbackWordFilter: enable: true From 88b8a5323acb33989817c0014b7e3ad47ff87013 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 19:23:16 +0800 Subject: [PATCH 52/81] msg callback --- config/config.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 6e00a21f2..04d89d8fe 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -197,22 +197,22 @@ callback: # 开启关闭操作前后回调的配置 callbackbeforeSendSingleMsg: enable: true # 回调是否启用 - callbackTimeOut: 5 # 回调超时时间 + callbackTimeOut: 2 # 回调超时时间 CallbackFailedContinue: true # 回调超时是否继续执行代码 callbackAfterSendSingleMsg: enable: true - callbackTimeOut: 5 + callbackTimeOut: 2 callbackBeforeSendGroupMsg: enable: true - callbackTimeOut: 5 + callbackTimeOut: 2 CallbackFailedContinue: true callbackAfterSendGroupMsg: enable: true - callbackTimeOut: 5 + callbackTimeOut: 2 callbackWordFilter: enable: true - callbackTimeOut: 5 - CallbackFailedContinue: false + callbackTimeOut: 2 + CallbackFailedContinue: true notification: From 3805db1263caab0ee57695217310d6e1f934bc16 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 19:39:49 +0800 Subject: [PATCH 53/81] msg callback --- internal/rpc/msg/callback.go | 13 +++++++++---- internal/rpc/msg/send_msg.go | 2 +- pkg/common/config/config.go | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index 0fce99edc..54ff93786 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -28,7 +28,8 @@ func copyCallbackCommonReqStruct(msg *pbChat.SendMsgReq) cbApi.CommonCallbackReq } func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err error) { - if !config.Config.Callback.CallbackbeforeSendSingleMsg.Enable { + log.NewDebug(msg.OperationID, config.Config.Callback.CallbackBeforeSendSingleMsg.Enable) + if !config.Config.Callback.CallbackBeforeSendSingleMsg.Enable { return true, nil } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) @@ -43,8 +44,8 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro } //utils.CopyStructFields(req, msg.MsgData) defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) - if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackTimeOut); err != nil{ - if !config.Config.Callback.CallbackbeforeSendSingleMsg.CallbackFailedContinue { + if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSendSingleMsg.CallbackTimeOut); err != nil{ + if !config.Config.Callback.CallbackBeforeSendSingleMsg.CallbackFailedContinue { return false, err } } else { @@ -57,6 +58,7 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { + log.NewDebug(msg.OperationID, config.Config.Callback.CallbackAfterSendSingleMsg.Enable) if !config.Config.Callback.CallbackAfterSendSingleMsg.Enable { return nil } @@ -78,6 +80,7 @@ func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error) { + log.NewDebug(msg.OperationID, config.Config.Callback.CallbackBeforeSendGroupMsg.Enable) if !config.Config.Callback.CallbackBeforeSendGroupMsg.Enable { return true, nil } @@ -104,6 +107,7 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error } func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { + log.NewDebug(msg.OperationID, config.Config.Callback.CallbackAfterSendGroupMsg.Enable) if !config.Config.Callback.CallbackAfterSendGroupMsg.Enable { return nil } @@ -125,7 +129,8 @@ func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { } -func callBackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { +func callbackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { + log.NewDebug(msg.OperationID, config.Config.Callback.CallbackWordFilter.Enable) if !config.Config.Callback.CallbackWordFilter.Enable || msg.MsgData.ContentType != constant.Text { return true, nil } diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 86a28d480..16720575a 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -126,7 +126,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S } // callback - canSend, err := callBackWordFilter(pb) + canSend, err := callbackWordFilter(pb) if err != nil { log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallbackBeforeSendMsg failed", err.Error(), pb.MsgData) } diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 4782276e7..c249b00ad 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -183,7 +183,7 @@ type config struct { Callback struct { CallbackUrl string `yaml:"callbackUrl"` - CallbackbeforeSendSingleMsg callBackConfig `yaml:"callbackSendGroupMsg"` + CallbackBeforeSendSingleMsg callBackConfig `yaml:"callbackSendGroupMsg"` CallbackAfterSendSingleMsg callBackConfig `yaml:"callbackSendSingleMsg"` CallbackBeforeSendGroupMsg callBackConfig `yaml:"CallbackBeforeSendGroupMsg"` CallbackAfterSendGroupMsg callBackConfig `yaml:"callbackAfterSendGroupMsg"` From a5712e1216bfbc42df25ec7f24efe1373613afb8 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 19:44:34 +0800 Subject: [PATCH 54/81] msg callback --- pkg/common/config/config.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index c249b00ad..282440672 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -183,9 +183,9 @@ type config struct { Callback struct { CallbackUrl string `yaml:"callbackUrl"` - CallbackBeforeSendSingleMsg callBackConfig `yaml:"callbackSendGroupMsg"` - CallbackAfterSendSingleMsg callBackConfig `yaml:"callbackSendSingleMsg"` - CallbackBeforeSendGroupMsg callBackConfig `yaml:"CallbackBeforeSendGroupMsg"` + CallbackBeforeSendSingleMsg callBackConfig `yaml:"callbackbeforeSendSingleMsg"` + CallbackAfterSendSingleMsg callBackConfig `yaml:"callbackAfterSendSingleMsg"` + CallbackBeforeSendGroupMsg callBackConfig `yaml:"callbackBeforeSendGroupMsg"` CallbackAfterSendGroupMsg callBackConfig `yaml:"callbackAfterSendGroupMsg"` CallbackWordFilter callBackConfig `yaml:"callbackWordFilter"` } `yaml:"callback"` From 399d0b94d5f2869fdf52681f18615523e5fb3e34 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 3 Mar 2022 19:47:30 +0800 Subject: [PATCH 55/81] msg callback --- config/config.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 04d89d8fe..4d3990194 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -196,21 +196,21 @@ callback: callbackUrl : "http://127.0.0.1:8080/callback" # 开启关闭操作前后回调的配置 callbackbeforeSendSingleMsg: - enable: true # 回调是否启用 + enable: false # 回调是否启用 callbackTimeOut: 2 # 回调超时时间 CallbackFailedContinue: true # 回调超时是否继续执行代码 callbackAfterSendSingleMsg: - enable: true + enable: false callbackTimeOut: 2 callbackBeforeSendGroupMsg: - enable: true + enable: false callbackTimeOut: 2 CallbackFailedContinue: true callbackAfterSendGroupMsg: - enable: true + enable: false callbackTimeOut: 2 callbackWordFilter: - enable: true + enable: false callbackTimeOut: 2 CallbackFailedContinue: true From bcae7720e104335e6c11ad8f4f4ab6c99bdf460a Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 4 Mar 2022 14:27:54 +0800 Subject: [PATCH 56/81] add callback --- cmd/open_im_api/main.go | 2 +- config/config.yaml | 14 +++++++------- internal/api/third/minio_init.go | 2 +- internal/rpc/msg/callback.go | 10 ++++++---- internal/rpc/msg/send_msg.go | 25 ++++++++++++++----------- pkg/call_back_struct/common.go | 6 +++--- pkg/common/constant/constant.go | 10 +++++----- 7 files changed, 37 insertions(+), 32 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index d5c01986b..551a37a0e 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -102,7 +102,7 @@ func main() { conversationGroup.POST("/get_receive_message_opt", conversation.GetReceiveMessageOpt) //1 conversationGroup.POST("/get_all_conversation_message_opt", conversation.GetAllConversationMessageOpt) //1 } - + apiThird.MinioInit() log.NewPrivateLog("api") ginPort := flag.Int("port", 10000, "get ginServerPort from cmd,default 10000 as port") flag.Parse() diff --git a/config/config.yaml b/config/config.yaml index 4d3990194..7d326758d 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -91,8 +91,8 @@ credential: #腾讯cos,发送图片、视频、文件时需要,请自行申 bucket: openim location: us-east-1 endpoint: http://127.0.0.1:9000 - accessKeyID: minioadmin - secretAccessKey: minioadmin + accessKeyID: user12345 + secretAccessKey: key12345 rpcport: #rpc服务端口 默认即可 @@ -196,21 +196,21 @@ callback: callbackUrl : "http://127.0.0.1:8080/callback" # 开启关闭操作前后回调的配置 callbackbeforeSendSingleMsg: - enable: false # 回调是否启用 + enable: true # 回调是否启用 callbackTimeOut: 2 # 回调超时时间 CallbackFailedContinue: true # 回调超时是否继续执行代码 callbackAfterSendSingleMsg: - enable: false + enable: true callbackTimeOut: 2 callbackBeforeSendGroupMsg: - enable: false + enable: true callbackTimeOut: 2 CallbackFailedContinue: true callbackAfterSendGroupMsg: - enable: false + enable: true callbackTimeOut: 2 callbackWordFilter: - enable: false + enable: true callbackTimeOut: 2 CallbackFailedContinue: true diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index 8dae26d9f..29338ee77 100644 --- a/internal/api/third/minio_init.go +++ b/internal/api/third/minio_init.go @@ -10,7 +10,7 @@ import ( url2 "net/url" ) -func init() { +func MinioInit() { minioUrl, err := url2.Parse(config.Config.Credential.Minio.Endpoint) if err != nil { log.NewError("", utils.GetSelfFuncName(), "parse failed, please check config/config.yaml", err.Error()) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index 54ff93786..c560fff95 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -113,10 +113,10 @@ func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) commonCallbackReq := copyCallbackCommonReqStruct(msg) - commonCallbackReq.CallbackCommand = constant.CallbackBeforeSendGroupMsgCommand - req := cbApi.CallbackBeforeSendSingleMsgReq{ + commonCallbackReq.CallbackCommand = constant.CallbackAfterSendGroupMsgCommand + req := cbApi.CallbackAfterSendGroupMsgReq{ CommonCallbackReq: commonCallbackReq, - RecvID: msg.MsgData.RecvID, + GroupID: msg.MsgData.GroupID, } resp := &cbApi.CallbackAfterSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} @@ -152,7 +152,9 @@ func callbackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { if resp.ActionCode == constant.ActionForbidden && resp.ErrCode == constant.CallbackHandleSuccess { return false, nil } - msg.MsgData.Content = []byte(resp.Content) + if resp.ErrCode == constant.CallbackHandleSuccess { + msg.MsgData.Content = []byte(resp.Content) + } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), string(msg.MsgData.Content)) } return true, nil diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 16720575a..739a28171 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -128,21 +128,22 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S // callback canSend, err := callbackWordFilter(pb) if err != nil { - log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallbackBeforeSendMsg failed", err.Error(), pb.MsgData) + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackWordFilter failed", err.Error(), pb.MsgData) } if !canSend { - log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callback result", canSend, "end rpc and return", pb.MsgData) - return returnMsg(&replay, pb, 201, "callback result stop rpc and return", "", 0) + log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackWordFilter result", canSend, "end rpc and return", pb.MsgData) + return returnMsg(&replay, pb, 201, "callbackWordFilter result stop rpc and return", "", 0) } switch pb.MsgData.SessionType { case constant.SingleChatType: + // callback canSend, err := callbackBeforeSendSingleMsg(pb) if err != nil { - log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallBackAfterSendMsg failed", err.Error()) + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg failed", err.Error()) } if !canSend { - log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callback result", canSend, "end rpc and return") - return returnMsg(&replay, pb, 201, "callback result stop rpc and return", "", 0) + log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg result", canSend, "end rpc and return") + return returnMsg(&replay, pb, 201, "callbackBeforeSendSingleMsg result stop rpc and return", "", 0) } isSend := modifyMessageByUserMessageReceiveOpt(pb.MsgData.RecvID, pb.MsgData.SendID, constant.SingleChatType, pb) if isSend { @@ -161,18 +162,20 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) } } + // callback if err := callbackAfterSendSingleMsg(pb); err != nil { - log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallBackAfterSendMsg failed", err.Error()) + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackAfterSendSingleMsg failed", err.Error()) } return returnMsg(&replay, pb, 0, "", msgToMQ.MsgData.ServerMsgID, msgToMQ.MsgData.SendTime) case constant.GroupChatType: + // callback canSend, err := callbackBeforeSendGroupMsg(pb) if err != nil { - log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallBackAfterSendMsg failed", err.Error()) + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendGroupMsg failed", err.Error()) } if !canSend { - log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callback result", canSend, "end rpc and return") - return returnMsg(&replay, pb, 201, "callback result stop rpc and return", "", 0) + log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendGroupMsg result", canSend, "end rpc and return") + return returnMsg(&replay, pb, 201, "callbackBeforeSendGroupMsg result stop rpc and return", "", 0) } etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) client := pbGroup.NewGroupClient(etcdConn) @@ -237,8 +240,8 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) } } - } + // callback if err := callbackAfterSendGroupMsg(pb); err != nil { log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallBackAfterSendMsg failed", err.Error()) } diff --git a/pkg/call_back_struct/common.go b/pkg/call_back_struct/common.go index 5e33889fe..e2bf510f4 100644 --- a/pkg/call_back_struct/common.go +++ b/pkg/call_back_struct/common.go @@ -3,13 +3,13 @@ package call_back_struct type CommonCallbackReq struct { SendID string `json:"sendID"` CallbackCommand string `json:"callbackCommand"` - ServerMsgID string `json:"serverID"` - ClientMsgID string `json:"clientID"` + ServerMsgID string `json:"serverMsgID"` + ClientMsgID string `json:"clientMsgID"` OperationID string `json:"operationID"` SenderPlatformID int32 `json:"senderPlatformID"` SenderNickname string `json:"senderNickname"` SessionType int32 `json:"sessionType"` - MsgFrom int32 `json:"MsgFrom"` + MsgFrom int32 `json:"msgFrom"` ContentType int32 `json:"contentType"` Status int32 `json:"status"` CreateTime int64 `json:"createTime"` diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index fa8646d5e..199a1917a 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -138,15 +138,15 @@ const ( VerificationCodeForResetSuffix = "_forReset" //callbackCommand - CallbackBeforeSendSingleMsgCommand = "callbackBeforeSendSingleMsg" - CallbackAfterSendSingleMsgCommand = "callbackAfterSendSingleMsg" - CallbackBeforeSendGroupMsgCommand = "callbackBeforeSendGroupMsg" + CallbackBeforeSendSingleMsgCommand = "callbackBeforeSendSingleMsgCommand" + CallbackAfterSendSingleMsgCommand = "callbackAfterSendSingleMsgCommand" + CallbackBeforeSendGroupMsgCommand = "callbackBeforeSendGroupMsgCommand" CallbackAfterSendGroupMsgCommand = "callbackAfterSendGroupMsgCommand" CallbackWordFilterCommand = "callbackWordFilterCommand" - //actionCode + //callback actionCode ActionAllow = 0 ActionForbidden = 1 - //callbackHandleCode + //callback callbackHandleCode CallbackHandleSuccess = 0 CallbackHandleFailed = 1 ) From c108115c830d90584271b4cd61930016e4766ea4 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 4 Mar 2022 15:20:59 +0800 Subject: [PATCH 57/81] add callback --- internal/rpc/msg/callback.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index c560fff95..9dc90eb50 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -53,7 +53,7 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro return false, nil } } - return true, nil + return true, err } @@ -87,23 +87,23 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) commonCallbackReq := copyCallbackCommonReqStruct(msg) commonCallbackReq.CallbackCommand = constant.CallbackBeforeSendGroupMsgCommand - req := cbApi.CallbackBeforeSendSingleMsgReq{ + req := cbApi.CallbackAfterSendGroupMsgReq{ CommonCallbackReq: commonCallbackReq, - RecvID: msg.MsgData.RecvID, + GroupID: msg.MsgData.GroupID, } resp := &cbApi.CallbackBeforeSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} //utils.CopyStructFields(req, msg.MsgData) defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackTimeOut); err != nil { if !config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackFailedContinue { - return false, nil + return false, err } } else { if resp.ActionCode == constant.ActionForbidden && resp.ErrCode == constant.CallbackHandleSuccess { return false, nil } } - return true, nil + return true, err } func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { @@ -145,7 +145,7 @@ func callbackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackWordFilter.CallbackTimeOut); err != nil { if !config.Config.Callback.CallbackWordFilter.CallbackFailedContinue { - log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), "config disable, stop this operation") + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), "callback failed and config disable, stop this operation") return false, err } } else { @@ -157,7 +157,7 @@ func callbackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), string(msg.MsgData.Content)) } - return true, nil + return true, err } From 8dc04667b00e316459cf0c655b433f5831c2594e Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 4 Mar 2022 16:11:04 +0800 Subject: [PATCH 58/81] test recover --- internal/msg_gateway/gate/ws_server.go | 21 +++-- internal/msg_transfer/logic/init.go | 2 +- internal/push/logic/push_to_client.go | 126 +++++++++++++------------ pkg/statistics/statistics.go | 7 +- 4 files changed, 80 insertions(+), 76 deletions(-) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index ff7e739c8..477d43420 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -5,6 +5,7 @@ import ( "Open_IM/pkg/common/constant" "Open_IM/pkg/common/db" "Open_IM/pkg/common/log" + "Open_IM/pkg/common/token_verify" "Open_IM/pkg/utils" "bytes" "encoding/gob" @@ -257,16 +258,16 @@ func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request) bool { status := http.StatusUnauthorized query := r.URL.Query() if len(query["token"]) != 0 && len(query["sendID"]) != 0 && len(query["platformID"]) != 0 { - //if ok, err := token_verify.VerifyToken(query["token"][0], query["sendID"][0]); !ok { - // e := err.(*constant.ErrInfo) - // log.ErrorByKv("Token verify failed", "", "query", query) - // w.Header().Set("Sec-Websocket-Version", "13") - // http.Error(w, e.ErrMsg, int(e.ErrCode)) - // return false - //} else { - log.InfoByKv("Connection Authentication Success", "", "token", query["token"][0], "userID", query["sendID"][0]) - return true - //} + if ok, err := token_verify.VerifyToken(query["token"][0], query["sendID"][0]); !ok { + e := err.(*constant.ErrInfo) + log.ErrorByKv("Token verify failed", "", "query", query) + w.Header().Set("Sec-Websocket-Version", "13") + http.Error(w, e.ErrMsg, int(e.ErrCode)) + return false + } else { + log.InfoByKv("Connection Authentication Success", "", "token", query["token"][0], "userID", query["sendID"][0]) + return true + } } else { log.ErrorByKv("Args err", "", "query", query) w.Header().Set("Sec-Websocket-Version", "13") diff --git a/internal/msg_transfer/logic/init.go b/internal/msg_transfer/logic/init.go index 7d1cad671..cce434d99 100644 --- a/internal/msg_transfer/logic/init.go +++ b/internal/msg_transfer/logic/init.go @@ -20,6 +20,6 @@ func Init() { } func Run() { //register mysqlConsumerHandler to - //go persistentCH.persistentConsumerGroup.RegisterHandleAndConsumer(&persistentCH) + go persistentCH.persistentConsumerGroup.RegisterHandleAndConsumer(&persistentCH) go historyCH.historyConsumerGroup.RegisterHandleAndConsumer(&historyCH) } diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go index 11d090ac5..a5a6397f2 100644 --- a/internal/push/logic/push_to_client.go +++ b/internal/push/logic/push_to_client.go @@ -7,12 +7,16 @@ package logic import ( + push "Open_IM/internal/push/jpush" "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" "Open_IM/pkg/grpc-etcdv3/getcdv3" pbPush "Open_IM/pkg/proto/push" pbRelay "Open_IM/pkg/proto/relay" + "Open_IM/pkg/utils" "context" + "encoding/json" "strings" ) @@ -30,7 +34,7 @@ type AtContent struct { func MsgToUser(pushMsg *pbPush.PushMsgReq) { var wsResult []*pbRelay.SingleMsgToUser - //isOfflinePush := utils.GetSwitchFromOptions(pushMsg.MsgData.Options, constant.IsOfflinePush) + isOfflinePush := utils.GetSwitchFromOptions(pushMsg.MsgData.Options, constant.IsOfflinePush) log.Debug("Get msg from msg_transfer And push msg", pushMsg.OperationID, "PushData", pushMsg.String()) grpcCons := getcdv3.GetConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOnlineMessageRelayName) //Online push message @@ -48,66 +52,66 @@ func MsgToUser(pushMsg *pbPush.PushMsgReq) { } log.InfoByKv("push_result", pushMsg.OperationID, "result", wsResult, "sendData", pushMsg.MsgData) count++ - //if isOfflinePush && pushMsg.PushToUserID != pushMsg.MsgData.SendID { - // for _, v := range wsResult { - // if v.ResultCode == 0 { - // continue - // } - // //supported terminal - // for _, t := range pushTerminal { - // if v.RecvPlatFormID == t { - // //Use offline push messaging - // var UIDList []string - // UIDList = append(UIDList, v.RecvID) - // customContent := OpenIMContent{ - // SessionType: int(pushMsg.MsgData.SessionType), - // From: pushMsg.MsgData.SendID, - // To: pushMsg.MsgData.RecvID, - // Seq: pushMsg.MsgData.Seq, - // } - // bCustomContent, _ := json.Marshal(customContent) - // jsonCustomContent := string(bCustomContent) - // var content string - // if pushMsg.MsgData.OfflinePushInfo != nil { - // content = pushMsg.MsgData.OfflinePushInfo.Title - // - // } else { - // switch pushMsg.MsgData.ContentType { - // case constant.Text: - // content = constant.ContentType2PushContent[constant.Text] - // case constant.Picture: - // content = constant.ContentType2PushContent[constant.Picture] - // case constant.Voice: - // content = constant.ContentType2PushContent[constant.Voice] - // case constant.Video: - // content = constant.ContentType2PushContent[constant.Video] - // case constant.File: - // content = constant.ContentType2PushContent[constant.File] - // case constant.AtText: - // a := AtContent{} - // _ = utils.JsonStringToStruct(string(pushMsg.MsgData.Content), &a) - // if utils.IsContain(v.RecvID, a.AtUserList) { - // content = constant.ContentType2PushContent[constant.AtText] + constant.ContentType2PushContent[constant.Common] - // } else { - // content = constant.ContentType2PushContent[constant.GroupMsg] - // } - // default: - // content = constant.ContentType2PushContent[constant.Common] - // } - // } - // - // pushResult, err := push.JGAccountListPush(UIDList, content, jsonCustomContent, constant.PlatformIDToName(t)) - // if err != nil { - // log.NewError(pushMsg.OperationID, "offline push error", pushMsg.String(), err.Error(), constant.PlatformIDToName(t)) - // } else { - // log.NewDebug(pushMsg.OperationID, "offline push return result is ", string(pushResult), pushMsg.MsgData, constant.PlatformIDToName(t)) - // } - // - // } - // } - // } - // - //} + if isOfflinePush && pushMsg.PushToUserID != pushMsg.MsgData.SendID { + for _, v := range wsResult { + if v.ResultCode == 0 { + continue + } + //supported terminal + for _, t := range pushTerminal { + if v.RecvPlatFormID == t { + //Use offline push messaging + var UIDList []string + UIDList = append(UIDList, v.RecvID) + customContent := OpenIMContent{ + SessionType: int(pushMsg.MsgData.SessionType), + From: pushMsg.MsgData.SendID, + To: pushMsg.MsgData.RecvID, + Seq: pushMsg.MsgData.Seq, + } + bCustomContent, _ := json.Marshal(customContent) + jsonCustomContent := string(bCustomContent) + var content string + if pushMsg.MsgData.OfflinePushInfo != nil { + content = pushMsg.MsgData.OfflinePushInfo.Title + + } else { + switch pushMsg.MsgData.ContentType { + case constant.Text: + content = constant.ContentType2PushContent[constant.Text] + case constant.Picture: + content = constant.ContentType2PushContent[constant.Picture] + case constant.Voice: + content = constant.ContentType2PushContent[constant.Voice] + case constant.Video: + content = constant.ContentType2PushContent[constant.Video] + case constant.File: + content = constant.ContentType2PushContent[constant.File] + case constant.AtText: + a := AtContent{} + _ = utils.JsonStringToStruct(string(pushMsg.MsgData.Content), &a) + if utils.IsContain(v.RecvID, a.AtUserList) { + content = constant.ContentType2PushContent[constant.AtText] + constant.ContentType2PushContent[constant.Common] + } else { + content = constant.ContentType2PushContent[constant.GroupMsg] + } + default: + content = constant.ContentType2PushContent[constant.Common] + } + } + + pushResult, err := push.JGAccountListPush(UIDList, content, jsonCustomContent, constant.PlatformIDToName(t)) + if err != nil { + log.NewError(pushMsg.OperationID, "offline push error", pushMsg.String(), err.Error(), constant.PlatformIDToName(t)) + } else { + log.NewDebug(pushMsg.OperationID, "offline push return result is ", string(pushResult), pushMsg.MsgData, constant.PlatformIDToName(t)) + } + + } + } + } + + } } //func SendMsgByWS(m *pbChat.WSToMsgSvrChatMsg) { diff --git a/pkg/statistics/statistics.go b/pkg/statistics/statistics.go index bea4479bd..2711c5d91 100644 --- a/pkg/statistics/statistics.go +++ b/pkg/statistics/statistics.go @@ -1,7 +1,6 @@ package statistics import ( - "Open_IM/pkg/common/log" "time" ) @@ -15,13 +14,13 @@ type Statistics struct { func (s *Statistics) output() { t := time.NewTicker(time.Duration(s.SleepTime) * time.Second) defer t.Stop() - var sum uint64 + //var sum uint64 for { - sum = *s.Count + //sum = *s.Count select { case <-t.C: } - log.NewWarn("", " system stat ", s.ModuleName, s.PrintArgs, *s.Count-sum, "total:", *s.Count) + //log.NewWarn("", " system stat ", s.ModuleName, s.PrintArgs, *s.Count-sum, "total:", *s.Count) } } From d6e7cfb04415aacda522242d032d0d9d45175184 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 4 Mar 2022 16:24:28 +0800 Subject: [PATCH 59/81] shell update --- config/config.yaml | 5 +++-- script/sdk_svr_start.sh | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 7d326758d..72d45568e 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -131,8 +131,9 @@ rpcregistername: #rpc注册服务名,默认即可 log: storageLocation: ../logs/ rotationTime: 24 - remainRotationCount: 5 #日志数量 - remainLogLevel: 6 #日志级别 6表示全都打印,测试阶段建议设置为6 + remainRotationCount: 3 #日志数量 + #日志级别 6表示全都打印,测试阶段建议设置为6 + remainLogLevel: 6 elasticSearchSwitch: false elasticSearchAddr: [ 127.0.0.1:9201 ] elasticSearchUser: "" diff --git a/script/sdk_svr_start.sh b/script/sdk_svr_start.sh index e9604e5ea..5f47228dc 100644 --- a/script/sdk_svr_start.sh +++ b/script/sdk_svr_start.sh @@ -6,6 +6,7 @@ source ./function.sh list1=$(cat $config_path | grep openImApiPort | awk -F '[:]' '{print $NF}') list2=$(cat $config_path | grep openImWsPort | awk -F '[:]' '{print $NF}') list3=$(cat $config_path | grep openImSdkWsPort | awk -F '[:]' '{print $NF}') +logLevel=$(cat $config_path | grep remainLogLevel | awk -F '[:]' '{print $NF}') list_to_string $list1 api_ports=($ports_array) list_to_string $list2 @@ -26,7 +27,7 @@ fi #Waiting port recycling sleep 1 cd ${sdk_server_binary_root} - nohup ./${sdk_server_name} -openIM_api_port ${api_ports[0]} -openIM_ws_port ${ws_ports[0]} -sdk_ws_port ${sdk_ws_ports[0]} >>../logs/openIM.log 2>&1 & + nohup ./${sdk_server_name} -openIM_api_port ${api_ports[0]} -openIM_ws_port ${ws_ports[0]} -sdk_ws_port ${sdk_ws_ports[0]} -openIM_log_level ${logLevel} >>../logs/openIM.log 2>&1 & #Check launched service process sleep 3 From 95f6035aa855184cf52b4d1fcaf46c374d6087f1 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 4 Mar 2022 16:37:49 +0800 Subject: [PATCH 60/81] add cb --- config/config.yaml | 8 ++++---- internal/rpc/msg/callback.go | 7 ++----- internal/rpc/msg/send_msg.go | 2 +- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 7d326758d..3f4e853e6 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -196,18 +196,18 @@ callback: callbackUrl : "http://127.0.0.1:8080/callback" # 开启关闭操作前后回调的配置 callbackbeforeSendSingleMsg: - enable: true # 回调是否启用 + enable: false # 回调是否启用 callbackTimeOut: 2 # 回调超时时间 CallbackFailedContinue: true # 回调超时是否继续执行代码 callbackAfterSendSingleMsg: - enable: true + enable: false callbackTimeOut: 2 callbackBeforeSendGroupMsg: - enable: true + enable: false callbackTimeOut: 2 CallbackFailedContinue: true callbackAfterSendGroupMsg: - enable: true + enable: false callbackTimeOut: 2 callbackWordFilter: enable: true diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index 9dc90eb50..a09b1e87c 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -28,7 +28,6 @@ func copyCallbackCommonReqStruct(msg *pbChat.SendMsgReq) cbApi.CommonCallbackReq } func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err error) { - log.NewDebug(msg.OperationID, config.Config.Callback.CallbackBeforeSendSingleMsg.Enable) if !config.Config.Callback.CallbackBeforeSendSingleMsg.Enable { return true, nil } @@ -58,7 +57,6 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { - log.NewDebug(msg.OperationID, config.Config.Callback.CallbackAfterSendSingleMsg.Enable) if !config.Config.Callback.CallbackAfterSendSingleMsg.Enable { return nil } @@ -80,7 +78,6 @@ func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error) { - log.NewDebug(msg.OperationID, config.Config.Callback.CallbackBeforeSendGroupMsg.Enable) if !config.Config.Callback.CallbackBeforeSendGroupMsg.Enable { return true, nil } @@ -103,11 +100,11 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error return false, nil } } + log.NewInfo() return true, err } func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { - log.NewDebug(msg.OperationID, config.Config.Callback.CallbackAfterSendGroupMsg.Enable) if !config.Config.Callback.CallbackAfterSendGroupMsg.Enable { return nil } @@ -130,7 +127,6 @@ func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { func callbackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { - log.NewDebug(msg.OperationID, config.Config.Callback.CallbackWordFilter.Enable) if !config.Config.Callback.CallbackWordFilter.Enable || msg.MsgData.ContentType != constant.Text { return true, nil } @@ -157,6 +153,7 @@ func callbackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), string(msg.MsgData.Content)) } + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), err.Error()) return true, err } diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 739a28171..af8f40b4f 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -243,7 +243,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S } // callback if err := callbackAfterSendGroupMsg(pb); err != nil { - log.NewError(pb.OperationID, utils.GetSelfFuncName(), "CallBackAfterSendMsg failed", err.Error()) + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackAfterSendGroupMsg failed", err.Error()) } return returnMsg(&replay, pb, 0, "", msgToMQ.MsgData.ServerMsgID, msgToMQ.MsgData.SendTime) default: From af2917adb9d952c86002dc51c27eed1deb1916a1 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 4 Mar 2022 16:38:53 +0800 Subject: [PATCH 61/81] log --- pkg/common/log/file_line_hk.go | 75 +++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 32 deletions(-) diff --git a/pkg/common/log/file_line_hk.go b/pkg/common/log/file_line_hk.go index 9ffa7806e..35dd34912 100644 --- a/pkg/common/log/file_line_hk.go +++ b/pkg/common/log/file_line_hk.go @@ -7,7 +7,7 @@ package log import ( - "fmt" + "Open_IM/pkg/utils" "github.com/sirupsen/logrus" "runtime" "strings" @@ -23,38 +23,49 @@ func (f *fileHook) Levels() []logrus.Level { return logrus.AllLevels } -func (f *fileHook) Fire(entry *logrus.Entry) error { - entry.Data["FilePath"] = findCaller(6) - return nil -} +//func (f *fileHook) Fire(entry *logrus.Entry) error { +// entry.Data["FilePath"] = findCaller(6) +// return nil +//} -func findCaller(skip int) string { - file := "" - line := 0 - for i := 0; i < 10; i++ { - file, line = getCaller(skip + i) - if !strings.HasPrefix(file, "log") { - break - } +func (f *fileHook) Fire(entry *logrus.Entry) error { + var s string + _, b, c, _ := runtime.Caller(8) + i := strings.LastIndex(b, "/") + if i != -1 { + s = b[i+1:len(b)] + ":" + utils.IntToString(c) } - return fmt.Sprintf("%s:%d", file, line) + entry.Data["FilePath"] = s + return nil } -func getCaller(skip int) (string, int) { - _, file, line, ok := runtime.Caller(skip) - if !ok { - return "", 0 - } - - n := 0 - for i := len(file) - 1; i > 0; i-- { - if file[i] == '/' { - n++ - if n >= 2 { - file = file[i+1:] - break - } - } - } - return file, line -} +//func findCaller(skip int) string { +// file := "" +// line := 0 +// for i := 0; i < 10; i++ { +// file, line = getCaller(skip + i) +// if !strings.HasPrefix(file, "log") { +// break +// } +// } +// return fmt.Sprintf("%s:%d", file, line) +//} +// +//func getCaller(skip int) (string, int) { +// _, file, line, ok := runtime.Caller(skip) +// if !ok { +// return "", 0 +// } +// +// n := 0 +// for i := len(file) - 1; i > 0; i-- { +// if file[i] == '/' { +// n++ +// if n >= 2 { +// file = file[i+1:] +// break +// } +// } +// } +// return file, line +//} From 7e9234e71262332b789c78a227681eb613983fce Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 4 Mar 2022 17:13:23 +0800 Subject: [PATCH 62/81] log --- pkg/common/log/file_line_hk.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/common/log/file_line_hk.go b/pkg/common/log/file_line_hk.go index 35dd34912..7e079b79f 100644 --- a/pkg/common/log/file_line_hk.go +++ b/pkg/common/log/file_line_hk.go @@ -31,9 +31,9 @@ func (f *fileHook) Levels() []logrus.Level { func (f *fileHook) Fire(entry *logrus.Entry) error { var s string _, b, c, _ := runtime.Caller(8) - i := strings.LastIndex(b, "/") - if i != -1 { - s = b[i+1:len(b)] + ":" + utils.IntToString(c) + i := strings.SplitAfter(b, "/") + if len(i) > 3 { + s = i[len(i)-3] + i[len(i)-2] + i[len(i)-1] + ":" + utils.IntToString(c) } entry.Data["FilePath"] = s return nil From 9bbcf0c5d7c7ff8adc7821f170335cea39b320e9 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 4 Mar 2022 17:16:21 +0800 Subject: [PATCH 63/81] log --- internal/rpc/msg/callback.go | 44 +++++++++++++++--------------------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index a09b1e87c..d9875da1e 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -12,18 +12,18 @@ import ( func copyCallbackCommonReqStruct(msg *pbChat.SendMsgReq) cbApi.CommonCallbackReq { return cbApi.CommonCallbackReq{ - SendID: msg.MsgData.SendID, - ServerMsgID: msg.MsgData.ServerMsgID, - ClientMsgID: msg.MsgData.ClientMsgID, - OperationID: msg.OperationID, + SendID: msg.MsgData.SendID, + ServerMsgID: msg.MsgData.ServerMsgID, + ClientMsgID: msg.MsgData.ClientMsgID, + OperationID: msg.OperationID, SenderPlatformID: msg.MsgData.SenderPlatformID, - SenderNickname: msg.MsgData.SenderNickname, - SessionType: msg.MsgData.SessionType, - MsgFrom: msg.MsgData.MsgFrom, - ContentType: msg.MsgData.ContentType, - Status: msg.MsgData.Status, - CreateTime: msg.MsgData.CreateTime, - Content: string(msg.MsgData.Content), + SenderNickname: msg.MsgData.SenderNickname, + SessionType: msg.MsgData.SessionType, + MsgFrom: msg.MsgData.MsgFrom, + ContentType: msg.MsgData.ContentType, + Status: msg.MsgData.Status, + CreateTime: msg.MsgData.CreateTime, + Content: string(msg.MsgData.Content), } } @@ -36,14 +36,14 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro commonCallbackReq.CallbackCommand = constant.CallbackBeforeSendSingleMsgCommand req := cbApi.CallbackBeforeSendSingleMsgReq{ CommonCallbackReq: commonCallbackReq, - RecvID: msg.MsgData.RecvID, + RecvID: msg.MsgData.RecvID, } resp := &cbApi.CallbackBeforeSendSingleMsgResp{ CommonCallbackResp: cbApi.CommonCallbackResp{}, } //utils.CopyStructFields(req, msg.MsgData) defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) - if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSendSingleMsg.CallbackTimeOut); err != nil{ + if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSendSingleMsg.CallbackTimeOut); err != nil { if !config.Config.Callback.CallbackBeforeSendSingleMsg.CallbackFailedContinue { return false, err } @@ -55,7 +55,6 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro return true, err } - func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { if !config.Config.Callback.CallbackAfterSendSingleMsg.Enable { return nil @@ -65,18 +64,17 @@ func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { commonCallbackReq.CallbackCommand = constant.CallbackAfterSendSingleMsgCommand req := cbApi.CallbackAfterSendSingleMsgReq{ CommonCallbackReq: commonCallbackReq, - RecvID: msg.MsgData.RecvID, + RecvID: msg.MsgData.RecvID, } resp := &cbApi.CallbackAfterSendSingleMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} //utils.CopyStructFields(req, msg.MsgData) defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) - if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendSingleMsg.CallbackTimeOut); err != nil{ + if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackAfterSendSingleMsg.CallbackTimeOut); err != nil { return err } return nil } - func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error) { if !config.Config.Callback.CallbackBeforeSendGroupMsg.Enable { return true, nil @@ -86,7 +84,7 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error commonCallbackReq.CallbackCommand = constant.CallbackBeforeSendGroupMsgCommand req := cbApi.CallbackAfterSendGroupMsgReq{ CommonCallbackReq: commonCallbackReq, - GroupID: msg.MsgData.GroupID, + GroupID: msg.MsgData.GroupID, } resp := &cbApi.CallbackBeforeSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} //utils.CopyStructFields(req, msg.MsgData) @@ -100,7 +98,7 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error return false, nil } } - log.NewInfo() + //log.NewInfo() return true, err } @@ -113,7 +111,7 @@ func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { commonCallbackReq.CallbackCommand = constant.CallbackAfterSendGroupMsgCommand req := cbApi.CallbackAfterSendGroupMsgReq{ CommonCallbackReq: commonCallbackReq, - GroupID: msg.MsgData.GroupID, + GroupID: msg.MsgData.GroupID, } resp := &cbApi.CallbackAfterSendGroupMsgResp{CommonCallbackResp: cbApi.CommonCallbackResp{}} @@ -125,7 +123,6 @@ func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { return nil } - func callbackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { if !config.Config.Callback.CallbackWordFilter.Enable || msg.MsgData.ContentType != constant.Text { return true, nil @@ -156,8 +153,3 @@ func callbackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), err.Error()) return true, err } - - - - - From eb1e596cdeb0bc328bf8642a62834efeb59cf120 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 4 Mar 2022 17:26:08 +0800 Subject: [PATCH 64/81] log --- internal/rpc/msg/callback.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index d9875da1e..41421ec2c 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -150,6 +150,6 @@ func callbackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), string(msg.MsgData.Content)) } - log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), err.Error()) + log.NewDebug(msg.OperationID, utils.GetSelfFuncName()) return true, err } From 1bcd2d453128181e4b1db30210c76975d4bd0e64 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 4 Mar 2022 17:26:50 +0800 Subject: [PATCH 65/81] log --- pkg/common/log/file_line_hk.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/log/file_line_hk.go b/pkg/common/log/file_line_hk.go index 7e079b79f..babc4791f 100644 --- a/pkg/common/log/file_line_hk.go +++ b/pkg/common/log/file_line_hk.go @@ -30,7 +30,7 @@ func (f *fileHook) Levels() []logrus.Level { func (f *fileHook) Fire(entry *logrus.Entry) error { var s string - _, b, c, _ := runtime.Caller(8) + _, b, c, _ := runtime.Caller(10) i := strings.SplitAfter(b, "/") if len(i) > 3 { s = i[len(i)-3] + i[len(i)-2] + i[len(i)-1] + ":" + utils.IntToString(c) From a7c8eda2902be18a40ab6b05dac3b51cc2be6772 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 4 Mar 2022 17:29:15 +0800 Subject: [PATCH 66/81] log --- pkg/common/log/file_line_hk.go | 80 +++++++++++++++++----------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/pkg/common/log/file_line_hk.go b/pkg/common/log/file_line_hk.go index babc4791f..bc908ee03 100644 --- a/pkg/common/log/file_line_hk.go +++ b/pkg/common/log/file_line_hk.go @@ -7,7 +7,7 @@ package log import ( - "Open_IM/pkg/utils" + "fmt" "github.com/sirupsen/logrus" "runtime" "strings" @@ -23,49 +23,49 @@ func (f *fileHook) Levels() []logrus.Level { return logrus.AllLevels } +func (f *fileHook) Fire(entry *logrus.Entry) error { + entry.Data["FilePath"] = findCaller(6) + return nil +} + //func (f *fileHook) Fire(entry *logrus.Entry) error { -// entry.Data["FilePath"] = findCaller(6) +// var s string +// _, b, c, _ := runtime.Caller(10) +// i := strings.SplitAfter(b, "/") +// if len(i) > 3 { +// s = i[len(i)-3] + i[len(i)-2] + i[len(i)-1] + ":" + utils.IntToString(c) +// } +// entry.Data["FilePath"] = s // return nil //} -func (f *fileHook) Fire(entry *logrus.Entry) error { - var s string - _, b, c, _ := runtime.Caller(10) - i := strings.SplitAfter(b, "/") - if len(i) > 3 { - s = i[len(i)-3] + i[len(i)-2] + i[len(i)-1] + ":" + utils.IntToString(c) +func findCaller(skip int) string { + file := "" + line := 0 + for i := 0; i < 10; i++ { + file, line = getCaller(skip + i) + if !strings.HasPrefix(file, "log") { + break + } } - entry.Data["FilePath"] = s - return nil + return fmt.Sprintf("%s:%d", file, line) } -//func findCaller(skip int) string { -// file := "" -// line := 0 -// for i := 0; i < 10; i++ { -// file, line = getCaller(skip + i) -// if !strings.HasPrefix(file, "log") { -// break -// } -// } -// return fmt.Sprintf("%s:%d", file, line) -//} -// -//func getCaller(skip int) (string, int) { -// _, file, line, ok := runtime.Caller(skip) -// if !ok { -// return "", 0 -// } -// -// n := 0 -// for i := len(file) - 1; i > 0; i-- { -// if file[i] == '/' { -// n++ -// if n >= 2 { -// file = file[i+1:] -// break -// } -// } -// } -// return file, line -//} +func getCaller(skip int) (string, int) { + _, file, line, ok := runtime.Caller(skip) + if !ok { + return "", 0 + } + + n := 0 + for i := len(file) - 1; i > 0; i-- { + if file[i] == '/' { + n++ + if n >= 2 { + file = file[i+1:] + break + } + } + } + return file, line +} From 4c297164a54fc9104be5467a72f153d9bf422b35 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 4 Mar 2022 18:03:22 +0800 Subject: [PATCH 67/81] cb --- config/config.yaml | 11 ++++++----- internal/rpc/msg/callback.go | 5 +++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index c76d69ef6..c71011247 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -194,26 +194,27 @@ iospush: badgeCount: true callback: + # callback url 需要自行更换callback url callbackUrl : "http://127.0.0.1:8080/callback" # 开启关闭操作前后回调的配置 callbackbeforeSendSingleMsg: - enable: false # 回调是否启用 + enable: true # 回调是否启用 callbackTimeOut: 2 # 回调超时时间 CallbackFailedContinue: true # 回调超时是否继续执行代码 callbackAfterSendSingleMsg: - enable: false + enable: true callbackTimeOut: 2 callbackBeforeSendGroupMsg: - enable: false + enable: true callbackTimeOut: 2 CallbackFailedContinue: true callbackAfterSendGroupMsg: - enable: false + enable: true callbackTimeOut: 2 callbackWordFilter: enable: true callbackTimeOut: 2 - CallbackFailedContinue: true + CallbackFailedContinue: false notification: diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index 41421ec2c..a56038de8 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -52,6 +52,7 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro return false, nil } } + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), err.Error()) return true, err } @@ -98,7 +99,7 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error return false, nil } } - //log.NewInfo() + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), err.Error()) return true, err } @@ -150,6 +151,6 @@ func callbackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), string(msg.MsgData.Content)) } - log.NewDebug(msg.OperationID, utils.GetSelfFuncName()) + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), err.Error()) return true, err } From 1572d9df89591e022b26c197c0d3fd94106dc51a Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 4 Mar 2022 18:17:44 +0800 Subject: [PATCH 68/81] cb --- internal/rpc/msg/callback.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index a56038de8..f04c2a1fc 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -52,7 +52,7 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro return false, nil } } - log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), err.Error()) + log.NewDebug(msg.OperationID, utils.GetSelfFuncName()) return true, err } From 29f849c184e3149dd7a39188e54f257d495b2991 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 4 Mar 2022 18:20:57 +0800 Subject: [PATCH 69/81] log --- internal/rpc/msg/callback.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index f04c2a1fc..3cff165aa 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -151,6 +151,6 @@ func callbackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), string(msg.MsgData.Content)) } - log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), err.Error()) + log.NewDebug(msg.OperationID, utils.GetSelfFuncName()) return true, err } From 08022497e608d778ee91d24539af663307f849f4 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 4 Mar 2022 18:21:14 +0800 Subject: [PATCH 70/81] log --- internal/rpc/msg/callback.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index 3cff165aa..d3413cd7e 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -99,7 +99,7 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error return false, nil } } - log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), err.Error()) + log.NewDebug(msg.OperationID, utils.GetSelfFuncName()) return true, err } From fafad9217d2660802dd14f39badae187c5a84f8e Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 4 Mar 2022 18:23:58 +0800 Subject: [PATCH 71/81] cb --- internal/rpc/msg/callback.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index f04c2a1fc..bb8ccd700 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -46,13 +46,14 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSendSingleMsg.CallbackTimeOut); err != nil { if !config.Config.Callback.CallbackBeforeSendSingleMsg.CallbackFailedContinue { return false, err + } else { + return true, err } } else { if resp.ActionCode == constant.ActionForbidden && resp.ErrCode == constant.CallbackHandleSuccess { return false, nil } } - log.NewDebug(msg.OperationID, utils.GetSelfFuncName()) return true, err } @@ -93,13 +94,14 @@ func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error if err := http.PostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackTimeOut); err != nil { if !config.Config.Callback.CallbackBeforeSendGroupMsg.CallbackFailedContinue { return false, err + } else { + return true, err } } else { if resp.ActionCode == constant.ActionForbidden && resp.ErrCode == constant.CallbackHandleSuccess { return false, nil } } - log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), err.Error()) return true, err } @@ -141,6 +143,8 @@ func callbackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { if !config.Config.Callback.CallbackWordFilter.CallbackFailedContinue { log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), "callback failed and config disable, stop this operation") return false, err + } else { + return true, err } } else { if resp.ActionCode == constant.ActionForbidden && resp.ErrCode == constant.CallbackHandleSuccess { @@ -151,6 +155,5 @@ func callbackWordFilter(msg *pbChat.SendMsgReq) (canSend bool, err error) { } log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), string(msg.MsgData.Content)) } - log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), err.Error()) return true, err } From 319f46406c241fc2f0a79e54c324d4cd984ebd14 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 4 Mar 2022 18:37:55 +0800 Subject: [PATCH 72/81] cfg --- config/config.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index c71011247..5316eaf46 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -198,21 +198,21 @@ callback: callbackUrl : "http://127.0.0.1:8080/callback" # 开启关闭操作前后回调的配置 callbackbeforeSendSingleMsg: - enable: true # 回调是否启用 + enable: false # 回调是否启用 callbackTimeOut: 2 # 回调超时时间 CallbackFailedContinue: true # 回调超时是否继续执行代码 callbackAfterSendSingleMsg: - enable: true + enable: false callbackTimeOut: 2 callbackBeforeSendGroupMsg: - enable: true + enable: false callbackTimeOut: 2 CallbackFailedContinue: true callbackAfterSendGroupMsg: - enable: true + enable: false callbackTimeOut: 2 callbackWordFilter: - enable: true + enable: false callbackTimeOut: 2 CallbackFailedContinue: false From 127e5af6f3daec56cb422a902e21244ce0971205 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 4 Mar 2022 18:44:38 +0800 Subject: [PATCH 73/81] cfg --- config/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index 5316eaf46..9a9e1ec6c 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -214,7 +214,7 @@ callback: callbackWordFilter: enable: false callbackTimeOut: 2 - CallbackFailedContinue: false + CallbackFailedContinue: true notification: From e734b000dea2e93032e73cb6147df7080ecb8f50 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 4 Mar 2022 19:01:32 +0800 Subject: [PATCH 74/81] log --- pkg/common/db/mysql_model/im_mysql_msg_model/chat_log_model.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/common/db/mysql_model/im_mysql_msg_model/chat_log_model.go b/pkg/common/db/mysql_model/im_mysql_msg_model/chat_log_model.go index fef4c1fb2..99c099ac4 100644 --- a/pkg/common/db/mysql_model/im_mysql_msg_model/chat_log_model.go +++ b/pkg/common/db/mysql_model/im_mysql_msg_model/chat_log_model.go @@ -9,6 +9,7 @@ package im_mysql_msg_model import ( "Open_IM/pkg/common/constant" "Open_IM/pkg/common/db" + "Open_IM/pkg/common/log" pbMsg "Open_IM/pkg/proto/chat" "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" @@ -45,5 +46,6 @@ func InsertMessageToChatLog(msg pbMsg.MsgDataToMQ) error { } chatLog.CreateTime = utils.UnixMillSecondToTime(msg.MsgData.CreateTime) chatLog.SendTime = utils.UnixMillSecondToTime(msg.MsgData.SendTime) + log.NewDebug("test", "this is ", chatLog) return dbConn.Table("chat_logs").Create(chatLog).Error } From 15aabb38591c6abaa1dccc62bb7c8fb32fae7b1b Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 4 Mar 2022 19:19:06 +0800 Subject: [PATCH 75/81] log --- pkg/grpc-etcdv3/getcdv3/register.go | 8 ++++---- pkg/grpc-etcdv3/getcdv3/resolver.go | 19 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/pkg/grpc-etcdv3/getcdv3/register.go b/pkg/grpc-etcdv3/getcdv3/register.go index d1c7957bf..cc555f3b4 100644 --- a/pkg/grpc-etcdv3/getcdv3/register.go +++ b/pkg/grpc-etcdv3/getcdv3/register.go @@ -67,16 +67,16 @@ func RegisterEtcd(schema, etcdAddr, myHost string, myPort int, serviceName strin if err != nil { return fmt.Errorf("keepalive failed, errmsg:%v, lease id:%d", err, resp.ID) } - log.Info("", "RegisterEtcd ok ") + //log.Info("", "RegisterEtcd ok ") go func() { for { select { - case v, ok := <-kresp: + case _, ok := <-kresp: if ok == true { - log.Debug("", "KeepAlive kresp ok", v, schema, etcdAddr, myHost, myPort, serviceName, ttl) + //log.Debug("", "KeepAlive kresp ok", v, schema, etcdAddr, myHost, myPort, serviceName, ttl) } else { - log.Error("", "KeepAlive kresp failed", schema, etcdAddr, myHost, myPort, serviceName, ttl) + //log.Error("", "KeepAlive kresp failed", schema, etcdAddr, myHost, myPort, serviceName, ttl) } } } diff --git a/pkg/grpc-etcdv3/getcdv3/resolver.go b/pkg/grpc-etcdv3/getcdv3/resolver.go index 45f47a717..1e57f8cdd 100644 --- a/pkg/grpc-etcdv3/getcdv3/resolver.go +++ b/pkg/grpc-etcdv3/getcdv3/resolver.go @@ -1,7 +1,6 @@ package getcdv3 import ( - "Open_IM/pkg/common/log" "context" "fmt" "go.etcd.io/etcd/clientv3" @@ -103,7 +102,7 @@ func (r *Resolver) Build(target resolver.Target, cc resolver.ClientConn, opts re if err == nil { var addrList []resolver.Address for i := range resp.Kvs { - log.Debug("", "init addr: ", string(resp.Kvs[i].Value)) + //log.Debug("", "init addr: ", string(resp.Kvs[i].Value)) addrList = append(addrList, resolver.Address{Addr: string(resp.Kvs[i].Value)}) } r.cc.UpdateState(resolver.State{Addresses: addrList}) @@ -149,27 +148,27 @@ func (r *Resolver) watch(prefix string, addrList []resolver.Address) { if !exists(addrList, string(ev.Kv.Value)) { flag = 1 addrList = append(addrList, resolver.Address{Addr: string(ev.Kv.Value)}) - log.Debug("", "after add, new list: ", addrList) + //log.Debug("", "after add, new list: ", addrList) } case mvccpb.DELETE: - log.Debug("remove addr key: ", string(ev.Kv.Key), "value:", string(ev.Kv.Value)) + //log.Debug("remove addr key: ", string(ev.Kv.Key), "value:", string(ev.Kv.Value)) i := strings.LastIndexAny(string(ev.Kv.Key), "/") if i < 0 { return } t := string(ev.Kv.Key)[i+1:] - log.Debug("remove addr key: ", string(ev.Kv.Key), "value:", string(ev.Kv.Value), "addr:", t) + //log.Debug("remove addr key: ", string(ev.Kv.Key), "value:", string(ev.Kv.Value), "addr:", t) if s, ok := remove(addrList, t); ok { flag = 1 addrList = s - log.Debug("after remove, new list: ", addrList) + //log.Debug("after remove, new list: ", addrList) } } } if flag == 1 { r.cc.UpdateState(resolver.State{Addresses: addrList}) - log.Debug("update: ", addrList) + //log.Debug("update: ", addrList) } } } @@ -177,7 +176,7 @@ func (r *Resolver) watch(prefix string, addrList []resolver.Address) { func GetConn4Unique(schema, etcdaddr, servicename string) []*grpc.ClientConn { gEtcdCli, err := clientv3.New(clientv3.Config{Endpoints: strings.Split(etcdaddr, ",")}) if err != nil { - log.Error("clientv3.New failed", err.Error()) + //log.Error("clientv3.New failed", err.Error()) return nil } @@ -201,7 +200,7 @@ func GetConn4Unique(schema, etcdaddr, servicename string) []*grpc.ClientConn { } } else { gEtcdCli.Close() - log.Error("gEtcdCli.Get failed", err.Error()) + //log.Error("gEtcdCli.Get failed", err.Error()) return nil } gEtcdCli.Close() @@ -237,7 +236,7 @@ func GetConnPool(schema, etcdaddr, servicename string) (*ClientConn, error) { ctx, _ := context.WithDeadline(context.Background(), time.Now().Add(1000*time.Millisecond)) c, err := p.Get(ctx) - log.Info("", "Get ", err) + //log.Info("", "Get ", err) return c, err } From c8be20e9f2ddfa69fecc729bf15a9c0e3c94285f Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 4 Mar 2022 19:31:03 +0800 Subject: [PATCH 76/81] tag update --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 154c61faa..f63b3c125 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -93,7 +93,7 @@ services: command: /usr/local/bin/etcd --name etcd0 --data-dir /etcd-data --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-advertise-peer-urls http://0.0.0.0:2380 --initial-cluster etcd0=http://0.0.0.0:2380 --initial-cluster-token tkn --initial-cluster-state new open_im_server: - image: openim/open_im_server:v2.0.1 + image: openim/open_im_server:v2.0.2 container_name: open_im_server volumes: - ./logs:/Open-IM-Server/logs From 13efbf5f9862e49107650662e82390e0359c082e Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Mon, 7 Mar 2022 11:50:35 +0800 Subject: [PATCH 77/81] log level --- config/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index 9a9e1ec6c..dfaeaaed1 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -133,7 +133,7 @@ log: rotationTime: 24 remainRotationCount: 3 #日志数量 #日志级别 6表示全都打印,测试阶段建议设置为6 - remainLogLevel: 6 + remainLogLevel: 4 elasticSearchSwitch: false elasticSearchAddr: [ 127.0.0.1:9201 ] elasticSearchUser: "" From 0e575a936682c573e9e37e9d0e5a470c86a0491f Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 8 Mar 2022 18:48:36 +0800 Subject: [PATCH 78/81] keepalive ttl * 3 add user.ex --- internal/api/user/user.go | 2 +- pkg/grpc-etcdv3/getcdv3/register.go | 7 +- pkg/proto/sdk_ws/ws.pb.go | 4820 ++++++++++----------------- pkg/proto/sdk_ws/ws.proto | 32 +- 4 files changed, 1788 insertions(+), 3073 deletions(-) diff --git a/internal/api/user/user.go b/internal/api/user/user.go index 1ed341bf5..4fa1c62dd 100644 --- a/internal/api/user/user.go +++ b/internal/api/user/user.go @@ -45,7 +45,7 @@ func GetUsersInfo(c *gin.Context) { var publicUserInfoList []*open_im_sdk.PublicUserInfo for _, v := range RpcResp.UserInfoList { publicUserInfoList = append(publicUserInfoList, - &open_im_sdk.PublicUserInfo{UserID: v.UserID, Nickname: v.Nickname, FaceURL: v.FaceURL, Gender: v.Gender}) + &open_im_sdk.PublicUserInfo{UserID: v.UserID, Nickname: v.Nickname, FaceURL: v.FaceURL, Gender: v.Gender, Ex: v.Ex}) } resp := api.GetUsersInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, UserInfoList: publicUserInfoList} diff --git a/pkg/grpc-etcdv3/getcdv3/register.go b/pkg/grpc-etcdv3/getcdv3/register.go index cc555f3b4..3230590b6 100644 --- a/pkg/grpc-etcdv3/getcdv3/register.go +++ b/pkg/grpc-etcdv3/getcdv3/register.go @@ -38,6 +38,7 @@ func RegisterEtcd4Unique(schema, etcdAddr, myHost string, myPort int, serviceNam //etcdAddr separated by commas func RegisterEtcd(schema, etcdAddr, myHost string, myPort int, serviceName string, ttl int) error { + ttl = ttl * 3 cli, err := clientv3.New(clientv3.Config{ Endpoints: strings.Split(etcdAddr, ","), DialTimeout: 5 * time.Second}) @@ -72,11 +73,11 @@ func RegisterEtcd(schema, etcdAddr, myHost string, myPort int, serviceName strin go func() { for { select { - case _, ok := <-kresp: + case pv, ok := <-kresp: if ok == true { - //log.Debug("", "KeepAlive kresp ok", v, schema, etcdAddr, myHost, myPort, serviceName, ttl) + log.Debug("", "KeepAlive kresp ok", pv) } else { - //log.Error("", "KeepAlive kresp failed", schema, etcdAddr, myHost, myPort, serviceName, ttl) + log.Error("", "KeepAlive kresp failed", pv) } } } diff --git a/pkg/proto/sdk_ws/ws.pb.go b/pkg/proto/sdk_ws/ws.pb.go index f5d259dac..a8f964b34 100644 --- a/pkg/proto/sdk_ws/ws.pb.go +++ b/pkg/proto/sdk_ws/ws.pb.go @@ -1,4022 +1,2766 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.27.1 -// protoc v3.15.5 // source: sdk_ws/ws.proto -package server_api_params +package server_api_params // import "./sdk_ws" -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" -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) -) +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf -type GroupInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - GroupID string `protobuf:"bytes,1,opt,name=groupID,proto3" json:"groupID,omitempty"` - GroupName string `protobuf:"bytes,2,opt,name=groupName,proto3" json:"groupName,omitempty"` - Notification string `protobuf:"bytes,3,opt,name=notification,proto3" json:"notification,omitempty"` - Introduction string `protobuf:"bytes,4,opt,name=introduction,proto3" json:"introduction,omitempty"` - FaceURL string `protobuf:"bytes,5,opt,name=faceURL,proto3" json:"faceURL,omitempty"` - OwnerUserID string `protobuf:"bytes,6,opt,name=ownerUserID,proto3" json:"ownerUserID,omitempty"` - CreateTime uint32 `protobuf:"varint,7,opt,name=createTime,proto3" json:"createTime,omitempty"` - MemberCount uint32 `protobuf:"varint,8,opt,name=memberCount,proto3" json:"memberCount,omitempty"` - Ex string `protobuf:"bytes,9,opt,name=ex,proto3" json:"ex,omitempty"` - Status int32 `protobuf:"varint,10,opt,name=status,proto3" json:"status,omitempty"` - CreatorUserID string `protobuf:"bytes,11,opt,name=creatorUserID,proto3" json:"creatorUserID,omitempty"` - GroupType int32 `protobuf:"varint,12,opt,name=groupType,proto3" json:"groupType,omitempty"` +type GroupInfo struct { + GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` + GroupName string `protobuf:"bytes,2,opt,name=groupName" json:"groupName,omitempty"` + Notification string `protobuf:"bytes,3,opt,name=notification" json:"notification,omitempty"` + Introduction string `protobuf:"bytes,4,opt,name=introduction" json:"introduction,omitempty"` + FaceURL string `protobuf:"bytes,5,opt,name=faceURL" json:"faceURL,omitempty"` + OwnerUserID string `protobuf:"bytes,6,opt,name=ownerUserID" json:"ownerUserID,omitempty"` + CreateTime uint32 `protobuf:"varint,7,opt,name=createTime" json:"createTime,omitempty"` + MemberCount uint32 `protobuf:"varint,8,opt,name=memberCount" json:"memberCount,omitempty"` + Ex string `protobuf:"bytes,9,opt,name=ex" json:"ex,omitempty"` + Status int32 `protobuf:"varint,10,opt,name=status" json:"status,omitempty"` + CreatorUserID string `protobuf:"bytes,11,opt,name=creatorUserID" json:"creatorUserID,omitempty"` + GroupType int32 `protobuf:"varint,12,opt,name=groupType" json:"groupType,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GroupInfo) Reset() { *m = GroupInfo{} } +func (m *GroupInfo) String() string { return proto.CompactTextString(m) } +func (*GroupInfo) ProtoMessage() {} +func (*GroupInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{0} } - -func (x *GroupInfo) Reset() { - *x = GroupInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GroupInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GroupInfo.Unmarshal(m, b) } - -func (x *GroupInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *GroupInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GroupInfo.Marshal(b, m, deterministic) } - -func (*GroupInfo) ProtoMessage() {} - -func (x *GroupInfo) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (dst *GroupInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupInfo.Merge(dst, src) } - -// Deprecated: Use GroupInfo.ProtoReflect.Descriptor instead. -func (*GroupInfo) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{0} +func (m *GroupInfo) XXX_Size() int { + return xxx_messageInfo_GroupInfo.Size(m) +} +func (m *GroupInfo) XXX_DiscardUnknown() { + xxx_messageInfo_GroupInfo.DiscardUnknown(m) } -func (x *GroupInfo) GetGroupID() string { - if x != nil { - return x.GroupID +var xxx_messageInfo_GroupInfo proto.InternalMessageInfo + +func (m *GroupInfo) GetGroupID() string { + if m != nil { + return m.GroupID } return "" } -func (x *GroupInfo) GetGroupName() string { - if x != nil { - return x.GroupName +func (m *GroupInfo) GetGroupName() string { + if m != nil { + return m.GroupName } return "" } -func (x *GroupInfo) GetNotification() string { - if x != nil { - return x.Notification +func (m *GroupInfo) GetNotification() string { + if m != nil { + return m.Notification } return "" } -func (x *GroupInfo) GetIntroduction() string { - if x != nil { - return x.Introduction +func (m *GroupInfo) GetIntroduction() string { + if m != nil { + return m.Introduction } return "" } -func (x *GroupInfo) GetFaceURL() string { - if x != nil { - return x.FaceURL +func (m *GroupInfo) GetFaceURL() string { + if m != nil { + return m.FaceURL } return "" } -func (x *GroupInfo) GetOwnerUserID() string { - if x != nil { - return x.OwnerUserID +func (m *GroupInfo) GetOwnerUserID() string { + if m != nil { + return m.OwnerUserID } return "" } -func (x *GroupInfo) GetCreateTime() uint32 { - if x != nil { - return x.CreateTime +func (m *GroupInfo) GetCreateTime() uint32 { + if m != nil { + return m.CreateTime } return 0 } -func (x *GroupInfo) GetMemberCount() uint32 { - if x != nil { - return x.MemberCount +func (m *GroupInfo) GetMemberCount() uint32 { + if m != nil { + return m.MemberCount } return 0 } -func (x *GroupInfo) GetEx() string { - if x != nil { - return x.Ex +func (m *GroupInfo) GetEx() string { + if m != nil { + return m.Ex } return "" } -func (x *GroupInfo) GetStatus() int32 { - if x != nil { - return x.Status +func (m *GroupInfo) GetStatus() int32 { + if m != nil { + return m.Status } return 0 } -func (x *GroupInfo) GetCreatorUserID() string { - if x != nil { - return x.CreatorUserID +func (m *GroupInfo) GetCreatorUserID() string { + if m != nil { + return m.CreatorUserID } return "" } -func (x *GroupInfo) GetGroupType() int32 { - if x != nil { - return x.GroupType +func (m *GroupInfo) GetGroupType() int32 { + if m != nil { + return m.GroupType } return 0 } type GroupMemberFullInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GroupID string `protobuf:"bytes,1,opt,name=groupID,proto3" json:"groupID,omitempty"` - UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` - RoleLevel int32 `protobuf:"varint,3,opt,name=roleLevel,proto3" json:"roleLevel,omitempty"` - JoinTime int64 `protobuf:"varint,4,opt,name=joinTime,proto3" json:"joinTime,omitempty"` - Nickname string `protobuf:"bytes,5,opt,name=nickname,proto3" json:"nickname,omitempty"` - FaceURL string `protobuf:"bytes,6,opt,name=faceURL,proto3" json:"faceURL,omitempty"` - AppMangerLevel int32 `protobuf:"varint,7,opt,name=appMangerLevel,proto3" json:"appMangerLevel,omitempty"` //if >0 - JoinSource int32 `protobuf:"varint,8,opt,name=joinSource,proto3" json:"joinSource,omitempty"` - OperatorUserID string `protobuf:"bytes,9,opt,name=operatorUserID,proto3" json:"operatorUserID,omitempty"` - Ex string `protobuf:"bytes,10,opt,name=ex,proto3" json:"ex,omitempty"` + GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` + RoleLevel int32 `protobuf:"varint,3,opt,name=roleLevel" json:"roleLevel,omitempty"` + JoinTime int64 `protobuf:"varint,4,opt,name=joinTime" json:"joinTime,omitempty"` + Nickname string `protobuf:"bytes,5,opt,name=nickname" json:"nickname,omitempty"` + FaceURL string `protobuf:"bytes,6,opt,name=faceURL" json:"faceURL,omitempty"` + AppMangerLevel int32 `protobuf:"varint,7,opt,name=appMangerLevel" json:"appMangerLevel,omitempty"` + JoinSource int32 `protobuf:"varint,8,opt,name=joinSource" json:"joinSource,omitempty"` + OperatorUserID string `protobuf:"bytes,9,opt,name=operatorUserID" json:"operatorUserID,omitempty"` + Ex string `protobuf:"bytes,10,opt,name=ex" json:"ex,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GroupMemberFullInfo) Reset() { *m = GroupMemberFullInfo{} } +func (m *GroupMemberFullInfo) String() string { return proto.CompactTextString(m) } +func (*GroupMemberFullInfo) ProtoMessage() {} +func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{1} } - -func (x *GroupMemberFullInfo) Reset() { - *x = GroupMemberFullInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GroupMemberFullInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GroupMemberFullInfo.Unmarshal(m, b) } - -func (x *GroupMemberFullInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *GroupMemberFullInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GroupMemberFullInfo.Marshal(b, m, deterministic) } - -func (*GroupMemberFullInfo) ProtoMessage() {} - -func (x *GroupMemberFullInfo) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (dst *GroupMemberFullInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupMemberFullInfo.Merge(dst, src) } - -// Deprecated: Use GroupMemberFullInfo.ProtoReflect.Descriptor instead. -func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{1} +func (m *GroupMemberFullInfo) XXX_Size() int { + return xxx_messageInfo_GroupMemberFullInfo.Size(m) } +func (m *GroupMemberFullInfo) XXX_DiscardUnknown() { + xxx_messageInfo_GroupMemberFullInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_GroupMemberFullInfo proto.InternalMessageInfo -func (x *GroupMemberFullInfo) GetGroupID() string { - if x != nil { - return x.GroupID +func (m *GroupMemberFullInfo) GetGroupID() string { + if m != nil { + return m.GroupID } return "" } -func (x *GroupMemberFullInfo) GetUserID() string { - if x != nil { - return x.UserID +func (m *GroupMemberFullInfo) GetUserID() string { + if m != nil { + return m.UserID } return "" } -func (x *GroupMemberFullInfo) GetRoleLevel() int32 { - if x != nil { - return x.RoleLevel +func (m *GroupMemberFullInfo) GetRoleLevel() int32 { + if m != nil { + return m.RoleLevel } return 0 } -func (x *GroupMemberFullInfo) GetJoinTime() int64 { - if x != nil { - return x.JoinTime +func (m *GroupMemberFullInfo) GetJoinTime() int64 { + if m != nil { + return m.JoinTime } return 0 } -func (x *GroupMemberFullInfo) GetNickname() string { - if x != nil { - return x.Nickname +func (m *GroupMemberFullInfo) GetNickname() string { + if m != nil { + return m.Nickname } return "" } -func (x *GroupMemberFullInfo) GetFaceURL() string { - if x != nil { - return x.FaceURL +func (m *GroupMemberFullInfo) GetFaceURL() string { + if m != nil { + return m.FaceURL } return "" } -func (x *GroupMemberFullInfo) GetAppMangerLevel() int32 { - if x != nil { - return x.AppMangerLevel +func (m *GroupMemberFullInfo) GetAppMangerLevel() int32 { + if m != nil { + return m.AppMangerLevel } return 0 } -func (x *GroupMemberFullInfo) GetJoinSource() int32 { - if x != nil { - return x.JoinSource +func (m *GroupMemberFullInfo) GetJoinSource() int32 { + if m != nil { + return m.JoinSource } return 0 } -func (x *GroupMemberFullInfo) GetOperatorUserID() string { - if x != nil { - return x.OperatorUserID +func (m *GroupMemberFullInfo) GetOperatorUserID() string { + if m != nil { + return m.OperatorUserID } return "" } -func (x *GroupMemberFullInfo) GetEx() string { - if x != nil { - return x.Ex +func (m *GroupMemberFullInfo) GetEx() string { + if m != nil { + return m.Ex } return "" } type PublicUserInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` - FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL,omitempty"` - Gender int32 `protobuf:"varint,4,opt,name=gender,proto3" json:"gender,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + Nickname string `protobuf:"bytes,2,opt,name=nickname" json:"nickname,omitempty"` + FaceURL string `protobuf:"bytes,3,opt,name=faceURL" json:"faceURL,omitempty"` + Gender int32 `protobuf:"varint,4,opt,name=gender" json:"gender,omitempty"` + Ex string `protobuf:"bytes,5,opt,name=ex" json:"ex,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PublicUserInfo) Reset() { *m = PublicUserInfo{} } +func (m *PublicUserInfo) String() string { return proto.CompactTextString(m) } +func (*PublicUserInfo) ProtoMessage() {} +func (*PublicUserInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{2} } - -func (x *PublicUserInfo) Reset() { - *x = PublicUserInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *PublicUserInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PublicUserInfo.Unmarshal(m, b) } - -func (x *PublicUserInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *PublicUserInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PublicUserInfo.Marshal(b, m, deterministic) } - -func (*PublicUserInfo) ProtoMessage() {} - -func (x *PublicUserInfo) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (dst *PublicUserInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_PublicUserInfo.Merge(dst, src) } - -// Deprecated: Use PublicUserInfo.ProtoReflect.Descriptor instead. -func (*PublicUserInfo) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{2} +func (m *PublicUserInfo) XXX_Size() int { + return xxx_messageInfo_PublicUserInfo.Size(m) +} +func (m *PublicUserInfo) XXX_DiscardUnknown() { + xxx_messageInfo_PublicUserInfo.DiscardUnknown(m) } -func (x *PublicUserInfo) GetUserID() string { - if x != nil { - return x.UserID +var xxx_messageInfo_PublicUserInfo proto.InternalMessageInfo + +func (m *PublicUserInfo) GetUserID() string { + if m != nil { + return m.UserID } return "" } -func (x *PublicUserInfo) GetNickname() string { - if x != nil { - return x.Nickname +func (m *PublicUserInfo) GetNickname() string { + if m != nil { + return m.Nickname } return "" } -func (x *PublicUserInfo) GetFaceURL() string { - if x != nil { - return x.FaceURL +func (m *PublicUserInfo) GetFaceURL() string { + if m != nil { + return m.FaceURL } return "" } -func (x *PublicUserInfo) GetGender() int32 { - if x != nil { - return x.Gender +func (m *PublicUserInfo) GetGender() int32 { + if m != nil { + return m.Gender } return 0 } -type UserInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` - FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL,omitempty"` - Gender int32 `protobuf:"varint,4,opt,name=gender,proto3" json:"gender,omitempty"` - PhoneNumber string `protobuf:"bytes,5,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` - Birth uint32 `protobuf:"varint,6,opt,name=birth,proto3" json:"birth,omitempty"` - Email string `protobuf:"bytes,7,opt,name=email,proto3" json:"email,omitempty"` - Ex string `protobuf:"bytes,8,opt,name=ex,proto3" json:"ex,omitempty"` - CreateTime uint32 `protobuf:"varint,9,opt,name=createTime,proto3" json:"createTime,omitempty"` - AppMangerLevel int32 `protobuf:"varint,10,opt,name=appMangerLevel,proto3" json:"appMangerLevel,omitempty"` -} - -func (x *UserInfo) Reset() { - *x = UserInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (m *PublicUserInfo) GetEx() string { + if m != nil { + return m.Ex } + return "" } -func (x *UserInfo) String() string { - return protoimpl.X.MessageStringOf(x) +type UserInfo struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + Nickname string `protobuf:"bytes,2,opt,name=nickname" json:"nickname,omitempty"` + FaceURL string `protobuf:"bytes,3,opt,name=faceURL" json:"faceURL,omitempty"` + Gender int32 `protobuf:"varint,4,opt,name=gender" json:"gender,omitempty"` + PhoneNumber string `protobuf:"bytes,5,opt,name=phoneNumber" json:"phoneNumber,omitempty"` + Birth uint32 `protobuf:"varint,6,opt,name=birth" json:"birth,omitempty"` + Email string `protobuf:"bytes,7,opt,name=email" json:"email,omitempty"` + Ex string `protobuf:"bytes,8,opt,name=ex" json:"ex,omitempty"` + CreateTime uint32 `protobuf:"varint,9,opt,name=createTime" json:"createTime,omitempty"` + AppMangerLevel int32 `protobuf:"varint,10,opt,name=appMangerLevel" json:"appMangerLevel,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UserInfo) Reset() { *m = UserInfo{} } +func (m *UserInfo) String() string { return proto.CompactTextString(m) } +func (*UserInfo) ProtoMessage() {} +func (*UserInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{3} } - -func (*UserInfo) ProtoMessage() {} - -func (x *UserInfo) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *UserInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserInfo.Unmarshal(m, b) } - -// Deprecated: Use UserInfo.ProtoReflect.Descriptor instead. -func (*UserInfo) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{3} +func (m *UserInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserInfo.Marshal(b, m, deterministic) } +func (dst *UserInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserInfo.Merge(dst, src) +} +func (m *UserInfo) XXX_Size() int { + return xxx_messageInfo_UserInfo.Size(m) +} +func (m *UserInfo) XXX_DiscardUnknown() { + xxx_messageInfo_UserInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_UserInfo proto.InternalMessageInfo -func (x *UserInfo) GetUserID() string { - if x != nil { - return x.UserID +func (m *UserInfo) GetUserID() string { + if m != nil { + return m.UserID } return "" } -func (x *UserInfo) GetNickname() string { - if x != nil { - return x.Nickname +func (m *UserInfo) GetNickname() string { + if m != nil { + return m.Nickname } return "" } -func (x *UserInfo) GetFaceURL() string { - if x != nil { - return x.FaceURL +func (m *UserInfo) GetFaceURL() string { + if m != nil { + return m.FaceURL } return "" } -func (x *UserInfo) GetGender() int32 { - if x != nil { - return x.Gender +func (m *UserInfo) GetGender() int32 { + if m != nil { + return m.Gender } return 0 } -func (x *UserInfo) GetPhoneNumber() string { - if x != nil { - return x.PhoneNumber +func (m *UserInfo) GetPhoneNumber() string { + if m != nil { + return m.PhoneNumber } return "" } -func (x *UserInfo) GetBirth() uint32 { - if x != nil { - return x.Birth +func (m *UserInfo) GetBirth() uint32 { + if m != nil { + return m.Birth } return 0 } -func (x *UserInfo) GetEmail() string { - if x != nil { - return x.Email +func (m *UserInfo) GetEmail() string { + if m != nil { + return m.Email } return "" } -func (x *UserInfo) GetEx() string { - if x != nil { - return x.Ex +func (m *UserInfo) GetEx() string { + if m != nil { + return m.Ex } return "" } -func (x *UserInfo) GetCreateTime() uint32 { - if x != nil { - return x.CreateTime +func (m *UserInfo) GetCreateTime() uint32 { + if m != nil { + return m.CreateTime } return 0 } -func (x *UserInfo) GetAppMangerLevel() int32 { - if x != nil { - return x.AppMangerLevel +func (m *UserInfo) GetAppMangerLevel() int32 { + if m != nil { + return m.AppMangerLevel } return 0 } type FriendInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID,omitempty"` - Remark string `protobuf:"bytes,2,opt,name=remark,proto3" json:"remark,omitempty"` - CreateTime uint32 `protobuf:"varint,3,opt,name=createTime,proto3" json:"createTime,omitempty"` - FriendUser *UserInfo `protobuf:"bytes,4,opt,name=friendUser,proto3" json:"friendUser,omitempty"` - AddSource int32 `protobuf:"varint,5,opt,name=addSource,proto3" json:"addSource,omitempty"` - OperatorUserID string `protobuf:"bytes,6,opt,name=operatorUserID,proto3" json:"operatorUserID,omitempty"` - Ex string `protobuf:"bytes,7,opt,name=ex,proto3" json:"ex,omitempty"` + OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID" json:"ownerUserID,omitempty"` + Remark string `protobuf:"bytes,2,opt,name=remark" json:"remark,omitempty"` + CreateTime uint32 `protobuf:"varint,3,opt,name=createTime" json:"createTime,omitempty"` + FriendUser *UserInfo `protobuf:"bytes,4,opt,name=friendUser" json:"friendUser,omitempty"` + AddSource int32 `protobuf:"varint,5,opt,name=addSource" json:"addSource,omitempty"` + OperatorUserID string `protobuf:"bytes,6,opt,name=operatorUserID" json:"operatorUserID,omitempty"` + Ex string `protobuf:"bytes,7,opt,name=ex" json:"ex,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *FriendInfo) Reset() { *m = FriendInfo{} } +func (m *FriendInfo) String() string { return proto.CompactTextString(m) } +func (*FriendInfo) ProtoMessage() {} +func (*FriendInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{4} } - -func (x *FriendInfo) Reset() { - *x = FriendInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FriendInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FriendInfo.Unmarshal(m, b) } - -func (x *FriendInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FriendInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FriendInfo.Marshal(b, m, deterministic) } - -func (*FriendInfo) ProtoMessage() {} - -func (x *FriendInfo) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (dst *FriendInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_FriendInfo.Merge(dst, src) } - -// Deprecated: Use FriendInfo.ProtoReflect.Descriptor instead. -func (*FriendInfo) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{4} +func (m *FriendInfo) XXX_Size() int { + return xxx_messageInfo_FriendInfo.Size(m) +} +func (m *FriendInfo) XXX_DiscardUnknown() { + xxx_messageInfo_FriendInfo.DiscardUnknown(m) } -func (x *FriendInfo) GetOwnerUserID() string { - if x != nil { - return x.OwnerUserID +var xxx_messageInfo_FriendInfo proto.InternalMessageInfo + +func (m *FriendInfo) GetOwnerUserID() string { + if m != nil { + return m.OwnerUserID } return "" } -func (x *FriendInfo) GetRemark() string { - if x != nil { - return x.Remark +func (m *FriendInfo) GetRemark() string { + if m != nil { + return m.Remark } return "" } -func (x *FriendInfo) GetCreateTime() uint32 { - if x != nil { - return x.CreateTime +func (m *FriendInfo) GetCreateTime() uint32 { + if m != nil { + return m.CreateTime } return 0 } -func (x *FriendInfo) GetFriendUser() *UserInfo { - if x != nil { - return x.FriendUser +func (m *FriendInfo) GetFriendUser() *UserInfo { + if m != nil { + return m.FriendUser } return nil } -func (x *FriendInfo) GetAddSource() int32 { - if x != nil { - return x.AddSource +func (m *FriendInfo) GetAddSource() int32 { + if m != nil { + return m.AddSource } return 0 } -func (x *FriendInfo) GetOperatorUserID() string { - if x != nil { - return x.OperatorUserID +func (m *FriendInfo) GetOperatorUserID() string { + if m != nil { + return m.OperatorUserID } return "" } -func (x *FriendInfo) GetEx() string { - if x != nil { - return x.Ex +func (m *FriendInfo) GetEx() string { + if m != nil { + return m.Ex } return "" } type BlackInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID,omitempty"` - CreateTime uint32 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime,omitempty"` - BlackUserInfo *PublicUserInfo `protobuf:"bytes,3,opt,name=blackUserInfo,proto3" json:"blackUserInfo,omitempty"` - AddSource int32 `protobuf:"varint,4,opt,name=addSource,proto3" json:"addSource,omitempty"` - OperatorUserID string `protobuf:"bytes,5,opt,name=operatorUserID,proto3" json:"operatorUserID,omitempty"` - Ex string `protobuf:"bytes,6,opt,name=ex,proto3" json:"ex,omitempty"` + OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID" json:"ownerUserID,omitempty"` + CreateTime uint32 `protobuf:"varint,2,opt,name=createTime" json:"createTime,omitempty"` + BlackUserInfo *PublicUserInfo `protobuf:"bytes,3,opt,name=blackUserInfo" json:"blackUserInfo,omitempty"` + AddSource int32 `protobuf:"varint,4,opt,name=addSource" json:"addSource,omitempty"` + OperatorUserID string `protobuf:"bytes,5,opt,name=operatorUserID" json:"operatorUserID,omitempty"` + Ex string `protobuf:"bytes,6,opt,name=ex" json:"ex,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BlackInfo) Reset() { *m = BlackInfo{} } +func (m *BlackInfo) String() string { return proto.CompactTextString(m) } +func (*BlackInfo) ProtoMessage() {} +func (*BlackInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{5} } - -func (x *BlackInfo) Reset() { - *x = BlackInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *BlackInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BlackInfo.Unmarshal(m, b) } - -func (x *BlackInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *BlackInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BlackInfo.Marshal(b, m, deterministic) } - -func (*BlackInfo) ProtoMessage() {} - -func (x *BlackInfo) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (dst *BlackInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_BlackInfo.Merge(dst, src) } - -// Deprecated: Use BlackInfo.ProtoReflect.Descriptor instead. -func (*BlackInfo) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{5} +func (m *BlackInfo) XXX_Size() int { + return xxx_messageInfo_BlackInfo.Size(m) } +func (m *BlackInfo) XXX_DiscardUnknown() { + xxx_messageInfo_BlackInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_BlackInfo proto.InternalMessageInfo -func (x *BlackInfo) GetOwnerUserID() string { - if x != nil { - return x.OwnerUserID +func (m *BlackInfo) GetOwnerUserID() string { + if m != nil { + return m.OwnerUserID } return "" } -func (x *BlackInfo) GetCreateTime() uint32 { - if x != nil { - return x.CreateTime +func (m *BlackInfo) GetCreateTime() uint32 { + if m != nil { + return m.CreateTime } return 0 } -func (x *BlackInfo) GetBlackUserInfo() *PublicUserInfo { - if x != nil { - return x.BlackUserInfo +func (m *BlackInfo) GetBlackUserInfo() *PublicUserInfo { + if m != nil { + return m.BlackUserInfo } return nil } -func (x *BlackInfo) GetAddSource() int32 { - if x != nil { - return x.AddSource +func (m *BlackInfo) GetAddSource() int32 { + if m != nil { + return m.AddSource } return 0 } -func (x *BlackInfo) GetOperatorUserID() string { - if x != nil { - return x.OperatorUserID +func (m *BlackInfo) GetOperatorUserID() string { + if m != nil { + return m.OperatorUserID } return "" } -func (x *BlackInfo) GetEx() string { - if x != nil { - return x.Ex +func (m *BlackInfo) GetEx() string { + if m != nil { + return m.Ex } return "" } type GroupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserInfo *PublicUserInfo `protobuf:"bytes,1,opt,name=userInfo,proto3" json:"userInfo,omitempty"` - GroupInfo *GroupInfo `protobuf:"bytes,2,opt,name=groupInfo,proto3" json:"groupInfo,omitempty"` - HandleResult int32 `protobuf:"varint,3,opt,name=handleResult,proto3" json:"handleResult,omitempty"` - ReqMsg string `protobuf:"bytes,4,opt,name=reqMsg,proto3" json:"reqMsg,omitempty"` - HandleMsg string `protobuf:"bytes,5,opt,name=handleMsg,proto3" json:"handleMsg,omitempty"` - ReqTime uint32 `protobuf:"varint,6,opt,name=reqTime,proto3" json:"reqTime,omitempty"` - HandleUserID string `protobuf:"bytes,7,opt,name=handleUserID,proto3" json:"handleUserID,omitempty"` - HandleTime uint32 `protobuf:"varint,8,opt,name=handleTime,proto3" json:"handleTime,omitempty"` - Ex string `protobuf:"bytes,9,opt,name=ex,proto3" json:"ex,omitempty"` + UserInfo *PublicUserInfo `protobuf:"bytes,1,opt,name=userInfo" json:"userInfo,omitempty"` + GroupInfo *GroupInfo `protobuf:"bytes,2,opt,name=groupInfo" json:"groupInfo,omitempty"` + HandleResult int32 `protobuf:"varint,3,opt,name=handleResult" json:"handleResult,omitempty"` + ReqMsg string `protobuf:"bytes,4,opt,name=reqMsg" json:"reqMsg,omitempty"` + HandleMsg string `protobuf:"bytes,5,opt,name=handleMsg" json:"handleMsg,omitempty"` + ReqTime uint32 `protobuf:"varint,6,opt,name=reqTime" json:"reqTime,omitempty"` + HandleUserID string `protobuf:"bytes,7,opt,name=handleUserID" json:"handleUserID,omitempty"` + HandleTime uint32 `protobuf:"varint,8,opt,name=handleTime" json:"handleTime,omitempty"` + Ex string `protobuf:"bytes,9,opt,name=ex" json:"ex,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GroupRequest) Reset() { *m = GroupRequest{} } +func (m *GroupRequest) String() string { return proto.CompactTextString(m) } +func (*GroupRequest) ProtoMessage() {} +func (*GroupRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{6} } - -func (x *GroupRequest) Reset() { - *x = GroupRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GroupRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GroupRequest.Unmarshal(m, b) } - -func (x *GroupRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *GroupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GroupRequest.Marshal(b, m, deterministic) } - -func (*GroupRequest) ProtoMessage() {} - -func (x *GroupRequest) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (dst *GroupRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupRequest.Merge(dst, src) } - -// Deprecated: Use GroupRequest.ProtoReflect.Descriptor instead. -func (*GroupRequest) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{6} +func (m *GroupRequest) XXX_Size() int { + return xxx_messageInfo_GroupRequest.Size(m) } +func (m *GroupRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GroupRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GroupRequest proto.InternalMessageInfo -func (x *GroupRequest) GetUserInfo() *PublicUserInfo { - if x != nil { - return x.UserInfo +func (m *GroupRequest) GetUserInfo() *PublicUserInfo { + if m != nil { + return m.UserInfo } return nil } -func (x *GroupRequest) GetGroupInfo() *GroupInfo { - if x != nil { - return x.GroupInfo +func (m *GroupRequest) GetGroupInfo() *GroupInfo { + if m != nil { + return m.GroupInfo } return nil } -func (x *GroupRequest) GetHandleResult() int32 { - if x != nil { - return x.HandleResult +func (m *GroupRequest) GetHandleResult() int32 { + if m != nil { + return m.HandleResult } return 0 } -func (x *GroupRequest) GetReqMsg() string { - if x != nil { - return x.ReqMsg +func (m *GroupRequest) GetReqMsg() string { + if m != nil { + return m.ReqMsg } return "" } -func (x *GroupRequest) GetHandleMsg() string { - if x != nil { - return x.HandleMsg +func (m *GroupRequest) GetHandleMsg() string { + if m != nil { + return m.HandleMsg } return "" } -func (x *GroupRequest) GetReqTime() uint32 { - if x != nil { - return x.ReqTime +func (m *GroupRequest) GetReqTime() uint32 { + if m != nil { + return m.ReqTime } return 0 } -func (x *GroupRequest) GetHandleUserID() string { - if x != nil { - return x.HandleUserID +func (m *GroupRequest) GetHandleUserID() string { + if m != nil { + return m.HandleUserID } return "" } -func (x *GroupRequest) GetHandleTime() uint32 { - if x != nil { - return x.HandleTime +func (m *GroupRequest) GetHandleTime() uint32 { + if m != nil { + return m.HandleTime } return 0 } -func (x *GroupRequest) GetEx() string { - if x != nil { - return x.Ex +func (m *GroupRequest) GetEx() string { + if m != nil { + return m.Ex } return "" } type FriendRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FromUserID string `protobuf:"bytes,1,opt,name=fromUserID,proto3" json:"fromUserID,omitempty"` - FromNickname string `protobuf:"bytes,2,opt,name=fromNickname,proto3" json:"fromNickname,omitempty"` - FromFaceURL string `protobuf:"bytes,3,opt,name=fromFaceURL,proto3" json:"fromFaceURL,omitempty"` - FromGender int32 `protobuf:"varint,4,opt,name=fromGender,proto3" json:"fromGender,omitempty"` - ToUserID string `protobuf:"bytes,5,opt,name=toUserID,proto3" json:"toUserID,omitempty"` - ToNickname string `protobuf:"bytes,6,opt,name=toNickname,proto3" json:"toNickname,omitempty"` - ToFaceURL string `protobuf:"bytes,7,opt,name=toFaceURL,proto3" json:"toFaceURL,omitempty"` - ToGender int32 `protobuf:"varint,8,opt,name=toGender,proto3" json:"toGender,omitempty"` - HandleResult int32 `protobuf:"varint,9,opt,name=handleResult,proto3" json:"handleResult,omitempty"` - ReqMsg string `protobuf:"bytes,10,opt,name=reqMsg,proto3" json:"reqMsg,omitempty"` - CreateTime uint32 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime,omitempty"` - HandlerUserID string `protobuf:"bytes,12,opt,name=handlerUserID,proto3" json:"handlerUserID,omitempty"` - HandleMsg string `protobuf:"bytes,13,opt,name=handleMsg,proto3" json:"handleMsg,omitempty"` - HandleTime uint32 `protobuf:"varint,14,opt,name=handleTime,proto3" json:"handleTime,omitempty"` - Ex string `protobuf:"bytes,15,opt,name=ex,proto3" json:"ex,omitempty"` + FromUserID string `protobuf:"bytes,1,opt,name=fromUserID" json:"fromUserID,omitempty"` + FromNickname string `protobuf:"bytes,2,opt,name=fromNickname" json:"fromNickname,omitempty"` + FromFaceURL string `protobuf:"bytes,3,opt,name=fromFaceURL" json:"fromFaceURL,omitempty"` + FromGender int32 `protobuf:"varint,4,opt,name=fromGender" json:"fromGender,omitempty"` + ToUserID string `protobuf:"bytes,5,opt,name=toUserID" json:"toUserID,omitempty"` + ToNickname string `protobuf:"bytes,6,opt,name=toNickname" json:"toNickname,omitempty"` + ToFaceURL string `protobuf:"bytes,7,opt,name=toFaceURL" json:"toFaceURL,omitempty"` + ToGender int32 `protobuf:"varint,8,opt,name=toGender" json:"toGender,omitempty"` + HandleResult int32 `protobuf:"varint,9,opt,name=handleResult" json:"handleResult,omitempty"` + ReqMsg string `protobuf:"bytes,10,opt,name=reqMsg" json:"reqMsg,omitempty"` + CreateTime uint32 `protobuf:"varint,11,opt,name=createTime" json:"createTime,omitempty"` + HandlerUserID string `protobuf:"bytes,12,opt,name=handlerUserID" json:"handlerUserID,omitempty"` + HandleMsg string `protobuf:"bytes,13,opt,name=handleMsg" json:"handleMsg,omitempty"` + HandleTime uint32 `protobuf:"varint,14,opt,name=handleTime" json:"handleTime,omitempty"` + Ex string `protobuf:"bytes,15,opt,name=ex" json:"ex,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *FriendRequest) Reset() { *m = FriendRequest{} } +func (m *FriendRequest) String() string { return proto.CompactTextString(m) } +func (*FriendRequest) ProtoMessage() {} +func (*FriendRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{7} } - -func (x *FriendRequest) Reset() { - *x = FriendRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FriendRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FriendRequest.Unmarshal(m, b) } - -func (x *FriendRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FriendRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FriendRequest.Marshal(b, m, deterministic) } - -func (*FriendRequest) ProtoMessage() {} - -func (x *FriendRequest) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (dst *FriendRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_FriendRequest.Merge(dst, src) } - -// Deprecated: Use FriendRequest.ProtoReflect.Descriptor instead. -func (*FriendRequest) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{7} +func (m *FriendRequest) XXX_Size() int { + return xxx_messageInfo_FriendRequest.Size(m) +} +func (m *FriendRequest) XXX_DiscardUnknown() { + xxx_messageInfo_FriendRequest.DiscardUnknown(m) } -func (x *FriendRequest) GetFromUserID() string { - if x != nil { - return x.FromUserID +var xxx_messageInfo_FriendRequest proto.InternalMessageInfo + +func (m *FriendRequest) GetFromUserID() string { + if m != nil { + return m.FromUserID } return "" } -func (x *FriendRequest) GetFromNickname() string { - if x != nil { - return x.FromNickname +func (m *FriendRequest) GetFromNickname() string { + if m != nil { + return m.FromNickname } return "" } -func (x *FriendRequest) GetFromFaceURL() string { - if x != nil { - return x.FromFaceURL +func (m *FriendRequest) GetFromFaceURL() string { + if m != nil { + return m.FromFaceURL } return "" } -func (x *FriendRequest) GetFromGender() int32 { - if x != nil { - return x.FromGender +func (m *FriendRequest) GetFromGender() int32 { + if m != nil { + return m.FromGender } return 0 } -func (x *FriendRequest) GetToUserID() string { - if x != nil { - return x.ToUserID +func (m *FriendRequest) GetToUserID() string { + if m != nil { + return m.ToUserID } return "" } -func (x *FriendRequest) GetToNickname() string { - if x != nil { - return x.ToNickname +func (m *FriendRequest) GetToNickname() string { + if m != nil { + return m.ToNickname } return "" } -func (x *FriendRequest) GetToFaceURL() string { - if x != nil { - return x.ToFaceURL +func (m *FriendRequest) GetToFaceURL() string { + if m != nil { + return m.ToFaceURL } return "" } -func (x *FriendRequest) GetToGender() int32 { - if x != nil { - return x.ToGender +func (m *FriendRequest) GetToGender() int32 { + if m != nil { + return m.ToGender } return 0 } -func (x *FriendRequest) GetHandleResult() int32 { - if x != nil { - return x.HandleResult +func (m *FriendRequest) GetHandleResult() int32 { + if m != nil { + return m.HandleResult } return 0 } -func (x *FriendRequest) GetReqMsg() string { - if x != nil { - return x.ReqMsg +func (m *FriendRequest) GetReqMsg() string { + if m != nil { + return m.ReqMsg } return "" } -func (x *FriendRequest) GetCreateTime() uint32 { - if x != nil { - return x.CreateTime +func (m *FriendRequest) GetCreateTime() uint32 { + if m != nil { + return m.CreateTime } return 0 } -func (x *FriendRequest) GetHandlerUserID() string { - if x != nil { - return x.HandlerUserID +func (m *FriendRequest) GetHandlerUserID() string { + if m != nil { + return m.HandlerUserID } return "" } -func (x *FriendRequest) GetHandleMsg() string { - if x != nil { - return x.HandleMsg +func (m *FriendRequest) GetHandleMsg() string { + if m != nil { + return m.HandleMsg } return "" } -func (x *FriendRequest) GetHandleTime() uint32 { - if x != nil { - return x.HandleTime +func (m *FriendRequest) GetHandleTime() uint32 { + if m != nil { + return m.HandleTime } return 0 } -func (x *FriendRequest) GetEx() string { - if x != nil { - return x.Ex +func (m *FriendRequest) GetEx() string { + if m != nil { + return m.Ex } return "" } type PullMessageBySeqListResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ErrCode int32 `protobuf:"varint,1,opt,name=errCode,proto3" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg,proto3" json:"errMsg,omitempty"` - List []*MsgData `protobuf:"bytes,3,rep,name=list,proto3" json:"list,omitempty"` + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + List []*MsgData `protobuf:"bytes,3,rep,name=list" json:"list,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *PullMessageBySeqListResp) Reset() { - *x = PullMessageBySeqListResp{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *PullMessageBySeqListResp) Reset() { *m = PullMessageBySeqListResp{} } +func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) } +func (*PullMessageBySeqListResp) ProtoMessage() {} +func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{8} } - -func (x *PullMessageBySeqListResp) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) } - -func (*PullMessageBySeqListResp) ProtoMessage() {} - -func (x *PullMessageBySeqListResp) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *PullMessageBySeqListResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PullMessageBySeqListResp.Marshal(b, m, deterministic) } - -// Deprecated: Use PullMessageBySeqListResp.ProtoReflect.Descriptor instead. -func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{8} +func (dst *PullMessageBySeqListResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_PullMessageBySeqListResp.Merge(dst, src) +} +func (m *PullMessageBySeqListResp) XXX_Size() int { + return xxx_messageInfo_PullMessageBySeqListResp.Size(m) } +func (m *PullMessageBySeqListResp) XXX_DiscardUnknown() { + xxx_messageInfo_PullMessageBySeqListResp.DiscardUnknown(m) +} + +var xxx_messageInfo_PullMessageBySeqListResp proto.InternalMessageInfo -func (x *PullMessageBySeqListResp) GetErrCode() int32 { - if x != nil { - return x.ErrCode +func (m *PullMessageBySeqListResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode } return 0 } -func (x *PullMessageBySeqListResp) GetErrMsg() string { - if x != nil { - return x.ErrMsg +func (m *PullMessageBySeqListResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg } return "" } -func (x *PullMessageBySeqListResp) GetList() []*MsgData { - if x != nil { - return x.List +func (m *PullMessageBySeqListResp) GetList() []*MsgData { + if m != nil { + return m.List } return nil } type PullMessageBySeqListReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID,proto3" json:"operationID,omitempty"` - SeqList []uint32 `protobuf:"varint,3,rep,packed,name=seqList,proto3" json:"seqList,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + SeqList []uint32 `protobuf:"varint,3,rep,packed,name=seqList" json:"seqList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *PullMessageBySeqListReq) Reset() { - *x = PullMessageBySeqListReq{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *PullMessageBySeqListReq) Reset() { *m = PullMessageBySeqListReq{} } +func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) } +func (*PullMessageBySeqListReq) ProtoMessage() {} +func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{9} } - -func (x *PullMessageBySeqListReq) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) } - -func (*PullMessageBySeqListReq) ProtoMessage() {} - -func (x *PullMessageBySeqListReq) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *PullMessageBySeqListReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PullMessageBySeqListReq.Marshal(b, m, deterministic) } - -// Deprecated: Use PullMessageBySeqListReq.ProtoReflect.Descriptor instead. -func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{9} +func (dst *PullMessageBySeqListReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_PullMessageBySeqListReq.Merge(dst, src) +} +func (m *PullMessageBySeqListReq) XXX_Size() int { + return xxx_messageInfo_PullMessageBySeqListReq.Size(m) +} +func (m *PullMessageBySeqListReq) XXX_DiscardUnknown() { + xxx_messageInfo_PullMessageBySeqListReq.DiscardUnknown(m) } -func (x *PullMessageBySeqListReq) GetUserID() string { - if x != nil { - return x.UserID +var xxx_messageInfo_PullMessageBySeqListReq proto.InternalMessageInfo + +func (m *PullMessageBySeqListReq) GetUserID() string { + if m != nil { + return m.UserID } return "" } -func (x *PullMessageBySeqListReq) GetOperationID() string { - if x != nil { - return x.OperationID +func (m *PullMessageBySeqListReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *PullMessageBySeqListReq) GetSeqList() []uint32 { - if x != nil { - return x.SeqList +func (m *PullMessageBySeqListReq) GetSeqList() []uint32 { + if m != nil { + return m.SeqList } return nil } type GetMaxAndMinSeqReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *GetMaxAndMinSeqReq) Reset() { - *x = GetMaxAndMinSeqReq{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetMaxAndMinSeqReq) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} } +func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) } +func (*GetMaxAndMinSeqReq) ProtoMessage() {} +func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{10} } - -func (*GetMaxAndMinSeqReq) ProtoMessage() {} - -func (x *GetMaxAndMinSeqReq) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) } - -// Deprecated: Use GetMaxAndMinSeqReq.ProtoReflect.Descriptor instead. -func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{10} +func (m *GetMaxAndMinSeqReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetMaxAndMinSeqReq.Marshal(b, m, deterministic) } - -type GetMaxAndMinSeqResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - MaxSeq uint32 `protobuf:"varint,1,opt,name=maxSeq,proto3" json:"maxSeq,omitempty"` - MinSeq uint32 `protobuf:"varint,2,opt,name=minSeq,proto3" json:"minSeq,omitempty"` +func (dst *GetMaxAndMinSeqReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetMaxAndMinSeqReq.Merge(dst, src) } - -func (x *GetMaxAndMinSeqResp) Reset() { - *x = GetMaxAndMinSeqResp{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GetMaxAndMinSeqReq) XXX_Size() int { + return xxx_messageInfo_GetMaxAndMinSeqReq.Size(m) } - -func (x *GetMaxAndMinSeqResp) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *GetMaxAndMinSeqReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetMaxAndMinSeqReq.DiscardUnknown(m) } -func (*GetMaxAndMinSeqResp) ProtoMessage() {} +var xxx_messageInfo_GetMaxAndMinSeqReq proto.InternalMessageInfo -func (x *GetMaxAndMinSeqResp) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +type GetMaxAndMinSeqResp struct { + MaxSeq uint32 `protobuf:"varint,1,opt,name=maxSeq" json:"maxSeq,omitempty"` + MinSeq uint32 `protobuf:"varint,2,opt,name=minSeq" json:"minSeq,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// Deprecated: Use GetMaxAndMinSeqResp.ProtoReflect.Descriptor instead. +func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} } +func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) } +func (*GetMaxAndMinSeqResp) ProtoMessage() {} func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{11} + return fileDescriptor_ws_c5eabd6c93a174c0, []int{11} +} +func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) +} +func (m *GetMaxAndMinSeqResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetMaxAndMinSeqResp.Marshal(b, m, deterministic) +} +func (dst *GetMaxAndMinSeqResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetMaxAndMinSeqResp.Merge(dst, src) +} +func (m *GetMaxAndMinSeqResp) XXX_Size() int { + return xxx_messageInfo_GetMaxAndMinSeqResp.Size(m) +} +func (m *GetMaxAndMinSeqResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetMaxAndMinSeqResp.DiscardUnknown(m) } -func (x *GetMaxAndMinSeqResp) GetMaxSeq() uint32 { - if x != nil { - return x.MaxSeq +var xxx_messageInfo_GetMaxAndMinSeqResp proto.InternalMessageInfo + +func (m *GetMaxAndMinSeqResp) GetMaxSeq() uint32 { + if m != nil { + return m.MaxSeq } return 0 } -func (x *GetMaxAndMinSeqResp) GetMinSeq() uint32 { - if x != nil { - return x.MinSeq +func (m *GetMaxAndMinSeqResp) GetMinSeq() uint32 { + if m != nil { + return m.MinSeq } return 0 } type UserSendMsgResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ServerMsgID string `protobuf:"bytes,1,opt,name=serverMsgID,proto3" json:"serverMsgID,omitempty"` - ClientMsgID string `protobuf:"bytes,2,opt,name=clientMsgID,proto3" json:"clientMsgID,omitempty"` - SendTime int64 `protobuf:"varint,3,opt,name=sendTime,proto3" json:"sendTime,omitempty"` + ServerMsgID string `protobuf:"bytes,1,opt,name=serverMsgID" json:"serverMsgID,omitempty"` + ClientMsgID string `protobuf:"bytes,2,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + SendTime int64 `protobuf:"varint,3,opt,name=sendTime" json:"sendTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *UserSendMsgResp) Reset() { - *x = UserSendMsgResp{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *UserSendMsgResp) Reset() { *m = UserSendMsgResp{} } +func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) } +func (*UserSendMsgResp) ProtoMessage() {} +func (*UserSendMsgResp) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{12} } - -func (x *UserSendMsgResp) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) } - -func (*UserSendMsgResp) ProtoMessage() {} - -func (x *UserSendMsgResp) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *UserSendMsgResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserSendMsgResp.Marshal(b, m, deterministic) } - -// Deprecated: Use UserSendMsgResp.ProtoReflect.Descriptor instead. -func (*UserSendMsgResp) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{12} +func (dst *UserSendMsgResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserSendMsgResp.Merge(dst, src) +} +func (m *UserSendMsgResp) XXX_Size() int { + return xxx_messageInfo_UserSendMsgResp.Size(m) } +func (m *UserSendMsgResp) XXX_DiscardUnknown() { + xxx_messageInfo_UserSendMsgResp.DiscardUnknown(m) +} + +var xxx_messageInfo_UserSendMsgResp proto.InternalMessageInfo -func (x *UserSendMsgResp) GetServerMsgID() string { - if x != nil { - return x.ServerMsgID +func (m *UserSendMsgResp) GetServerMsgID() string { + if m != nil { + return m.ServerMsgID } return "" } -func (x *UserSendMsgResp) GetClientMsgID() string { - if x != nil { - return x.ClientMsgID +func (m *UserSendMsgResp) GetClientMsgID() string { + if m != nil { + return m.ClientMsgID } return "" } -func (x *UserSendMsgResp) GetSendTime() int64 { - if x != nil { - return x.SendTime +func (m *UserSendMsgResp) GetSendTime() int64 { + if m != nil { + return m.SendTime } return 0 } type MsgData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SendID string `protobuf:"bytes,1,opt,name=sendID,proto3" json:"sendID,omitempty"` - RecvID string `protobuf:"bytes,2,opt,name=recvID,proto3" json:"recvID,omitempty"` - GroupID string `protobuf:"bytes,3,opt,name=groupID,proto3" json:"groupID,omitempty"` - ClientMsgID string `protobuf:"bytes,4,opt,name=clientMsgID,proto3" json:"clientMsgID,omitempty"` - ServerMsgID string `protobuf:"bytes,5,opt,name=serverMsgID,proto3" json:"serverMsgID,omitempty"` - SenderPlatformID int32 `protobuf:"varint,6,opt,name=senderPlatformID,proto3" json:"senderPlatformID,omitempty"` - SenderNickname string `protobuf:"bytes,7,opt,name=senderNickname,proto3" json:"senderNickname,omitempty"` - SenderFaceURL string `protobuf:"bytes,8,opt,name=senderFaceURL,proto3" json:"senderFaceURL,omitempty"` - SessionType int32 `protobuf:"varint,9,opt,name=sessionType,proto3" json:"sessionType,omitempty"` - MsgFrom int32 `protobuf:"varint,10,opt,name=msgFrom,proto3" json:"msgFrom,omitempty"` - ContentType int32 `protobuf:"varint,11,opt,name=contentType,proto3" json:"contentType,omitempty"` - Content []byte `protobuf:"bytes,12,opt,name=content,proto3" json:"content,omitempty"` - Seq uint32 `protobuf:"varint,14,opt,name=seq,proto3" json:"seq,omitempty"` - SendTime int64 `protobuf:"varint,15,opt,name=sendTime,proto3" json:"sendTime,omitempty"` - CreateTime int64 `protobuf:"varint,16,opt,name=createTime,proto3" json:"createTime,omitempty"` - Status int32 `protobuf:"varint,17,opt,name=status,proto3" json:"status,omitempty"` - Options map[string]bool `protobuf:"bytes,18,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,19,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` -} - -func (x *MsgData) Reset() { - *x = MsgData{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MsgData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MsgData) ProtoMessage() {} - -func (x *MsgData) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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 MsgData.ProtoReflect.Descriptor instead. + SendID string `protobuf:"bytes,1,opt,name=sendID" json:"sendID,omitempty"` + RecvID string `protobuf:"bytes,2,opt,name=recvID" json:"recvID,omitempty"` + GroupID string `protobuf:"bytes,3,opt,name=groupID" json:"groupID,omitempty"` + ClientMsgID string `protobuf:"bytes,4,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + ServerMsgID string `protobuf:"bytes,5,opt,name=serverMsgID" json:"serverMsgID,omitempty"` + SenderPlatformID int32 `protobuf:"varint,6,opt,name=senderPlatformID" json:"senderPlatformID,omitempty"` + SenderNickname string `protobuf:"bytes,7,opt,name=senderNickname" json:"senderNickname,omitempty"` + SenderFaceURL string `protobuf:"bytes,8,opt,name=senderFaceURL" json:"senderFaceURL,omitempty"` + SessionType int32 `protobuf:"varint,9,opt,name=sessionType" json:"sessionType,omitempty"` + MsgFrom int32 `protobuf:"varint,10,opt,name=msgFrom" json:"msgFrom,omitempty"` + ContentType int32 `protobuf:"varint,11,opt,name=contentType" json:"contentType,omitempty"` + Content []byte `protobuf:"bytes,12,opt,name=content,proto3" json:"content,omitempty"` + Seq uint32 `protobuf:"varint,14,opt,name=seq" json:"seq,omitempty"` + SendTime int64 `protobuf:"varint,15,opt,name=sendTime" json:"sendTime,omitempty"` + CreateTime int64 `protobuf:"varint,16,opt,name=createTime" json:"createTime,omitempty"` + Status int32 `protobuf:"varint,17,opt,name=status" json:"status,omitempty"` + Options map[string]bool `protobuf:"bytes,18,rep,name=options" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,19,opt,name=offlinePushInfo" json:"offlinePushInfo,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *MsgData) Reset() { *m = MsgData{} } +func (m *MsgData) String() string { return proto.CompactTextString(m) } +func (*MsgData) ProtoMessage() {} func (*MsgData) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{13} + return fileDescriptor_ws_c5eabd6c93a174c0, []int{13} +} +func (m *MsgData) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MsgData.Unmarshal(m, b) +} +func (m *MsgData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MsgData.Marshal(b, m, deterministic) +} +func (dst *MsgData) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgData.Merge(dst, src) +} +func (m *MsgData) XXX_Size() int { + return xxx_messageInfo_MsgData.Size(m) +} +func (m *MsgData) XXX_DiscardUnknown() { + xxx_messageInfo_MsgData.DiscardUnknown(m) } -func (x *MsgData) GetSendID() string { - if x != nil { - return x.SendID +var xxx_messageInfo_MsgData proto.InternalMessageInfo + +func (m *MsgData) GetSendID() string { + if m != nil { + return m.SendID } return "" } -func (x *MsgData) GetRecvID() string { - if x != nil { - return x.RecvID +func (m *MsgData) GetRecvID() string { + if m != nil { + return m.RecvID } return "" } -func (x *MsgData) GetGroupID() string { - if x != nil { - return x.GroupID +func (m *MsgData) GetGroupID() string { + if m != nil { + return m.GroupID } return "" } -func (x *MsgData) GetClientMsgID() string { - if x != nil { - return x.ClientMsgID +func (m *MsgData) GetClientMsgID() string { + if m != nil { + return m.ClientMsgID } return "" } -func (x *MsgData) GetServerMsgID() string { - if x != nil { - return x.ServerMsgID +func (m *MsgData) GetServerMsgID() string { + if m != nil { + return m.ServerMsgID } return "" } -func (x *MsgData) GetSenderPlatformID() int32 { - if x != nil { - return x.SenderPlatformID +func (m *MsgData) GetSenderPlatformID() int32 { + if m != nil { + return m.SenderPlatformID } return 0 } -func (x *MsgData) GetSenderNickname() string { - if x != nil { - return x.SenderNickname +func (m *MsgData) GetSenderNickname() string { + if m != nil { + return m.SenderNickname } return "" } -func (x *MsgData) GetSenderFaceURL() string { - if x != nil { - return x.SenderFaceURL +func (m *MsgData) GetSenderFaceURL() string { + if m != nil { + return m.SenderFaceURL } return "" } -func (x *MsgData) GetSessionType() int32 { - if x != nil { - return x.SessionType +func (m *MsgData) GetSessionType() int32 { + if m != nil { + return m.SessionType } return 0 } -func (x *MsgData) GetMsgFrom() int32 { - if x != nil { - return x.MsgFrom +func (m *MsgData) GetMsgFrom() int32 { + if m != nil { + return m.MsgFrom } return 0 } -func (x *MsgData) GetContentType() int32 { - if x != nil { - return x.ContentType +func (m *MsgData) GetContentType() int32 { + if m != nil { + return m.ContentType } return 0 } -func (x *MsgData) GetContent() []byte { - if x != nil { - return x.Content +func (m *MsgData) GetContent() []byte { + if m != nil { + return m.Content } return nil } -func (x *MsgData) GetSeq() uint32 { - if x != nil { - return x.Seq +func (m *MsgData) GetSeq() uint32 { + if m != nil { + return m.Seq } return 0 } -func (x *MsgData) GetSendTime() int64 { - if x != nil { - return x.SendTime +func (m *MsgData) GetSendTime() int64 { + if m != nil { + return m.SendTime } return 0 } -func (x *MsgData) GetCreateTime() int64 { - if x != nil { - return x.CreateTime +func (m *MsgData) GetCreateTime() int64 { + if m != nil { + return m.CreateTime } return 0 } -func (x *MsgData) GetStatus() int32 { - if x != nil { - return x.Status +func (m *MsgData) GetStatus() int32 { + if m != nil { + return m.Status } return 0 } -func (x *MsgData) GetOptions() map[string]bool { - if x != nil { - return x.Options +func (m *MsgData) GetOptions() map[string]bool { + if m != nil { + return m.Options } return nil } -func (x *MsgData) GetOfflinePushInfo() *OfflinePushInfo { - if x != nil { - return x.OfflinePushInfo +func (m *MsgData) GetOfflinePushInfo() *OfflinePushInfo { + if m != nil { + return m.OfflinePushInfo } return nil } type OfflinePushInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Desc string `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"` - Ex string `protobuf:"bytes,3,opt,name=ex,proto3" json:"ex,omitempty"` - IOSPushSound string `protobuf:"bytes,4,opt,name=iOSPushSound,proto3" json:"iOSPushSound,omitempty"` - IOSBadgeCount bool `protobuf:"varint,5,opt,name=iOSBadgeCount,proto3" json:"iOSBadgeCount,omitempty"` + Title string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` + Desc string `protobuf:"bytes,2,opt,name=desc" json:"desc,omitempty"` + Ex string `protobuf:"bytes,3,opt,name=ex" json:"ex,omitempty"` + IOSPushSound string `protobuf:"bytes,4,opt,name=iOSPushSound" json:"iOSPushSound,omitempty"` + IOSBadgeCount bool `protobuf:"varint,5,opt,name=iOSBadgeCount" json:"iOSBadgeCount,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *OfflinePushInfo) Reset() { *m = OfflinePushInfo{} } +func (m *OfflinePushInfo) String() string { return proto.CompactTextString(m) } +func (*OfflinePushInfo) ProtoMessage() {} +func (*OfflinePushInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{14} } - -func (x *OfflinePushInfo) Reset() { - *x = OfflinePushInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) } - -func (x *OfflinePushInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *OfflinePushInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_OfflinePushInfo.Marshal(b, m, deterministic) } - -func (*OfflinePushInfo) ProtoMessage() {} - -func (x *OfflinePushInfo) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (dst *OfflinePushInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_OfflinePushInfo.Merge(dst, src) } - -// Deprecated: Use OfflinePushInfo.ProtoReflect.Descriptor instead. -func (*OfflinePushInfo) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{14} +func (m *OfflinePushInfo) XXX_Size() int { + return xxx_messageInfo_OfflinePushInfo.Size(m) +} +func (m *OfflinePushInfo) XXX_DiscardUnknown() { + xxx_messageInfo_OfflinePushInfo.DiscardUnknown(m) } -func (x *OfflinePushInfo) GetTitle() string { - if x != nil { - return x.Title +var xxx_messageInfo_OfflinePushInfo proto.InternalMessageInfo + +func (m *OfflinePushInfo) GetTitle() string { + if m != nil { + return m.Title } return "" } -func (x *OfflinePushInfo) GetDesc() string { - if x != nil { - return x.Desc +func (m *OfflinePushInfo) GetDesc() string { + if m != nil { + return m.Desc } return "" } -func (x *OfflinePushInfo) GetEx() string { - if x != nil { - return x.Ex +func (m *OfflinePushInfo) GetEx() string { + if m != nil { + return m.Ex } return "" } -func (x *OfflinePushInfo) GetIOSPushSound() string { - if x != nil { - return x.IOSPushSound +func (m *OfflinePushInfo) GetIOSPushSound() string { + if m != nil { + return m.IOSPushSound } return "" } -func (x *OfflinePushInfo) GetIOSBadgeCount() bool { - if x != nil { - return x.IOSBadgeCount +func (m *OfflinePushInfo) GetIOSBadgeCount() bool { + if m != nil { + return m.IOSBadgeCount } return false } type TipsComm struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Detail []byte `protobuf:"bytes,1,opt,name=detail,proto3" json:"detail,omitempty"` - DefaultTips string `protobuf:"bytes,2,opt,name=defaultTips,proto3" json:"defaultTips,omitempty"` - JsonDetail string `protobuf:"bytes,3,opt,name=jsonDetail,proto3" json:"jsonDetail,omitempty"` + Detail []byte `protobuf:"bytes,1,opt,name=detail,proto3" json:"detail,omitempty"` + DefaultTips string `protobuf:"bytes,2,opt,name=defaultTips" json:"defaultTips,omitempty"` + JsonDetail string `protobuf:"bytes,3,opt,name=jsonDetail" json:"jsonDetail,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *TipsComm) Reset() { - *x = TipsComm{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *TipsComm) Reset() { *m = TipsComm{} } +func (m *TipsComm) String() string { return proto.CompactTextString(m) } +func (*TipsComm) ProtoMessage() {} +func (*TipsComm) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{15} } - -func (x *TipsComm) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *TipsComm) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_TipsComm.Unmarshal(m, b) } - -func (*TipsComm) ProtoMessage() {} - -func (x *TipsComm) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *TipsComm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_TipsComm.Marshal(b, m, deterministic) } - -// Deprecated: Use TipsComm.ProtoReflect.Descriptor instead. -func (*TipsComm) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{15} +func (dst *TipsComm) XXX_Merge(src proto.Message) { + xxx_messageInfo_TipsComm.Merge(dst, src) +} +func (m *TipsComm) XXX_Size() int { + return xxx_messageInfo_TipsComm.Size(m) } +func (m *TipsComm) XXX_DiscardUnknown() { + xxx_messageInfo_TipsComm.DiscardUnknown(m) +} + +var xxx_messageInfo_TipsComm proto.InternalMessageInfo -func (x *TipsComm) GetDetail() []byte { - if x != nil { - return x.Detail +func (m *TipsComm) GetDetail() []byte { + if m != nil { + return m.Detail } return nil } -func (x *TipsComm) GetDefaultTips() string { - if x != nil { - return x.DefaultTips +func (m *TipsComm) GetDefaultTips() string { + if m != nil { + return m.DefaultTips } return "" } -func (x *TipsComm) GetJsonDetail() string { - if x != nil { - return x.JsonDetail +func (m *TipsComm) GetJsonDetail() string { + if m != nil { + return m.JsonDetail } return "" } -// OnGroupCreated() +// OnGroupCreated() type GroupCreatedTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` - OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` - MemberList []*GroupMemberFullInfo `protobuf:"bytes,3,rep,name=memberList,proto3" json:"memberList,omitempty"` - OperationTime int64 `protobuf:"varint,4,opt,name=operationTime,proto3" json:"operationTime,omitempty"` - GroupOwnerUser *GroupMemberFullInfo `protobuf:"bytes,5,opt,name=groupOwnerUser,proto3" json:"groupOwnerUser,omitempty"` + Group *GroupInfo `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` + OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser" json:"opUser,omitempty"` + MemberList []*GroupMemberFullInfo `protobuf:"bytes,3,rep,name=memberList" json:"memberList,omitempty"` + OperationTime int64 `protobuf:"varint,4,opt,name=operationTime" json:"operationTime,omitempty"` + GroupOwnerUser *GroupMemberFullInfo `protobuf:"bytes,5,opt,name=groupOwnerUser" json:"groupOwnerUser,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GroupCreatedTips) Reset() { *m = GroupCreatedTips{} } +func (m *GroupCreatedTips) String() string { return proto.CompactTextString(m) } +func (*GroupCreatedTips) ProtoMessage() {} +func (*GroupCreatedTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{16} } - -func (x *GroupCreatedTips) Reset() { - *x = GroupCreatedTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) } - -func (x *GroupCreatedTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *GroupCreatedTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GroupCreatedTips.Marshal(b, m, deterministic) } - -func (*GroupCreatedTips) ProtoMessage() {} - -func (x *GroupCreatedTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (dst *GroupCreatedTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupCreatedTips.Merge(dst, src) } - -// Deprecated: Use GroupCreatedTips.ProtoReflect.Descriptor instead. -func (*GroupCreatedTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{16} +func (m *GroupCreatedTips) XXX_Size() int { + return xxx_messageInfo_GroupCreatedTips.Size(m) +} +func (m *GroupCreatedTips) XXX_DiscardUnknown() { + xxx_messageInfo_GroupCreatedTips.DiscardUnknown(m) } -func (x *GroupCreatedTips) GetGroup() *GroupInfo { - if x != nil { - return x.Group +var xxx_messageInfo_GroupCreatedTips proto.InternalMessageInfo + +func (m *GroupCreatedTips) GetGroup() *GroupInfo { + if m != nil { + return m.Group } return nil } -func (x *GroupCreatedTips) GetOpUser() *GroupMemberFullInfo { - if x != nil { - return x.OpUser +func (m *GroupCreatedTips) GetOpUser() *GroupMemberFullInfo { + if m != nil { + return m.OpUser } return nil } -func (x *GroupCreatedTips) GetMemberList() []*GroupMemberFullInfo { - if x != nil { - return x.MemberList +func (m *GroupCreatedTips) GetMemberList() []*GroupMemberFullInfo { + if m != nil { + return m.MemberList } return nil } -func (x *GroupCreatedTips) GetOperationTime() int64 { - if x != nil { - return x.OperationTime +func (m *GroupCreatedTips) GetOperationTime() int64 { + if m != nil { + return m.OperationTime } return 0 } -func (x *GroupCreatedTips) GetGroupOwnerUser() *GroupMemberFullInfo { - if x != nil { - return x.GroupOwnerUser +func (m *GroupCreatedTips) GetGroupOwnerUser() *GroupMemberFullInfo { + if m != nil { + return m.GroupOwnerUser } return nil } -// OnGroupInfoSet() +// OnGroupInfoSet() type GroupInfoSetTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OpUser *GroupMemberFullInfo `protobuf:"bytes,1,opt,name=opUser,proto3" json:"opUser,omitempty"` //who do this - MuteTime int64 `protobuf:"varint,2,opt,name=muteTime,proto3" json:"muteTime,omitempty"` - Group *GroupInfo `protobuf:"bytes,3,opt,name=group,proto3" json:"group,omitempty"` + OpUser *GroupMemberFullInfo `protobuf:"bytes,1,opt,name=opUser" json:"opUser,omitempty"` + MuteTime int64 `protobuf:"varint,2,opt,name=muteTime" json:"muteTime,omitempty"` + Group *GroupInfo `protobuf:"bytes,3,opt,name=group" json:"group,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GroupInfoSetTips) Reset() { - *x = GroupInfoSetTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GroupInfoSetTips) Reset() { *m = GroupInfoSetTips{} } +func (m *GroupInfoSetTips) String() string { return proto.CompactTextString(m) } +func (*GroupInfoSetTips) ProtoMessage() {} +func (*GroupInfoSetTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{17} } - -func (x *GroupInfoSetTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) } - -func (*GroupInfoSetTips) ProtoMessage() {} - -func (x *GroupInfoSetTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *GroupInfoSetTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GroupInfoSetTips.Marshal(b, m, deterministic) } - -// Deprecated: Use GroupInfoSetTips.ProtoReflect.Descriptor instead. -func (*GroupInfoSetTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{17} +func (dst *GroupInfoSetTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupInfoSetTips.Merge(dst, src) +} +func (m *GroupInfoSetTips) XXX_Size() int { + return xxx_messageInfo_GroupInfoSetTips.Size(m) } +func (m *GroupInfoSetTips) XXX_DiscardUnknown() { + xxx_messageInfo_GroupInfoSetTips.DiscardUnknown(m) +} + +var xxx_messageInfo_GroupInfoSetTips proto.InternalMessageInfo -func (x *GroupInfoSetTips) GetOpUser() *GroupMemberFullInfo { - if x != nil { - return x.OpUser +func (m *GroupInfoSetTips) GetOpUser() *GroupMemberFullInfo { + if m != nil { + return m.OpUser } return nil } -func (x *GroupInfoSetTips) GetMuteTime() int64 { - if x != nil { - return x.MuteTime +func (m *GroupInfoSetTips) GetMuteTime() int64 { + if m != nil { + return m.MuteTime } return 0 } -func (x *GroupInfoSetTips) GetGroup() *GroupInfo { - if x != nil { - return x.Group +func (m *GroupInfoSetTips) GetGroup() *GroupInfo { + if m != nil { + return m.Group } return nil } -// OnJoinGroupApplication() +// OnJoinGroupApplication() type JoinGroupApplicationTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` - Applicant *PublicUserInfo `protobuf:"bytes,2,opt,name=applicant,proto3" json:"applicant,omitempty"` - ReqMsg string `protobuf:"bytes,3,opt,name=reqMsg,proto3" json:"reqMsg,omitempty"` + Group *GroupInfo `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` + Applicant *PublicUserInfo `protobuf:"bytes,2,opt,name=applicant" json:"applicant,omitempty"` + ReqMsg string `protobuf:"bytes,3,opt,name=reqMsg" json:"reqMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *JoinGroupApplicationTips) Reset() { - *x = JoinGroupApplicationTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *JoinGroupApplicationTips) Reset() { *m = JoinGroupApplicationTips{} } +func (m *JoinGroupApplicationTips) String() string { return proto.CompactTextString(m) } +func (*JoinGroupApplicationTips) ProtoMessage() {} +func (*JoinGroupApplicationTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{18} } - -func (x *JoinGroupApplicationTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) } - -func (*JoinGroupApplicationTips) ProtoMessage() {} - -func (x *JoinGroupApplicationTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *JoinGroupApplicationTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_JoinGroupApplicationTips.Marshal(b, m, deterministic) } - -// Deprecated: Use JoinGroupApplicationTips.ProtoReflect.Descriptor instead. -func (*JoinGroupApplicationTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{18} +func (dst *JoinGroupApplicationTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_JoinGroupApplicationTips.Merge(dst, src) +} +func (m *JoinGroupApplicationTips) XXX_Size() int { + return xxx_messageInfo_JoinGroupApplicationTips.Size(m) +} +func (m *JoinGroupApplicationTips) XXX_DiscardUnknown() { + xxx_messageInfo_JoinGroupApplicationTips.DiscardUnknown(m) } -func (x *JoinGroupApplicationTips) GetGroup() *GroupInfo { - if x != nil { - return x.Group +var xxx_messageInfo_JoinGroupApplicationTips proto.InternalMessageInfo + +func (m *JoinGroupApplicationTips) GetGroup() *GroupInfo { + if m != nil { + return m.Group } return nil } -func (x *JoinGroupApplicationTips) GetApplicant() *PublicUserInfo { - if x != nil { - return x.Applicant +func (m *JoinGroupApplicationTips) GetApplicant() *PublicUserInfo { + if m != nil { + return m.Applicant } return nil } -func (x *JoinGroupApplicationTips) GetReqMsg() string { - if x != nil { - return x.ReqMsg +func (m *JoinGroupApplicationTips) GetReqMsg() string { + if m != nil { + return m.ReqMsg } return "" } -// OnQuitGroup() -//Actively leave the group +// OnQuitGroup() +// Actively leave the group type MemberQuitTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` - QuitUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=quitUser,proto3" json:"quitUser,omitempty"` - OperationTime int64 `protobuf:"varint,3,opt,name=operationTime,proto3" json:"operationTime,omitempty"` + Group *GroupInfo `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` + QuitUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=quitUser" json:"quitUser,omitempty"` + OperationTime int64 `protobuf:"varint,3,opt,name=operationTime" json:"operationTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *MemberQuitTips) Reset() { - *x = MemberQuitTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *MemberQuitTips) Reset() { *m = MemberQuitTips{} } +func (m *MemberQuitTips) String() string { return proto.CompactTextString(m) } +func (*MemberQuitTips) ProtoMessage() {} +func (*MemberQuitTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{19} } - -func (x *MemberQuitTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) } - -func (*MemberQuitTips) ProtoMessage() {} - -func (x *MemberQuitTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *MemberQuitTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MemberQuitTips.Marshal(b, m, deterministic) } - -// Deprecated: Use MemberQuitTips.ProtoReflect.Descriptor instead. -func (*MemberQuitTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{19} +func (dst *MemberQuitTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_MemberQuitTips.Merge(dst, src) +} +func (m *MemberQuitTips) XXX_Size() int { + return xxx_messageInfo_MemberQuitTips.Size(m) } +func (m *MemberQuitTips) XXX_DiscardUnknown() { + xxx_messageInfo_MemberQuitTips.DiscardUnknown(m) +} + +var xxx_messageInfo_MemberQuitTips proto.InternalMessageInfo -func (x *MemberQuitTips) GetGroup() *GroupInfo { - if x != nil { - return x.Group +func (m *MemberQuitTips) GetGroup() *GroupInfo { + if m != nil { + return m.Group } return nil } -func (x *MemberQuitTips) GetQuitUser() *GroupMemberFullInfo { - if x != nil { - return x.QuitUser +func (m *MemberQuitTips) GetQuitUser() *GroupMemberFullInfo { + if m != nil { + return m.QuitUser } return nil } -func (x *MemberQuitTips) GetOperationTime() int64 { - if x != nil { - return x.OperationTime +func (m *MemberQuitTips) GetOperationTime() int64 { + if m != nil { + return m.OperationTime } return 0 } -// OnApplicationGroupAccepted() +// OnApplicationGroupAccepted() type GroupApplicationAcceptedTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` - OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` - HandleMsg string `protobuf:"bytes,4,opt,name=handleMsg,proto3" json:"handleMsg,omitempty"` + Group *GroupInfo `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` + OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser" json:"opUser,omitempty"` + HandleMsg string `protobuf:"bytes,4,opt,name=handleMsg" json:"handleMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GroupApplicationAcceptedTips) Reset() { - *x = GroupApplicationAcceptedTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GroupApplicationAcceptedTips) Reset() { *m = GroupApplicationAcceptedTips{} } +func (m *GroupApplicationAcceptedTips) String() string { return proto.CompactTextString(m) } +func (*GroupApplicationAcceptedTips) ProtoMessage() {} +func (*GroupApplicationAcceptedTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{20} } - -func (x *GroupApplicationAcceptedTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) } - -func (*GroupApplicationAcceptedTips) ProtoMessage() {} - -func (x *GroupApplicationAcceptedTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *GroupApplicationAcceptedTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GroupApplicationAcceptedTips.Marshal(b, m, deterministic) } - -// Deprecated: Use GroupApplicationAcceptedTips.ProtoReflect.Descriptor instead. -func (*GroupApplicationAcceptedTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{20} +func (dst *GroupApplicationAcceptedTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupApplicationAcceptedTips.Merge(dst, src) +} +func (m *GroupApplicationAcceptedTips) XXX_Size() int { + return xxx_messageInfo_GroupApplicationAcceptedTips.Size(m) +} +func (m *GroupApplicationAcceptedTips) XXX_DiscardUnknown() { + xxx_messageInfo_GroupApplicationAcceptedTips.DiscardUnknown(m) } -func (x *GroupApplicationAcceptedTips) GetGroup() *GroupInfo { - if x != nil { - return x.Group +var xxx_messageInfo_GroupApplicationAcceptedTips proto.InternalMessageInfo + +func (m *GroupApplicationAcceptedTips) GetGroup() *GroupInfo { + if m != nil { + return m.Group } return nil } -func (x *GroupApplicationAcceptedTips) GetOpUser() *GroupMemberFullInfo { - if x != nil { - return x.OpUser +func (m *GroupApplicationAcceptedTips) GetOpUser() *GroupMemberFullInfo { + if m != nil { + return m.OpUser } return nil } -func (x *GroupApplicationAcceptedTips) GetHandleMsg() string { - if x != nil { - return x.HandleMsg +func (m *GroupApplicationAcceptedTips) GetHandleMsg() string { + if m != nil { + return m.HandleMsg } return "" } -// OnApplicationGroupRejected() +// OnApplicationGroupRejected() type GroupApplicationRejectedTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` - OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` - HandleMsg string `protobuf:"bytes,4,opt,name=handleMsg,proto3" json:"handleMsg,omitempty"` + Group *GroupInfo `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` + OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser" json:"opUser,omitempty"` + HandleMsg string `protobuf:"bytes,4,opt,name=handleMsg" json:"handleMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GroupApplicationRejectedTips) Reset() { - *x = GroupApplicationRejectedTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GroupApplicationRejectedTips) Reset() { *m = GroupApplicationRejectedTips{} } +func (m *GroupApplicationRejectedTips) String() string { return proto.CompactTextString(m) } +func (*GroupApplicationRejectedTips) ProtoMessage() {} +func (*GroupApplicationRejectedTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{21} } - -func (x *GroupApplicationRejectedTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) } - -func (*GroupApplicationRejectedTips) ProtoMessage() {} - -func (x *GroupApplicationRejectedTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *GroupApplicationRejectedTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GroupApplicationRejectedTips.Marshal(b, m, deterministic) } - -// Deprecated: Use GroupApplicationRejectedTips.ProtoReflect.Descriptor instead. -func (*GroupApplicationRejectedTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{21} +func (dst *GroupApplicationRejectedTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupApplicationRejectedTips.Merge(dst, src) +} +func (m *GroupApplicationRejectedTips) XXX_Size() int { + return xxx_messageInfo_GroupApplicationRejectedTips.Size(m) } +func (m *GroupApplicationRejectedTips) XXX_DiscardUnknown() { + xxx_messageInfo_GroupApplicationRejectedTips.DiscardUnknown(m) +} + +var xxx_messageInfo_GroupApplicationRejectedTips proto.InternalMessageInfo -func (x *GroupApplicationRejectedTips) GetGroup() *GroupInfo { - if x != nil { - return x.Group +func (m *GroupApplicationRejectedTips) GetGroup() *GroupInfo { + if m != nil { + return m.Group } return nil } -func (x *GroupApplicationRejectedTips) GetOpUser() *GroupMemberFullInfo { - if x != nil { - return x.OpUser +func (m *GroupApplicationRejectedTips) GetOpUser() *GroupMemberFullInfo { + if m != nil { + return m.OpUser } return nil } -func (x *GroupApplicationRejectedTips) GetHandleMsg() string { - if x != nil { - return x.HandleMsg +func (m *GroupApplicationRejectedTips) GetHandleMsg() string { + if m != nil { + return m.HandleMsg } return "" } -// OnTransferGroupOwner() +// OnTransferGroupOwner() type GroupOwnerTransferredTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` - OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` - NewGroupOwner *GroupMemberFullInfo `protobuf:"bytes,3,opt,name=newGroupOwner,proto3" json:"newGroupOwner,omitempty"` - OperationTime int64 `protobuf:"varint,4,opt,name=operationTime,proto3" json:"operationTime,omitempty"` + Group *GroupInfo `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` + OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser" json:"opUser,omitempty"` + NewGroupOwner *GroupMemberFullInfo `protobuf:"bytes,3,opt,name=newGroupOwner" json:"newGroupOwner,omitempty"` + OperationTime int64 `protobuf:"varint,4,opt,name=operationTime" json:"operationTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GroupOwnerTransferredTips) Reset() { *m = GroupOwnerTransferredTips{} } +func (m *GroupOwnerTransferredTips) String() string { return proto.CompactTextString(m) } +func (*GroupOwnerTransferredTips) ProtoMessage() {} +func (*GroupOwnerTransferredTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{22} } - -func (x *GroupOwnerTransferredTips) Reset() { - *x = GroupOwnerTransferredTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) } - -func (x *GroupOwnerTransferredTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *GroupOwnerTransferredTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GroupOwnerTransferredTips.Marshal(b, m, deterministic) } - -func (*GroupOwnerTransferredTips) ProtoMessage() {} - -func (x *GroupOwnerTransferredTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (dst *GroupOwnerTransferredTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupOwnerTransferredTips.Merge(dst, src) } - -// Deprecated: Use GroupOwnerTransferredTips.ProtoReflect.Descriptor instead. -func (*GroupOwnerTransferredTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{22} +func (m *GroupOwnerTransferredTips) XXX_Size() int { + return xxx_messageInfo_GroupOwnerTransferredTips.Size(m) +} +func (m *GroupOwnerTransferredTips) XXX_DiscardUnknown() { + xxx_messageInfo_GroupOwnerTransferredTips.DiscardUnknown(m) } -func (x *GroupOwnerTransferredTips) GetGroup() *GroupInfo { - if x != nil { - return x.Group +var xxx_messageInfo_GroupOwnerTransferredTips proto.InternalMessageInfo + +func (m *GroupOwnerTransferredTips) GetGroup() *GroupInfo { + if m != nil { + return m.Group } return nil } -func (x *GroupOwnerTransferredTips) GetOpUser() *GroupMemberFullInfo { - if x != nil { - return x.OpUser +func (m *GroupOwnerTransferredTips) GetOpUser() *GroupMemberFullInfo { + if m != nil { + return m.OpUser } return nil } -func (x *GroupOwnerTransferredTips) GetNewGroupOwner() *GroupMemberFullInfo { - if x != nil { - return x.NewGroupOwner +func (m *GroupOwnerTransferredTips) GetNewGroupOwner() *GroupMemberFullInfo { + if m != nil { + return m.NewGroupOwner } return nil } -func (x *GroupOwnerTransferredTips) GetOperationTime() int64 { - if x != nil { - return x.OperationTime +func (m *GroupOwnerTransferredTips) GetOperationTime() int64 { + if m != nil { + return m.OperationTime } return 0 } -// OnMemberKicked() +// OnMemberKicked() type MemberKickedTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` - OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` - KickedUserList []*GroupMemberFullInfo `protobuf:"bytes,3,rep,name=kickedUserList,proto3" json:"kickedUserList,omitempty"` - OperationTime int64 `protobuf:"varint,4,opt,name=operationTime,proto3" json:"operationTime,omitempty"` + Group *GroupInfo `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` + OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser" json:"opUser,omitempty"` + KickedUserList []*GroupMemberFullInfo `protobuf:"bytes,3,rep,name=kickedUserList" json:"kickedUserList,omitempty"` + OperationTime int64 `protobuf:"varint,4,opt,name=operationTime" json:"operationTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *MemberKickedTips) Reset() { *m = MemberKickedTips{} } +func (m *MemberKickedTips) String() string { return proto.CompactTextString(m) } +func (*MemberKickedTips) ProtoMessage() {} +func (*MemberKickedTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{23} } - -func (x *MemberKickedTips) Reset() { - *x = MemberKickedTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) } - -func (x *MemberKickedTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *MemberKickedTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MemberKickedTips.Marshal(b, m, deterministic) } - -func (*MemberKickedTips) ProtoMessage() {} - -func (x *MemberKickedTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (dst *MemberKickedTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_MemberKickedTips.Merge(dst, src) } - -// Deprecated: Use MemberKickedTips.ProtoReflect.Descriptor instead. -func (*MemberKickedTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{23} +func (m *MemberKickedTips) XXX_Size() int { + return xxx_messageInfo_MemberKickedTips.Size(m) } +func (m *MemberKickedTips) XXX_DiscardUnknown() { + xxx_messageInfo_MemberKickedTips.DiscardUnknown(m) +} + +var xxx_messageInfo_MemberKickedTips proto.InternalMessageInfo -func (x *MemberKickedTips) GetGroup() *GroupInfo { - if x != nil { - return x.Group +func (m *MemberKickedTips) GetGroup() *GroupInfo { + if m != nil { + return m.Group } return nil } -func (x *MemberKickedTips) GetOpUser() *GroupMemberFullInfo { - if x != nil { - return x.OpUser +func (m *MemberKickedTips) GetOpUser() *GroupMemberFullInfo { + if m != nil { + return m.OpUser } return nil } -func (x *MemberKickedTips) GetKickedUserList() []*GroupMemberFullInfo { - if x != nil { - return x.KickedUserList +func (m *MemberKickedTips) GetKickedUserList() []*GroupMemberFullInfo { + if m != nil { + return m.KickedUserList } return nil } -func (x *MemberKickedTips) GetOperationTime() int64 { - if x != nil { - return x.OperationTime +func (m *MemberKickedTips) GetOperationTime() int64 { + if m != nil { + return m.OperationTime } return 0 } -// OnMemberInvited() +// OnMemberInvited() type MemberInvitedTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` - OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` - InvitedUserList []*GroupMemberFullInfo `protobuf:"bytes,3,rep,name=invitedUserList,proto3" json:"invitedUserList,omitempty"` - OperationTime int64 `protobuf:"varint,4,opt,name=operationTime,proto3" json:"operationTime,omitempty"` + Group *GroupInfo `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` + OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser" json:"opUser,omitempty"` + InvitedUserList []*GroupMemberFullInfo `protobuf:"bytes,3,rep,name=invitedUserList" json:"invitedUserList,omitempty"` + OperationTime int64 `protobuf:"varint,4,opt,name=operationTime" json:"operationTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *MemberInvitedTips) Reset() { *m = MemberInvitedTips{} } +func (m *MemberInvitedTips) String() string { return proto.CompactTextString(m) } +func (*MemberInvitedTips) ProtoMessage() {} +func (*MemberInvitedTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{24} } - -func (x *MemberInvitedTips) Reset() { - *x = MemberInvitedTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) } - -func (x *MemberInvitedTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *MemberInvitedTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MemberInvitedTips.Marshal(b, m, deterministic) } - -func (*MemberInvitedTips) ProtoMessage() {} - -func (x *MemberInvitedTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (dst *MemberInvitedTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_MemberInvitedTips.Merge(dst, src) } - -// Deprecated: Use MemberInvitedTips.ProtoReflect.Descriptor instead. -func (*MemberInvitedTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{24} +func (m *MemberInvitedTips) XXX_Size() int { + return xxx_messageInfo_MemberInvitedTips.Size(m) } +func (m *MemberInvitedTips) XXX_DiscardUnknown() { + xxx_messageInfo_MemberInvitedTips.DiscardUnknown(m) +} + +var xxx_messageInfo_MemberInvitedTips proto.InternalMessageInfo -func (x *MemberInvitedTips) GetGroup() *GroupInfo { - if x != nil { - return x.Group +func (m *MemberInvitedTips) GetGroup() *GroupInfo { + if m != nil { + return m.Group } return nil } -func (x *MemberInvitedTips) GetOpUser() *GroupMemberFullInfo { - if x != nil { - return x.OpUser +func (m *MemberInvitedTips) GetOpUser() *GroupMemberFullInfo { + if m != nil { + return m.OpUser } return nil } -func (x *MemberInvitedTips) GetInvitedUserList() []*GroupMemberFullInfo { - if x != nil { - return x.InvitedUserList +func (m *MemberInvitedTips) GetInvitedUserList() []*GroupMemberFullInfo { + if m != nil { + return m.InvitedUserList } return nil } -func (x *MemberInvitedTips) GetOperationTime() int64 { - if x != nil { - return x.OperationTime +func (m *MemberInvitedTips) GetOperationTime() int64 { + if m != nil { + return m.OperationTime } return 0 } -//Actively join the group +// Actively join the group type MemberEnterTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` - EntrantUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=entrantUser,proto3" json:"entrantUser,omitempty"` - OperationTime int64 `protobuf:"varint,3,opt,name=operationTime,proto3" json:"operationTime,omitempty"` + Group *GroupInfo `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` + EntrantUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=entrantUser" json:"entrantUser,omitempty"` + OperationTime int64 `protobuf:"varint,3,opt,name=operationTime" json:"operationTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *MemberEnterTips) Reset() { - *x = MemberEnterTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *MemberEnterTips) Reset() { *m = MemberEnterTips{} } +func (m *MemberEnterTips) String() string { return proto.CompactTextString(m) } +func (*MemberEnterTips) ProtoMessage() {} +func (*MemberEnterTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{25} } - -func (x *MemberEnterTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) } - -func (*MemberEnterTips) ProtoMessage() {} - -func (x *MemberEnterTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *MemberEnterTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MemberEnterTips.Marshal(b, m, deterministic) } - -// Deprecated: Use MemberEnterTips.ProtoReflect.Descriptor instead. -func (*MemberEnterTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{25} +func (dst *MemberEnterTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_MemberEnterTips.Merge(dst, src) +} +func (m *MemberEnterTips) XXX_Size() int { + return xxx_messageInfo_MemberEnterTips.Size(m) +} +func (m *MemberEnterTips) XXX_DiscardUnknown() { + xxx_messageInfo_MemberEnterTips.DiscardUnknown(m) } -func (x *MemberEnterTips) GetGroup() *GroupInfo { - if x != nil { - return x.Group +var xxx_messageInfo_MemberEnterTips proto.InternalMessageInfo + +func (m *MemberEnterTips) GetGroup() *GroupInfo { + if m != nil { + return m.Group } return nil } -func (x *MemberEnterTips) GetEntrantUser() *GroupMemberFullInfo { - if x != nil { - return x.EntrantUser +func (m *MemberEnterTips) GetEntrantUser() *GroupMemberFullInfo { + if m != nil { + return m.EntrantUser } return nil } -func (x *MemberEnterTips) GetOperationTime() int64 { - if x != nil { - return x.OperationTime +func (m *MemberEnterTips) GetOperationTime() int64 { + if m != nil { + return m.OperationTime } return 0 } type FriendApplication struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AddTime int64 `protobuf:"varint,1,opt,name=addTime,proto3" json:"addTime,omitempty"` - AddSource string `protobuf:"bytes,2,opt,name=addSource,proto3" json:"addSource,omitempty"` - AddWording string `protobuf:"bytes,3,opt,name=addWording,proto3" json:"addWording,omitempty"` + AddTime int64 `protobuf:"varint,1,opt,name=addTime" json:"addTime,omitempty"` + AddSource string `protobuf:"bytes,2,opt,name=addSource" json:"addSource,omitempty"` + AddWording string `protobuf:"bytes,3,opt,name=addWording" json:"addWording,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FriendApplication) Reset() { - *x = FriendApplication{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FriendApplication) Reset() { *m = FriendApplication{} } +func (m *FriendApplication) String() string { return proto.CompactTextString(m) } +func (*FriendApplication) ProtoMessage() {} +func (*FriendApplication) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{26} } - -func (x *FriendApplication) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FriendApplication) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FriendApplication.Unmarshal(m, b) } - -func (*FriendApplication) ProtoMessage() {} - -func (x *FriendApplication) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *FriendApplication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FriendApplication.Marshal(b, m, deterministic) } - -// Deprecated: Use FriendApplication.ProtoReflect.Descriptor instead. -func (*FriendApplication) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{26} +func (dst *FriendApplication) XXX_Merge(src proto.Message) { + xxx_messageInfo_FriendApplication.Merge(dst, src) +} +func (m *FriendApplication) XXX_Size() int { + return xxx_messageInfo_FriendApplication.Size(m) } +func (m *FriendApplication) XXX_DiscardUnknown() { + xxx_messageInfo_FriendApplication.DiscardUnknown(m) +} + +var xxx_messageInfo_FriendApplication proto.InternalMessageInfo -func (x *FriendApplication) GetAddTime() int64 { - if x != nil { - return x.AddTime +func (m *FriendApplication) GetAddTime() int64 { + if m != nil { + return m.AddTime } return 0 } -func (x *FriendApplication) GetAddSource() string { - if x != nil { - return x.AddSource +func (m *FriendApplication) GetAddSource() string { + if m != nil { + return m.AddSource } return "" } -func (x *FriendApplication) GetAddWording() string { - if x != nil { - return x.AddWording +func (m *FriendApplication) GetAddWording() string { + if m != nil { + return m.AddWording } return "" } type FromToUserID struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FromUserID string `protobuf:"bytes,1,opt,name=fromUserID,proto3" json:"fromUserID,omitempty"` - ToUserID string `protobuf:"bytes,2,opt,name=toUserID,proto3" json:"toUserID,omitempty"` + FromUserID string `protobuf:"bytes,1,opt,name=fromUserID" json:"fromUserID,omitempty"` + ToUserID string `protobuf:"bytes,2,opt,name=toUserID" json:"toUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FromToUserID) Reset() { - *x = FromToUserID{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FromToUserID) Reset() { *m = FromToUserID{} } +func (m *FromToUserID) String() string { return proto.CompactTextString(m) } +func (*FromToUserID) ProtoMessage() {} +func (*FromToUserID) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{27} } - -func (x *FromToUserID) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FromToUserID) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FromToUserID.Unmarshal(m, b) } - -func (*FromToUserID) ProtoMessage() {} - -func (x *FromToUserID) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *FromToUserID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FromToUserID.Marshal(b, m, deterministic) } - -// Deprecated: Use FromToUserID.ProtoReflect.Descriptor instead. -func (*FromToUserID) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{27} +func (dst *FromToUserID) XXX_Merge(src proto.Message) { + xxx_messageInfo_FromToUserID.Merge(dst, src) +} +func (m *FromToUserID) XXX_Size() int { + return xxx_messageInfo_FromToUserID.Size(m) +} +func (m *FromToUserID) XXX_DiscardUnknown() { + xxx_messageInfo_FromToUserID.DiscardUnknown(m) } -func (x *FromToUserID) GetFromUserID() string { - if x != nil { - return x.FromUserID +var xxx_messageInfo_FromToUserID proto.InternalMessageInfo + +func (m *FromToUserID) GetFromUserID() string { + if m != nil { + return m.FromUserID } return "" } -func (x *FromToUserID) GetToUserID() string { - if x != nil { - return x.ToUserID +func (m *FromToUserID) GetToUserID() string { + if m != nil { + return m.ToUserID } return "" } -//FromUserID apply to add ToUserID +// FromUserID apply to add ToUserID type FriendApplicationTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID,proto3" json:"fromToUserID,omitempty"` + FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID" json:"fromToUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FriendApplicationTips) Reset() { - *x = FriendApplicationTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FriendApplicationTips) Reset() { *m = FriendApplicationTips{} } +func (m *FriendApplicationTips) String() string { return proto.CompactTextString(m) } +func (*FriendApplicationTips) ProtoMessage() {} +func (*FriendApplicationTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{28} } - -func (x *FriendApplicationTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) } - -func (*FriendApplicationTips) ProtoMessage() {} - -func (x *FriendApplicationTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *FriendApplicationTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FriendApplicationTips.Marshal(b, m, deterministic) } - -// Deprecated: Use FriendApplicationTips.ProtoReflect.Descriptor instead. -func (*FriendApplicationTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{28} +func (dst *FriendApplicationTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_FriendApplicationTips.Merge(dst, src) +} +func (m *FriendApplicationTips) XXX_Size() int { + return xxx_messageInfo_FriendApplicationTips.Size(m) } +func (m *FriendApplicationTips) XXX_DiscardUnknown() { + xxx_messageInfo_FriendApplicationTips.DiscardUnknown(m) +} + +var xxx_messageInfo_FriendApplicationTips proto.InternalMessageInfo -func (x *FriendApplicationTips) GetFromToUserID() *FromToUserID { - if x != nil { - return x.FromToUserID +func (m *FriendApplicationTips) GetFromToUserID() *FromToUserID { + if m != nil { + return m.FromToUserID } return nil } -//FromUserID accept or reject ToUserID +// FromUserID accept or reject ToUserID type FriendApplicationApprovedTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID,proto3" json:"fromToUserID,omitempty"` - HandleMsg string `protobuf:"bytes,2,opt,name=handleMsg,proto3" json:"handleMsg,omitempty"` + FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID" json:"fromToUserID,omitempty"` + HandleMsg string `protobuf:"bytes,2,opt,name=handleMsg" json:"handleMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FriendApplicationApprovedTips) Reset() { - *x = FriendApplicationApprovedTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FriendApplicationApprovedTips) Reset() { *m = FriendApplicationApprovedTips{} } +func (m *FriendApplicationApprovedTips) String() string { return proto.CompactTextString(m) } +func (*FriendApplicationApprovedTips) ProtoMessage() {} +func (*FriendApplicationApprovedTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{29} } - -func (x *FriendApplicationApprovedTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) } - -func (*FriendApplicationApprovedTips) ProtoMessage() {} - -func (x *FriendApplicationApprovedTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_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) +func (m *FriendApplicationApprovedTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FriendApplicationApprovedTips.Marshal(b, m, deterministic) } - -// Deprecated: Use FriendApplicationApprovedTips.ProtoReflect.Descriptor instead. -func (*FriendApplicationApprovedTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{29} +func (dst *FriendApplicationApprovedTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_FriendApplicationApprovedTips.Merge(dst, src) +} +func (m *FriendApplicationApprovedTips) XXX_Size() int { + return xxx_messageInfo_FriendApplicationApprovedTips.Size(m) } +func (m *FriendApplicationApprovedTips) XXX_DiscardUnknown() { + xxx_messageInfo_FriendApplicationApprovedTips.DiscardUnknown(m) +} + +var xxx_messageInfo_FriendApplicationApprovedTips proto.InternalMessageInfo -func (x *FriendApplicationApprovedTips) GetFromToUserID() *FromToUserID { - if x != nil { - return x.FromToUserID +func (m *FriendApplicationApprovedTips) GetFromToUserID() *FromToUserID { + if m != nil { + return m.FromToUserID } return nil } -func (x *FriendApplicationApprovedTips) GetHandleMsg() string { - if x != nil { - return x.HandleMsg +func (m *FriendApplicationApprovedTips) GetHandleMsg() string { + if m != nil { + return m.HandleMsg } return "" } -//FromUserID accept or reject ToUserID +// FromUserID accept or reject ToUserID type FriendApplicationRejectedTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID,proto3" json:"fromToUserID,omitempty"` - HandleMsg string `protobuf:"bytes,2,opt,name=handleMsg,proto3" json:"handleMsg,omitempty"` + FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID" json:"fromToUserID,omitempty"` + HandleMsg string `protobuf:"bytes,2,opt,name=handleMsg" json:"handleMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FriendApplicationRejectedTips) Reset() { - *x = FriendApplicationRejectedTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FriendApplicationRejectedTips) Reset() { *m = FriendApplicationRejectedTips{} } +func (m *FriendApplicationRejectedTips) String() string { return proto.CompactTextString(m) } +func (*FriendApplicationRejectedTips) ProtoMessage() {} +func (*FriendApplicationRejectedTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{30} } - -func (x *FriendApplicationRejectedTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) } - -func (*FriendApplicationRejectedTips) ProtoMessage() {} - -func (x *FriendApplicationRejectedTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_proto_msgTypes[30] - 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) +func (m *FriendApplicationRejectedTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FriendApplicationRejectedTips.Marshal(b, m, deterministic) } - -// Deprecated: Use FriendApplicationRejectedTips.ProtoReflect.Descriptor instead. -func (*FriendApplicationRejectedTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{30} +func (dst *FriendApplicationRejectedTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_FriendApplicationRejectedTips.Merge(dst, src) +} +func (m *FriendApplicationRejectedTips) XXX_Size() int { + return xxx_messageInfo_FriendApplicationRejectedTips.Size(m) +} +func (m *FriendApplicationRejectedTips) XXX_DiscardUnknown() { + xxx_messageInfo_FriendApplicationRejectedTips.DiscardUnknown(m) } -func (x *FriendApplicationRejectedTips) GetFromToUserID() *FromToUserID { - if x != nil { - return x.FromToUserID +var xxx_messageInfo_FriendApplicationRejectedTips proto.InternalMessageInfo + +func (m *FriendApplicationRejectedTips) GetFromToUserID() *FromToUserID { + if m != nil { + return m.FromToUserID } return nil } -func (x *FriendApplicationRejectedTips) GetHandleMsg() string { - if x != nil { - return x.HandleMsg +func (m *FriendApplicationRejectedTips) GetHandleMsg() string { + if m != nil { + return m.HandleMsg } return "" } // FromUserID Added a friend ToUserID type FriendAddedTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Friend *FriendInfo `protobuf:"bytes,1,opt,name=friend,proto3" json:"friend,omitempty"` - OperationTime int64 `protobuf:"varint,2,opt,name=operationTime,proto3" json:"operationTime,omitempty"` - OpUser *PublicUserInfo `protobuf:"bytes,3,opt,name=opUser,proto3" json:"opUser,omitempty"` //who do this + Friend *FriendInfo `protobuf:"bytes,1,opt,name=friend" json:"friend,omitempty"` + OperationTime int64 `protobuf:"varint,2,opt,name=operationTime" json:"operationTime,omitempty"` + OpUser *PublicUserInfo `protobuf:"bytes,3,opt,name=opUser" json:"opUser,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FriendAddedTips) Reset() { - *x = FriendAddedTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FriendAddedTips) Reset() { *m = FriendAddedTips{} } +func (m *FriendAddedTips) String() string { return proto.CompactTextString(m) } +func (*FriendAddedTips) ProtoMessage() {} +func (*FriendAddedTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{31} } - -func (x *FriendAddedTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) } - -func (*FriendAddedTips) ProtoMessage() {} - -func (x *FriendAddedTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_proto_msgTypes[31] - 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) +func (m *FriendAddedTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FriendAddedTips.Marshal(b, m, deterministic) } - -// Deprecated: Use FriendAddedTips.ProtoReflect.Descriptor instead. -func (*FriendAddedTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{31} +func (dst *FriendAddedTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_FriendAddedTips.Merge(dst, src) +} +func (m *FriendAddedTips) XXX_Size() int { + return xxx_messageInfo_FriendAddedTips.Size(m) } +func (m *FriendAddedTips) XXX_DiscardUnknown() { + xxx_messageInfo_FriendAddedTips.DiscardUnknown(m) +} + +var xxx_messageInfo_FriendAddedTips proto.InternalMessageInfo -func (x *FriendAddedTips) GetFriend() *FriendInfo { - if x != nil { - return x.Friend +func (m *FriendAddedTips) GetFriend() *FriendInfo { + if m != nil { + return m.Friend } return nil } -func (x *FriendAddedTips) GetOperationTime() int64 { - if x != nil { - return x.OperationTime +func (m *FriendAddedTips) GetOperationTime() int64 { + if m != nil { + return m.OperationTime } return 0 } -func (x *FriendAddedTips) GetOpUser() *PublicUserInfo { - if x != nil { - return x.OpUser +func (m *FriendAddedTips) GetOpUser() *PublicUserInfo { + if m != nil { + return m.OpUser } return nil } // FromUserID deleted a friend ToUserID type FriendDeletedTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID,proto3" json:"fromToUserID,omitempty"` + FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID" json:"fromToUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FriendDeletedTips) Reset() { - *x = FriendDeletedTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FriendDeletedTips) Reset() { *m = FriendDeletedTips{} } +func (m *FriendDeletedTips) String() string { return proto.CompactTextString(m) } +func (*FriendDeletedTips) ProtoMessage() {} +func (*FriendDeletedTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{32} } - -func (x *FriendDeletedTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) } - -func (*FriendDeletedTips) ProtoMessage() {} - -func (x *FriendDeletedTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_proto_msgTypes[32] - 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) +func (m *FriendDeletedTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FriendDeletedTips.Marshal(b, m, deterministic) } - -// Deprecated: Use FriendDeletedTips.ProtoReflect.Descriptor instead. -func (*FriendDeletedTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{32} +func (dst *FriendDeletedTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_FriendDeletedTips.Merge(dst, src) +} +func (m *FriendDeletedTips) XXX_Size() int { + return xxx_messageInfo_FriendDeletedTips.Size(m) +} +func (m *FriendDeletedTips) XXX_DiscardUnknown() { + xxx_messageInfo_FriendDeletedTips.DiscardUnknown(m) } -func (x *FriendDeletedTips) GetFromToUserID() *FromToUserID { - if x != nil { - return x.FromToUserID +var xxx_messageInfo_FriendDeletedTips proto.InternalMessageInfo + +func (m *FriendDeletedTips) GetFromToUserID() *FromToUserID { + if m != nil { + return m.FromToUserID } return nil } type BlackAddedTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID,proto3" json:"fromToUserID,omitempty"` + FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID" json:"fromToUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *BlackAddedTips) Reset() { - *x = BlackAddedTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *BlackAddedTips) Reset() { *m = BlackAddedTips{} } +func (m *BlackAddedTips) String() string { return proto.CompactTextString(m) } +func (*BlackAddedTips) ProtoMessage() {} +func (*BlackAddedTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{33} } - -func (x *BlackAddedTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) } - -func (*BlackAddedTips) ProtoMessage() {} - -func (x *BlackAddedTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_proto_msgTypes[33] - 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) +func (m *BlackAddedTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BlackAddedTips.Marshal(b, m, deterministic) } - -// Deprecated: Use BlackAddedTips.ProtoReflect.Descriptor instead. -func (*BlackAddedTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{33} +func (dst *BlackAddedTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_BlackAddedTips.Merge(dst, src) +} +func (m *BlackAddedTips) XXX_Size() int { + return xxx_messageInfo_BlackAddedTips.Size(m) } +func (m *BlackAddedTips) XXX_DiscardUnknown() { + xxx_messageInfo_BlackAddedTips.DiscardUnknown(m) +} + +var xxx_messageInfo_BlackAddedTips proto.InternalMessageInfo -func (x *BlackAddedTips) GetFromToUserID() *FromToUserID { - if x != nil { - return x.FromToUserID +func (m *BlackAddedTips) GetFromToUserID() *FromToUserID { + if m != nil { + return m.FromToUserID } return nil } type BlackDeletedTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID,proto3" json:"fromToUserID,omitempty"` + FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID" json:"fromToUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *BlackDeletedTips) Reset() { - *x = BlackDeletedTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *BlackDeletedTips) Reset() { *m = BlackDeletedTips{} } +func (m *BlackDeletedTips) String() string { return proto.CompactTextString(m) } +func (*BlackDeletedTips) ProtoMessage() {} +func (*BlackDeletedTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{34} } - -func (x *BlackDeletedTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) } - -func (*BlackDeletedTips) ProtoMessage() {} - -func (x *BlackDeletedTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_proto_msgTypes[34] - 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) +func (m *BlackDeletedTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BlackDeletedTips.Marshal(b, m, deterministic) } - -// Deprecated: Use BlackDeletedTips.ProtoReflect.Descriptor instead. -func (*BlackDeletedTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{34} +func (dst *BlackDeletedTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_BlackDeletedTips.Merge(dst, src) +} +func (m *BlackDeletedTips) XXX_Size() int { + return xxx_messageInfo_BlackDeletedTips.Size(m) } +func (m *BlackDeletedTips) XXX_DiscardUnknown() { + xxx_messageInfo_BlackDeletedTips.DiscardUnknown(m) +} + +var xxx_messageInfo_BlackDeletedTips proto.InternalMessageInfo -func (x *BlackDeletedTips) GetFromToUserID() *FromToUserID { - if x != nil { - return x.FromToUserID +func (m *BlackDeletedTips) GetFromToUserID() *FromToUserID { + if m != nil { + return m.FromToUserID } return nil } type FriendInfoChangedTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID,proto3" json:"fromToUserID,omitempty"` + FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID" json:"fromToUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FriendInfoChangedTips) Reset() { - *x = FriendInfoChangedTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FriendInfoChangedTips) Reset() { *m = FriendInfoChangedTips{} } +func (m *FriendInfoChangedTips) String() string { return proto.CompactTextString(m) } +func (*FriendInfoChangedTips) ProtoMessage() {} +func (*FriendInfoChangedTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{35} } - -func (x *FriendInfoChangedTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) } - -func (*FriendInfoChangedTips) ProtoMessage() {} - -func (x *FriendInfoChangedTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_proto_msgTypes[35] - 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) +func (m *FriendInfoChangedTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FriendInfoChangedTips.Marshal(b, m, deterministic) } - -// Deprecated: Use FriendInfoChangedTips.ProtoReflect.Descriptor instead. -func (*FriendInfoChangedTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{35} +func (dst *FriendInfoChangedTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_FriendInfoChangedTips.Merge(dst, src) +} +func (m *FriendInfoChangedTips) XXX_Size() int { + return xxx_messageInfo_FriendInfoChangedTips.Size(m) +} +func (m *FriendInfoChangedTips) XXX_DiscardUnknown() { + xxx_messageInfo_FriendInfoChangedTips.DiscardUnknown(m) } -func (x *FriendInfoChangedTips) GetFromToUserID() *FromToUserID { - if x != nil { - return x.FromToUserID +var xxx_messageInfo_FriendInfoChangedTips proto.InternalMessageInfo + +func (m *FriendInfoChangedTips) GetFromToUserID() *FromToUserID { + if m != nil { + return m.FromToUserID } return nil } -//////////////////////user///////////////////// +// ////////////////////user///////////////////// type UserInfoUpdatedTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *UserInfoUpdatedTips) Reset() { - *x = UserInfoUpdatedTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *UserInfoUpdatedTips) Reset() { *m = UserInfoUpdatedTips{} } +func (m *UserInfoUpdatedTips) String() string { return proto.CompactTextString(m) } +func (*UserInfoUpdatedTips) ProtoMessage() {} +func (*UserInfoUpdatedTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{36} } - -func (x *UserInfoUpdatedTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) } - -func (*UserInfoUpdatedTips) ProtoMessage() {} - -func (x *UserInfoUpdatedTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_proto_msgTypes[36] - 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) +func (m *UserInfoUpdatedTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserInfoUpdatedTips.Marshal(b, m, deterministic) } - -// Deprecated: Use UserInfoUpdatedTips.ProtoReflect.Descriptor instead. -func (*UserInfoUpdatedTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{36} +func (dst *UserInfoUpdatedTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserInfoUpdatedTips.Merge(dst, src) +} +func (m *UserInfoUpdatedTips) XXX_Size() int { + return xxx_messageInfo_UserInfoUpdatedTips.Size(m) } +func (m *UserInfoUpdatedTips) XXX_DiscardUnknown() { + xxx_messageInfo_UserInfoUpdatedTips.DiscardUnknown(m) +} + +var xxx_messageInfo_UserInfoUpdatedTips proto.InternalMessageInfo -func (x *UserInfoUpdatedTips) GetUserID() string { - if x != nil { - return x.UserID +func (m *UserInfoUpdatedTips) GetUserID() string { + if m != nil { + return m.UserID } return "" } -//////////////////////conversation///////////////////// +// ////////////////////conversation///////////////////// type ConversationUpdateTips struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=UserID,proto3" json:"UserID,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=UserID" json:"UserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ConversationUpdateTips) Reset() { - *x = ConversationUpdateTips{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ConversationUpdateTips) Reset() { *m = ConversationUpdateTips{} } +func (m *ConversationUpdateTips) String() string { return proto.CompactTextString(m) } +func (*ConversationUpdateTips) ProtoMessage() {} +func (*ConversationUpdateTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{37} } - -func (x *ConversationUpdateTips) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) } - -func (*ConversationUpdateTips) ProtoMessage() {} - -func (x *ConversationUpdateTips) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_proto_msgTypes[37] - 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) +func (m *ConversationUpdateTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ConversationUpdateTips.Marshal(b, m, deterministic) } - -// Deprecated: Use ConversationUpdateTips.ProtoReflect.Descriptor instead. -func (*ConversationUpdateTips) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{37} +func (dst *ConversationUpdateTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_ConversationUpdateTips.Merge(dst, src) +} +func (m *ConversationUpdateTips) XXX_Size() int { + return xxx_messageInfo_ConversationUpdateTips.Size(m) +} +func (m *ConversationUpdateTips) XXX_DiscardUnknown() { + xxx_messageInfo_ConversationUpdateTips.DiscardUnknown(m) } -func (x *ConversationUpdateTips) GetUserID() string { - if x != nil { - return x.UserID +var xxx_messageInfo_ConversationUpdateTips proto.InternalMessageInfo + +func (m *ConversationUpdateTips) GetUserID() string { + if m != nil { + return m.UserID } return "" } -///cms +// /cms type RequestPagination struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PageNumber int32 `protobuf:"varint,1,opt,name=pageNumber,proto3" json:"pageNumber,omitempty"` - ShowNumber int32 `protobuf:"varint,2,opt,name=showNumber,proto3" json:"showNumber,omitempty"` + PageNumber int32 `protobuf:"varint,1,opt,name=pageNumber" json:"pageNumber,omitempty"` + ShowNumber int32 `protobuf:"varint,2,opt,name=showNumber" json:"showNumber,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *RequestPagination) Reset() { - *x = RequestPagination{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *RequestPagination) Reset() { *m = RequestPagination{} } +func (m *RequestPagination) String() string { return proto.CompactTextString(m) } +func (*RequestPagination) ProtoMessage() {} +func (*RequestPagination) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{38} } - -func (x *RequestPagination) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *RequestPagination) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RequestPagination.Unmarshal(m, b) } - -func (*RequestPagination) ProtoMessage() {} - -func (x *RequestPagination) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_proto_msgTypes[38] - 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) +func (m *RequestPagination) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RequestPagination.Marshal(b, m, deterministic) } - -// Deprecated: Use RequestPagination.ProtoReflect.Descriptor instead. -func (*RequestPagination) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{38} +func (dst *RequestPagination) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestPagination.Merge(dst, src) +} +func (m *RequestPagination) XXX_Size() int { + return xxx_messageInfo_RequestPagination.Size(m) } +func (m *RequestPagination) XXX_DiscardUnknown() { + xxx_messageInfo_RequestPagination.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestPagination proto.InternalMessageInfo -func (x *RequestPagination) GetPageNumber() int32 { - if x != nil { - return x.PageNumber +func (m *RequestPagination) GetPageNumber() int32 { + if m != nil { + return m.PageNumber } return 0 } -func (x *RequestPagination) GetShowNumber() int32 { - if x != nil { - return x.ShowNumber +func (m *RequestPagination) GetShowNumber() int32 { + if m != nil { + return m.ShowNumber } return 0 } type ResponsePagination struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CurrentPage int32 `protobuf:"varint,5,opt,name=CurrentPage,proto3" json:"CurrentPage,omitempty"` - ShowNumber int32 `protobuf:"varint,6,opt,name=ShowNumber,proto3" json:"ShowNumber,omitempty"` + CurrentPage int32 `protobuf:"varint,5,opt,name=CurrentPage" json:"CurrentPage,omitempty"` + ShowNumber int32 `protobuf:"varint,6,opt,name=ShowNumber" json:"ShowNumber,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ResponsePagination) Reset() { - *x = ResponsePagination{} - if protoimpl.UnsafeEnabled { - mi := &file_sdk_ws_ws_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ResponsePagination) Reset() { *m = ResponsePagination{} } +func (m *ResponsePagination) String() string { return proto.CompactTextString(m) } +func (*ResponsePagination) ProtoMessage() {} +func (*ResponsePagination) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_c5eabd6c93a174c0, []int{39} } - -func (x *ResponsePagination) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) } - -func (*ResponsePagination) ProtoMessage() {} - -func (x *ResponsePagination) ProtoReflect() protoreflect.Message { - mi := &file_sdk_ws_ws_proto_msgTypes[39] - 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) +func (m *ResponsePagination) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ResponsePagination.Marshal(b, m, deterministic) } - -// Deprecated: Use ResponsePagination.ProtoReflect.Descriptor instead. -func (*ResponsePagination) Descriptor() ([]byte, []int) { - return file_sdk_ws_ws_proto_rawDescGZIP(), []int{39} +func (dst *ResponsePagination) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponsePagination.Merge(dst, src) } +func (m *ResponsePagination) XXX_Size() int { + return xxx_messageInfo_ResponsePagination.Size(m) +} +func (m *ResponsePagination) XXX_DiscardUnknown() { + xxx_messageInfo_ResponsePagination.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponsePagination proto.InternalMessageInfo -func (x *ResponsePagination) GetCurrentPage() int32 { - if x != nil { - return x.CurrentPage +func (m *ResponsePagination) GetCurrentPage() int32 { + if m != nil { + return m.CurrentPage } return 0 } -func (x *ResponsePagination) GetShowNumber() int32 { - if x != nil { - return x.ShowNumber +func (m *ResponsePagination) GetShowNumber() int32 { + if m != nil { + return m.ShowNumber } return 0 } -var File_sdk_ws_ws_proto protoreflect.FileDescriptor - -var file_sdk_ws_ws_proto_rawDesc = []byte{ - 0x0a, 0x0f, 0x73, 0x64, 0x6b, 0x5f, 0x77, 0x73, 0x2f, 0x77, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x22, 0xf5, 0x02, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, - 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x20, 0x0a, 0x0b, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, - 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x22, 0xb7, 0x02, 0x0a, - 0x13, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x16, - 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, - 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x4d, 0x61, 0x6e, - 0x67, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, - 0x61, 0x70, 0x70, 0x4d, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, - 0x0a, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x26, - 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0x76, 0x0a, 0x0e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, - 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0x96, - 0x02, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, - 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x69, 0x72, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x72, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, - 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x12, - 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x26, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x4d, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x4d, 0x61, 0x6e, 0x67, - 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xf9, 0x01, 0x0a, 0x0a, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, - 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, - 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, - 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, - 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x0a, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x0a, - 0x09, 0x61, 0x64, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x61, 0x64, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x65, 0x78, 0x22, 0xec, 0x01, 0x0a, 0x09, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x0d, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x62, - 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, - 0x61, 0x64, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x61, 0x64, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x65, 0x78, 0x22, 0xd1, 0x02, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, - 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, - 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, - 0x0a, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x71, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x71, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, - 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, 0x71, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x68, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0xdb, 0x03, 0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, - 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, - 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x66, 0x72, 0x6f, 0x6d, 0x46, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x46, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x1e, - 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, - 0x0a, 0x08, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, - 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x74, 0x6f, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, - 0x46, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, - 0x6f, 0x46, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x47, 0x65, - 0x6e, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x74, 0x6f, 0x47, 0x65, - 0x6e, 0x64, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x71, 0x4d, - 0x73, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x71, 0x4d, 0x73, 0x67, - 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x4d, 0x73, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, - 0x65, 0x4d, 0x73, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x65, 0x78, 0x22, 0x7c, 0x0a, 0x18, 0x50, 0x75, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x42, 0x79, 0x53, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, - 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, - 0x73, 0x67, 0x12, 0x2e, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6c, 0x69, - 0x73, 0x74, 0x22, 0x6d, 0x0a, 0x17, 0x50, 0x75, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x42, 0x79, 0x53, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x71, 0x4c, 0x69, - 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x65, 0x71, 0x4c, 0x69, 0x73, - 0x74, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x41, 0x6e, 0x64, 0x4d, 0x69, - 0x6e, 0x53, 0x65, 0x71, 0x52, 0x65, 0x71, 0x22, 0x45, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4d, 0x61, - 0x78, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, - 0x0a, 0x06, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, - 0x6d, 0x61, 0x78, 0x53, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x71, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x22, 0x71, - 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, - 0x67, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, - 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x4d, 0x73, 0x67, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x22, 0xbc, 0x05, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x65, 0x6e, 0x64, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x12, 0x18, 0x0a, - 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x10, 0x73, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x24, 0x0a, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x61, - 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x72, - 0x6f, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x72, 0x6f, - 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x73, 0x65, 0x71, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, - 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, - 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, - 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4c, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, - 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, - 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x95, 0x01, 0x0a, 0x0f, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, - 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x0e, - 0x0a, 0x02, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x12, 0x22, - 0x0a, 0x0c, 0x69, 0x4f, 0x53, 0x50, 0x75, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x4f, 0x53, 0x50, 0x75, 0x73, 0x68, 0x53, 0x6f, 0x75, - 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x4f, 0x53, 0x42, 0x61, 0x64, 0x67, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x4f, 0x53, 0x42, 0x61, - 0x64, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x64, 0x0a, 0x08, 0x54, 0x69, 0x70, 0x73, - 0x43, 0x6f, 0x6d, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x69, 0x70, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x69, 0x70, 0x73, 0x12, 0x1e, - 0x0a, 0x0a, 0x6a, 0x73, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x6a, 0x73, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0xc4, - 0x02, 0x0a, 0x10, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, - 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x77, - 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, - 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x77, 0x6e, 0x65, - 0x72, 0x55, 0x73, 0x65, 0x72, 0x22, 0xa2, 0x01, 0x0a, 0x10, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x6e, 0x66, 0x6f, 0x53, 0x65, 0x74, 0x54, 0x69, 0x70, 0x73, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, - 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x75, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x75, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, - 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xa7, 0x01, 0x0a, 0x18, 0x4a, - 0x6f, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x09, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x72, 0x65, 0x71, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, - 0x71, 0x4d, 0x73, 0x67, 0x22, 0xae, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x51, - 0x75, 0x69, 0x74, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x42, 0x0a, 0x08, 0x71, - 0x75, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, - 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x71, 0x75, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, - 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xb0, 0x01, 0x0a, 0x1c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, - 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, - 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, - 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, - 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x22, 0xb0, 0x01, 0x0a, 0x1c, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6a, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, - 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, - 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x0a, - 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x22, 0x83, 0x02, 0x0a, 0x19, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x72, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, - 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, - 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x4c, 0x0a, - 0x0d, 0x6e, 0x65, 0x77, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, - 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x6e, 0x65, - 0x77, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, - 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x10, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4b, 0x69, 0x63, 0x6b, - 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, - 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, - 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x0e, 0x6b, 0x69, - 0x63, 0x6b, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x6b, 0x69, 0x63, 0x6b, - 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, - 0x22, 0xff, 0x01, 0x0a, 0x11, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, - 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, - 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, - 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x0f, 0x69, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x69, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, - 0x6d, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x0f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x45, 0x6e, 0x74, - 0x65, 0x72, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, - 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x48, 0x0a, 0x0b, 0x65, 0x6e, - 0x74, 0x72, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, - 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x6b, 0x0a, 0x11, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x07, 0x61, 0x64, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, - 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x64, 0x64, 0x57, 0x6f, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x64, 0x64, - 0x57, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x4a, 0x0a, 0x0c, 0x46, 0x72, 0x6f, 0x6d, 0x54, - 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, - 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x22, 0x5c, 0x0a, 0x15, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x70, 0x73, 0x12, 0x43, 0x0a, 0x0c, - 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x22, 0x82, 0x01, 0x0a, 0x1d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, - 0x69, 0x70, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, - 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, - 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x22, 0x82, 0x01, 0x0a, 0x1d, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6a, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, - 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, - 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, - 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x22, 0xa9, 0x01, 0x0a, 0x0f, - 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, - 0x35, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, - 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x06, - 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x22, 0x58, 0x0a, 0x11, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x43, 0x0a, 0x0c, - 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x22, 0x55, 0x0a, 0x0e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x65, 0x64, 0x54, - 0x69, 0x70, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, - 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, - 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x57, 0x0a, 0x10, 0x42, 0x6c, 0x61, 0x63, - 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x43, 0x0a, 0x0c, - 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x22, 0x5c, 0x0a, 0x15, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x72, - 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, - 0x2d, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 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, 0x30, - 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x70, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x22, 0x53, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x56, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x43, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0b, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x1c, 0x5a, - 0x1a, 0x2e, 0x2f, 0x73, 0x64, 0x6b, 0x5f, 0x77, 0x73, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, -} - -var ( - file_sdk_ws_ws_proto_rawDescOnce sync.Once - file_sdk_ws_ws_proto_rawDescData = file_sdk_ws_ws_proto_rawDesc -) - -func file_sdk_ws_ws_proto_rawDescGZIP() []byte { - file_sdk_ws_ws_proto_rawDescOnce.Do(func() { - file_sdk_ws_ws_proto_rawDescData = protoimpl.X.CompressGZIP(file_sdk_ws_ws_proto_rawDescData) - }) - return file_sdk_ws_ws_proto_rawDescData -} - -var file_sdk_ws_ws_proto_msgTypes = make([]protoimpl.MessageInfo, 41) -var file_sdk_ws_ws_proto_goTypes = []interface{}{ - (*GroupInfo)(nil), // 0: server_api_params.GroupInfo - (*GroupMemberFullInfo)(nil), // 1: server_api_params.GroupMemberFullInfo - (*PublicUserInfo)(nil), // 2: server_api_params.PublicUserInfo - (*UserInfo)(nil), // 3: server_api_params.UserInfo - (*FriendInfo)(nil), // 4: server_api_params.FriendInfo - (*BlackInfo)(nil), // 5: server_api_params.BlackInfo - (*GroupRequest)(nil), // 6: server_api_params.GroupRequest - (*FriendRequest)(nil), // 7: server_api_params.FriendRequest - (*PullMessageBySeqListResp)(nil), // 8: server_api_params.PullMessageBySeqListResp - (*PullMessageBySeqListReq)(nil), // 9: server_api_params.PullMessageBySeqListReq - (*GetMaxAndMinSeqReq)(nil), // 10: server_api_params.GetMaxAndMinSeqReq - (*GetMaxAndMinSeqResp)(nil), // 11: server_api_params.GetMaxAndMinSeqResp - (*UserSendMsgResp)(nil), // 12: server_api_params.UserSendMsgResp - (*MsgData)(nil), // 13: server_api_params.MsgData - (*OfflinePushInfo)(nil), // 14: server_api_params.OfflinePushInfo - (*TipsComm)(nil), // 15: server_api_params.TipsComm - (*GroupCreatedTips)(nil), // 16: server_api_params.GroupCreatedTips - (*GroupInfoSetTips)(nil), // 17: server_api_params.GroupInfoSetTips - (*JoinGroupApplicationTips)(nil), // 18: server_api_params.JoinGroupApplicationTips - (*MemberQuitTips)(nil), // 19: server_api_params.MemberQuitTips - (*GroupApplicationAcceptedTips)(nil), // 20: server_api_params.GroupApplicationAcceptedTips - (*GroupApplicationRejectedTips)(nil), // 21: server_api_params.GroupApplicationRejectedTips - (*GroupOwnerTransferredTips)(nil), // 22: server_api_params.GroupOwnerTransferredTips - (*MemberKickedTips)(nil), // 23: server_api_params.MemberKickedTips - (*MemberInvitedTips)(nil), // 24: server_api_params.MemberInvitedTips - (*MemberEnterTips)(nil), // 25: server_api_params.MemberEnterTips - (*FriendApplication)(nil), // 26: server_api_params.FriendApplication - (*FromToUserID)(nil), // 27: server_api_params.FromToUserID - (*FriendApplicationTips)(nil), // 28: server_api_params.FriendApplicationTips - (*FriendApplicationApprovedTips)(nil), // 29: server_api_params.FriendApplicationApprovedTips - (*FriendApplicationRejectedTips)(nil), // 30: server_api_params.FriendApplicationRejectedTips - (*FriendAddedTips)(nil), // 31: server_api_params.FriendAddedTips - (*FriendDeletedTips)(nil), // 32: server_api_params.FriendDeletedTips - (*BlackAddedTips)(nil), // 33: server_api_params.BlackAddedTips - (*BlackDeletedTips)(nil), // 34: server_api_params.BlackDeletedTips - (*FriendInfoChangedTips)(nil), // 35: server_api_params.FriendInfoChangedTips - (*UserInfoUpdatedTips)(nil), // 36: server_api_params.UserInfoUpdatedTips - (*ConversationUpdateTips)(nil), // 37: server_api_params.ConversationUpdateTips - (*RequestPagination)(nil), // 38: server_api_params.RequestPagination - (*ResponsePagination)(nil), // 39: server_api_params.ResponsePagination - nil, // 40: server_api_params.MsgData.OptionsEntry -} -var file_sdk_ws_ws_proto_depIdxs = []int32{ - 3, // 0: server_api_params.FriendInfo.friendUser:type_name -> server_api_params.UserInfo - 2, // 1: server_api_params.BlackInfo.blackUserInfo:type_name -> server_api_params.PublicUserInfo - 2, // 2: server_api_params.GroupRequest.userInfo:type_name -> server_api_params.PublicUserInfo - 0, // 3: server_api_params.GroupRequest.groupInfo:type_name -> server_api_params.GroupInfo - 13, // 4: server_api_params.PullMessageBySeqListResp.list:type_name -> server_api_params.MsgData - 40, // 5: server_api_params.MsgData.options:type_name -> server_api_params.MsgData.OptionsEntry - 14, // 6: server_api_params.MsgData.offlinePushInfo:type_name -> server_api_params.OfflinePushInfo - 0, // 7: server_api_params.GroupCreatedTips.group:type_name -> server_api_params.GroupInfo - 1, // 8: server_api_params.GroupCreatedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo - 1, // 9: server_api_params.GroupCreatedTips.memberList:type_name -> server_api_params.GroupMemberFullInfo - 1, // 10: server_api_params.GroupCreatedTips.groupOwnerUser:type_name -> server_api_params.GroupMemberFullInfo - 1, // 11: server_api_params.GroupInfoSetTips.opUser:type_name -> server_api_params.GroupMemberFullInfo - 0, // 12: server_api_params.GroupInfoSetTips.group:type_name -> server_api_params.GroupInfo - 0, // 13: server_api_params.JoinGroupApplicationTips.group:type_name -> server_api_params.GroupInfo - 2, // 14: server_api_params.JoinGroupApplicationTips.applicant:type_name -> server_api_params.PublicUserInfo - 0, // 15: server_api_params.MemberQuitTips.group:type_name -> server_api_params.GroupInfo - 1, // 16: server_api_params.MemberQuitTips.quitUser:type_name -> server_api_params.GroupMemberFullInfo - 0, // 17: server_api_params.GroupApplicationAcceptedTips.group:type_name -> server_api_params.GroupInfo - 1, // 18: server_api_params.GroupApplicationAcceptedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo - 0, // 19: server_api_params.GroupApplicationRejectedTips.group:type_name -> server_api_params.GroupInfo - 1, // 20: server_api_params.GroupApplicationRejectedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo - 0, // 21: server_api_params.GroupOwnerTransferredTips.group:type_name -> server_api_params.GroupInfo - 1, // 22: server_api_params.GroupOwnerTransferredTips.opUser:type_name -> server_api_params.GroupMemberFullInfo - 1, // 23: server_api_params.GroupOwnerTransferredTips.newGroupOwner:type_name -> server_api_params.GroupMemberFullInfo - 0, // 24: server_api_params.MemberKickedTips.group:type_name -> server_api_params.GroupInfo - 1, // 25: server_api_params.MemberKickedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo - 1, // 26: server_api_params.MemberKickedTips.kickedUserList:type_name -> server_api_params.GroupMemberFullInfo - 0, // 27: server_api_params.MemberInvitedTips.group:type_name -> server_api_params.GroupInfo - 1, // 28: server_api_params.MemberInvitedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo - 1, // 29: server_api_params.MemberInvitedTips.invitedUserList:type_name -> server_api_params.GroupMemberFullInfo - 0, // 30: server_api_params.MemberEnterTips.group:type_name -> server_api_params.GroupInfo - 1, // 31: server_api_params.MemberEnterTips.entrantUser:type_name -> server_api_params.GroupMemberFullInfo - 27, // 32: server_api_params.FriendApplicationTips.fromToUserID:type_name -> server_api_params.FromToUserID - 27, // 33: server_api_params.FriendApplicationApprovedTips.fromToUserID:type_name -> server_api_params.FromToUserID - 27, // 34: server_api_params.FriendApplicationRejectedTips.fromToUserID:type_name -> server_api_params.FromToUserID - 4, // 35: server_api_params.FriendAddedTips.friend:type_name -> server_api_params.FriendInfo - 2, // 36: server_api_params.FriendAddedTips.opUser:type_name -> server_api_params.PublicUserInfo - 27, // 37: server_api_params.FriendDeletedTips.fromToUserID:type_name -> server_api_params.FromToUserID - 27, // 38: server_api_params.BlackAddedTips.fromToUserID:type_name -> server_api_params.FromToUserID - 27, // 39: server_api_params.BlackDeletedTips.fromToUserID:type_name -> server_api_params.FromToUserID - 27, // 40: server_api_params.FriendInfoChangedTips.fromToUserID:type_name -> server_api_params.FromToUserID - 41, // [41:41] is the sub-list for method output_type - 41, // [41:41] is the sub-list for method input_type - 41, // [41:41] is the sub-list for extension type_name - 41, // [41:41] is the sub-list for extension extendee - 0, // [0:41] is the sub-list for field type_name -} - -func init() { file_sdk_ws_ws_proto_init() } -func file_sdk_ws_ws_proto_init() { - if File_sdk_ws_ws_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_sdk_ws_ws_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupMemberFullInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PublicUserInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlackInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PullMessageBySeqListResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PullMessageBySeqListReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMaxAndMinSeqReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMaxAndMinSeqResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserSendMsgResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OfflinePushInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TipsComm); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupCreatedTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupInfoSetTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JoinGroupApplicationTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemberQuitTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupApplicationAcceptedTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupApplicationRejectedTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupOwnerTransferredTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemberKickedTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemberInvitedTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MemberEnterTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendApplication); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FromToUserID); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendApplicationTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendApplicationApprovedTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendApplicationRejectedTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendAddedTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendDeletedTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlackAddedTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlackDeletedTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendInfoChangedTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserInfoUpdatedTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConversationUpdateTips); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestPagination); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_sdk_ws_ws_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponsePagination); 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_sdk_ws_ws_proto_rawDesc, - NumEnums: 0, - NumMessages: 41, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_sdk_ws_ws_proto_goTypes, - DependencyIndexes: file_sdk_ws_ws_proto_depIdxs, - MessageInfos: file_sdk_ws_ws_proto_msgTypes, - }.Build() - File_sdk_ws_ws_proto = out.File - file_sdk_ws_ws_proto_rawDesc = nil - file_sdk_ws_ws_proto_goTypes = nil - file_sdk_ws_ws_proto_depIdxs = nil +func init() { + proto.RegisterType((*GroupInfo)(nil), "server_api_params.GroupInfo") + proto.RegisterType((*GroupMemberFullInfo)(nil), "server_api_params.GroupMemberFullInfo") + proto.RegisterType((*PublicUserInfo)(nil), "server_api_params.PublicUserInfo") + proto.RegisterType((*UserInfo)(nil), "server_api_params.UserInfo") + proto.RegisterType((*FriendInfo)(nil), "server_api_params.FriendInfo") + proto.RegisterType((*BlackInfo)(nil), "server_api_params.BlackInfo") + proto.RegisterType((*GroupRequest)(nil), "server_api_params.GroupRequest") + proto.RegisterType((*FriendRequest)(nil), "server_api_params.FriendRequest") + proto.RegisterType((*PullMessageBySeqListResp)(nil), "server_api_params.PullMessageBySeqListResp") + proto.RegisterType((*PullMessageBySeqListReq)(nil), "server_api_params.PullMessageBySeqListReq") + proto.RegisterType((*GetMaxAndMinSeqReq)(nil), "server_api_params.GetMaxAndMinSeqReq") + proto.RegisterType((*GetMaxAndMinSeqResp)(nil), "server_api_params.GetMaxAndMinSeqResp") + proto.RegisterType((*UserSendMsgResp)(nil), "server_api_params.UserSendMsgResp") + proto.RegisterType((*MsgData)(nil), "server_api_params.MsgData") + proto.RegisterMapType((map[string]bool)(nil), "server_api_params.MsgData.OptionsEntry") + proto.RegisterType((*OfflinePushInfo)(nil), "server_api_params.OfflinePushInfo") + proto.RegisterType((*TipsComm)(nil), "server_api_params.TipsComm") + proto.RegisterType((*GroupCreatedTips)(nil), "server_api_params.GroupCreatedTips") + proto.RegisterType((*GroupInfoSetTips)(nil), "server_api_params.GroupInfoSetTips") + proto.RegisterType((*JoinGroupApplicationTips)(nil), "server_api_params.JoinGroupApplicationTips") + proto.RegisterType((*MemberQuitTips)(nil), "server_api_params.MemberQuitTips") + proto.RegisterType((*GroupApplicationAcceptedTips)(nil), "server_api_params.GroupApplicationAcceptedTips") + proto.RegisterType((*GroupApplicationRejectedTips)(nil), "server_api_params.GroupApplicationRejectedTips") + proto.RegisterType((*GroupOwnerTransferredTips)(nil), "server_api_params.GroupOwnerTransferredTips") + proto.RegisterType((*MemberKickedTips)(nil), "server_api_params.MemberKickedTips") + proto.RegisterType((*MemberInvitedTips)(nil), "server_api_params.MemberInvitedTips") + proto.RegisterType((*MemberEnterTips)(nil), "server_api_params.MemberEnterTips") + proto.RegisterType((*FriendApplication)(nil), "server_api_params.FriendApplication") + proto.RegisterType((*FromToUserID)(nil), "server_api_params.FromToUserID") + proto.RegisterType((*FriendApplicationTips)(nil), "server_api_params.FriendApplicationTips") + proto.RegisterType((*FriendApplicationApprovedTips)(nil), "server_api_params.FriendApplicationApprovedTips") + proto.RegisterType((*FriendApplicationRejectedTips)(nil), "server_api_params.FriendApplicationRejectedTips") + proto.RegisterType((*FriendAddedTips)(nil), "server_api_params.FriendAddedTips") + proto.RegisterType((*FriendDeletedTips)(nil), "server_api_params.FriendDeletedTips") + proto.RegisterType((*BlackAddedTips)(nil), "server_api_params.BlackAddedTips") + proto.RegisterType((*BlackDeletedTips)(nil), "server_api_params.BlackDeletedTips") + proto.RegisterType((*FriendInfoChangedTips)(nil), "server_api_params.FriendInfoChangedTips") + proto.RegisterType((*UserInfoUpdatedTips)(nil), "server_api_params.UserInfoUpdatedTips") + proto.RegisterType((*ConversationUpdateTips)(nil), "server_api_params.ConversationUpdateTips") + proto.RegisterType((*RequestPagination)(nil), "server_api_params.RequestPagination") + proto.RegisterType((*ResponsePagination)(nil), "server_api_params.ResponsePagination") +} + +func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_c5eabd6c93a174c0) } + +var fileDescriptor_ws_c5eabd6c93a174c0 = []byte{ + // 2006 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4f, 0x6f, 0x23, 0x49, + 0x15, 0x57, 0xdb, 0xb1, 0x13, 0x3f, 0xc7, 0x71, 0xd2, 0xb3, 0x04, 0x13, 0x66, 0x87, 0xd0, 0x5a, + 0x2d, 0x23, 0x24, 0xb2, 0x68, 0x10, 0x12, 0xec, 0x0a, 0x50, 0xfe, 0x4c, 0xc2, 0x2c, 0x71, 0x12, + 0xda, 0x19, 0x16, 0x21, 0xa4, 0x51, 0xc7, 0xfd, 0xec, 0xf4, 0xa6, 0x5d, 0xd5, 0xae, 0xea, 0x4e, + 0x66, 0x24, 0x4e, 0x20, 0xf1, 0x0d, 0xe0, 0x03, 0x70, 0x41, 0x5c, 0x10, 0x17, 0xc4, 0x85, 0x23, + 0x5f, 0x80, 0x33, 0x5f, 0x81, 0x2b, 0x07, 0x24, 0x24, 0x50, 0xfd, 0xe9, 0xee, 0xaa, 0xb6, 0x93, + 0xb5, 0xa2, 0x68, 0x87, 0x9b, 0xdf, 0xaf, 0xeb, 0xbd, 0x7a, 0xff, 0xeb, 0x55, 0x19, 0xba, 0x3c, + 0xbc, 0x7a, 0x75, 0xc3, 0x3f, 0xb8, 0xe1, 0x3b, 0x09, 0xa3, 0x29, 0x75, 0x37, 0x38, 0xb2, 0x6b, + 0x64, 0xaf, 0x82, 0x24, 0x7a, 0x95, 0x04, 0x2c, 0x98, 0x70, 0xef, 0x5f, 0x35, 0x68, 0x1d, 0x31, + 0x9a, 0x25, 0x2f, 0xc8, 0x88, 0xba, 0x3d, 0x58, 0x1e, 0x4b, 0xe2, 0xa0, 0xe7, 0x6c, 0x3b, 0x4f, + 0x5b, 0x7e, 0x4e, 0xba, 0x8f, 0xa1, 0x25, 0x7f, 0x9e, 0x04, 0x13, 0xec, 0xd5, 0xe4, 0xb7, 0x12, + 0x70, 0x3d, 0x58, 0x25, 0x34, 0x8d, 0x46, 0xd1, 0x30, 0x48, 0x23, 0x4a, 0x7a, 0x75, 0xb9, 0xc0, + 0xc2, 0xc4, 0x9a, 0x88, 0xa4, 0x8c, 0x86, 0xd9, 0x50, 0xae, 0x59, 0x52, 0x6b, 0x4c, 0x4c, 0xec, + 0x3f, 0x0a, 0x86, 0xf8, 0xd2, 0x3f, 0xee, 0x35, 0xd4, 0xfe, 0x9a, 0x74, 0xb7, 0xa1, 0x4d, 0x6f, + 0x08, 0xb2, 0x97, 0x1c, 0xd9, 0x8b, 0x83, 0x5e, 0x53, 0x7e, 0x35, 0x21, 0xf7, 0x09, 0xc0, 0x90, + 0x61, 0x90, 0xe2, 0x79, 0x34, 0xc1, 0xde, 0xf2, 0xb6, 0xf3, 0xb4, 0xe3, 0x1b, 0x88, 0x90, 0x30, + 0xc1, 0xc9, 0x05, 0xb2, 0x7d, 0x9a, 0x91, 0xb4, 0xb7, 0x22, 0x17, 0x98, 0x90, 0xbb, 0x06, 0x35, + 0x7c, 0xdd, 0x6b, 0x49, 0xd1, 0x35, 0x7c, 0xed, 0x6e, 0x42, 0x93, 0xa7, 0x41, 0x9a, 0xf1, 0x1e, + 0x6c, 0x3b, 0x4f, 0x1b, 0xbe, 0xa6, 0xdc, 0xf7, 0xa0, 0x23, 0xe5, 0xd2, 0x5c, 0x9b, 0xb6, 0x64, + 0xb1, 0xc1, 0xc2, 0x63, 0xe7, 0x6f, 0x12, 0xec, 0xad, 0x4a, 0x01, 0x25, 0xe0, 0xfd, 0xa5, 0x06, + 0x8f, 0xa4, 0xdf, 0xfb, 0x52, 0x81, 0xc3, 0x2c, 0x8e, 0x3f, 0x23, 0x02, 0x9b, 0xd0, 0xcc, 0xd4, + 0x76, 0xca, 0xfd, 0x9a, 0x12, 0xfb, 0x30, 0x1a, 0xe3, 0x31, 0x5e, 0x63, 0x2c, 0x1d, 0xdf, 0xf0, + 0x4b, 0xc0, 0xdd, 0x82, 0x95, 0x4f, 0x69, 0x44, 0xa4, 0x4f, 0x84, 0xc7, 0xeb, 0x7e, 0x41, 0x8b, + 0x6f, 0x24, 0x1a, 0x5e, 0x11, 0x11, 0x52, 0xe5, 0xee, 0x82, 0x36, 0x23, 0xd1, 0xb4, 0x23, 0xf1, + 0x3e, 0xac, 0x05, 0x49, 0xd2, 0x0f, 0xc8, 0x18, 0x99, 0xda, 0x74, 0x59, 0x6e, 0x5a, 0x41, 0x45, + 0x3c, 0xc4, 0x4e, 0x03, 0x9a, 0xb1, 0x21, 0x4a, 0x77, 0x37, 0x7c, 0x03, 0x11, 0x72, 0x68, 0x82, + 0xcc, 0x70, 0xa3, 0xf2, 0x7c, 0x05, 0xd5, 0x51, 0x81, 0x3c, 0x2a, 0xde, 0xaf, 0x1d, 0x58, 0x3b, + 0xcb, 0x2e, 0xe2, 0x68, 0x28, 0x17, 0x08, 0xa7, 0x95, 0xae, 0x71, 0x2c, 0xd7, 0x98, 0x06, 0xd6, + 0x6e, 0x37, 0xb0, 0x6e, 0x1b, 0xb8, 0x09, 0xcd, 0x31, 0x92, 0x10, 0x99, 0x74, 0x58, 0xc3, 0xd7, + 0x94, 0x56, 0xa4, 0x51, 0x28, 0xf2, 0xdb, 0x1a, 0xac, 0x7c, 0xce, 0x2a, 0x6c, 0x43, 0x3b, 0xb9, + 0xa4, 0x04, 0x4f, 0x32, 0x91, 0x34, 0x5a, 0x17, 0x13, 0x72, 0xdf, 0x81, 0xc6, 0x45, 0xc4, 0xd2, + 0x4b, 0x19, 0xb5, 0x8e, 0xaf, 0x08, 0x81, 0xe2, 0x24, 0x88, 0x54, 0xa8, 0x5a, 0xbe, 0x22, 0xb4, + 0x41, 0x2b, 0x45, 0xbe, 0xdb, 0x15, 0xd4, 0x9a, 0xa9, 0xa0, 0xd9, 0xc8, 0xc3, 0xbc, 0xc8, 0x7b, + 0xff, 0x76, 0x00, 0x0e, 0x59, 0x84, 0x24, 0x94, 0xae, 0xa9, 0x94, 0xae, 0x33, 0x5b, 0xba, 0x9b, + 0xd0, 0x64, 0x38, 0x09, 0xd8, 0x55, 0x9e, 0xda, 0x8a, 0xaa, 0x28, 0x54, 0x9f, 0x51, 0xe8, 0x23, + 0x80, 0x91, 0xdc, 0x47, 0xc8, 0x91, 0xae, 0x6a, 0x3f, 0xfb, 0xf2, 0xce, 0x4c, 0x93, 0xdb, 0xc9, + 0xa3, 0xe4, 0x1b, 0xcb, 0x45, 0xdd, 0x04, 0x61, 0xa8, 0xd3, 0xb3, 0xa1, 0xea, 0xa6, 0x00, 0xe6, + 0x64, 0x67, 0xf3, 0x8e, 0xec, 0x5c, 0x2e, 0x92, 0xe2, 0x9f, 0x0e, 0xb4, 0xf6, 0xe2, 0x60, 0x78, + 0xb5, 0xa0, 0xe9, 0xb6, 0x89, 0xb5, 0x19, 0x13, 0x8f, 0xa0, 0x73, 0x21, 0xc4, 0xe5, 0x26, 0x48, + 0x2f, 0xb4, 0x9f, 0x7d, 0x75, 0x8e, 0x95, 0x76, 0x51, 0xf8, 0x36, 0x9f, 0x6d, 0xee, 0xd2, 0x67, + 0x9b, 0xdb, 0xb8, 0xc3, 0xdc, 0x66, 0x61, 0xee, 0xdf, 0x6b, 0xb0, 0x2a, 0xdb, 0x98, 0x8f, 0xd3, + 0x0c, 0x79, 0xea, 0x7e, 0x0f, 0x56, 0xb2, 0x5c, 0x55, 0x67, 0x51, 0x55, 0x0b, 0x16, 0xf7, 0x43, + 0xdd, 0x34, 0x25, 0x7f, 0x4d, 0xf2, 0x3f, 0x9e, 0xc3, 0x5f, 0x9c, 0x58, 0x7e, 0xb9, 0x5c, 0x1c, + 0x30, 0x97, 0x01, 0x09, 0x63, 0xf4, 0x91, 0x67, 0x71, 0xaa, 0x7b, 0xa1, 0x85, 0xa9, 0x4c, 0x9b, + 0xf6, 0xf9, 0x58, 0x1f, 0x3f, 0x9a, 0x12, 0xde, 0x51, 0xeb, 0xc4, 0x27, 0x65, 0x7a, 0x09, 0x88, + 0x42, 0x65, 0x38, 0x95, 0x11, 0x52, 0x65, 0x95, 0x93, 0xe5, 0x9e, 0xda, 0x6b, 0x2a, 0x11, 0x2c, + 0x4c, 0x84, 0x58, 0xd1, 0x52, 0x80, 0x3a, 0x77, 0x0c, 0xa4, 0x7a, 0xec, 0x78, 0xff, 0xa8, 0x43, + 0x47, 0x95, 0x4f, 0xee, 0xd4, 0x27, 0x22, 0xcf, 0xe9, 0xc4, 0xca, 0x22, 0x03, 0x11, 0x5a, 0x08, + 0xea, 0xc4, 0x6e, 0x34, 0x16, 0x26, 0x52, 0x51, 0xd0, 0x87, 0x56, 0xc3, 0x31, 0xa1, 0x7c, 0x97, + 0x23, 0xb3, 0xf1, 0x18, 0x88, 0x68, 0x65, 0x29, 0xb5, 0xb2, 0xa3, 0xa0, 0x05, 0x6f, 0x4a, 0x8b, + 0xfd, 0x55, 0x7e, 0x18, 0x88, 0xf0, 0x6f, 0x4a, 0xf3, 0xbd, 0x95, 0x93, 0x4a, 0x40, 0x49, 0xd6, + 0xfb, 0xaa, 0x83, 0xa2, 0xa0, 0x67, 0xa2, 0xda, 0xba, 0x33, 0xaa, 0x60, 0x45, 0xd5, 0x2e, 0xae, + 0xf6, 0x4c, 0x71, 0xbd, 0x07, 0x1d, 0x25, 0x27, 0x4f, 0xfa, 0x55, 0x75, 0x90, 0x5b, 0xa0, 0x9d, + 0x1b, 0x9d, 0x6a, 0x6e, 0xd8, 0xd1, 0x5d, 0xbb, 0x25, 0xba, 0xdd, 0x22, 0xba, 0xbf, 0x80, 0xde, + 0x59, 0x16, 0xc7, 0x7d, 0xe4, 0x3c, 0x18, 0xe3, 0xde, 0x9b, 0x01, 0x4e, 0x8f, 0x23, 0x9e, 0xfa, + 0xc8, 0x13, 0x91, 0x67, 0xc8, 0xd8, 0x3e, 0x0d, 0x51, 0x06, 0xb9, 0xe1, 0xe7, 0xa4, 0xb0, 0x10, + 0x19, 0x13, 0x0a, 0xe8, 0x0e, 0xa9, 0x28, 0x77, 0x07, 0x96, 0xe2, 0x88, 0x8b, 0x5c, 0xaf, 0x3f, + 0x6d, 0x3f, 0xdb, 0x9a, 0x53, 0x2a, 0x7d, 0x3e, 0x3e, 0x08, 0xd2, 0xc0, 0x97, 0xeb, 0xbc, 0x09, + 0x7c, 0x71, 0xfe, 0xee, 0xd3, 0x5b, 0x4f, 0x30, 0xd1, 0xc3, 0x64, 0x13, 0x88, 0x28, 0x29, 0x86, + 0x0f, 0x13, 0x12, 0x6a, 0x73, 0x25, 0x47, 0xea, 0xd1, 0xf1, 0x73, 0xd2, 0x7b, 0x07, 0xdc, 0x23, + 0x4c, 0xfb, 0xc1, 0xeb, 0x5d, 0x12, 0xf6, 0x23, 0x32, 0xc0, 0xa9, 0x8f, 0x53, 0xef, 0x39, 0x3c, + 0x9a, 0x41, 0x79, 0x22, 0x14, 0x98, 0x04, 0xaf, 0x07, 0x38, 0x95, 0x0a, 0x74, 0x7c, 0x4d, 0x49, + 0x5c, 0xae, 0xd2, 0xed, 0x51, 0x53, 0xde, 0x14, 0xba, 0x22, 0x42, 0x03, 0x24, 0x61, 0x9f, 0x8f, + 0xa5, 0x88, 0x6d, 0x68, 0x2b, 0x0f, 0xf4, 0xf9, 0xb8, 0xec, 0xb7, 0x06, 0x24, 0x56, 0x0c, 0xe3, + 0x08, 0x49, 0xaa, 0x56, 0x68, 0x6b, 0x0c, 0x48, 0x24, 0x23, 0x47, 0x12, 0x16, 0x47, 0x4e, 0xdd, + 0x2f, 0x68, 0xef, 0xaf, 0x0d, 0x58, 0xd6, 0x0e, 0x95, 0xd3, 0xa1, 0x38, 0xe2, 0x0a, 0x7f, 0x29, + 0x4a, 0x25, 0xe3, 0xf0, 0xba, 0x9c, 0xd3, 0x14, 0x65, 0x4e, 0x76, 0x75, 0x7b, 0xb2, 0xab, 0xe8, + 0xb4, 0x34, 0xab, 0x53, 0xc5, 0xae, 0xc6, 0xac, 0x5d, 0x5f, 0x87, 0x75, 0x2e, 0x0b, 0xe6, 0x2c, + 0x0e, 0xd2, 0x11, 0x65, 0x13, 0x7d, 0x62, 0x35, 0xfc, 0x19, 0x5c, 0x34, 0x7b, 0x85, 0x15, 0x05, + 0xab, 0x2a, 0xb2, 0x82, 0x8a, 0xf2, 0x50, 0x48, 0x5e, 0xb8, 0x6a, 0x54, 0xb0, 0x41, 0xa5, 0x1b, + 0xe7, 0x11, 0x25, 0x72, 0xd2, 0x55, 0xf5, 0x69, 0x42, 0xc2, 0xf2, 0x09, 0x1f, 0x1f, 0x32, 0x3a, + 0xd1, 0x03, 0x43, 0x4e, 0x4a, 0xcb, 0x29, 0x49, 0x91, 0xa4, 0x92, 0xb7, 0xad, 0x78, 0x0d, 0x48, + 0xf0, 0x6a, 0x52, 0x16, 0xe7, 0xaa, 0x9f, 0x93, 0xee, 0x3a, 0xd4, 0x39, 0x4e, 0x75, 0xc5, 0x89, + 0x9f, 0x56, 0xe4, 0xba, 0x76, 0xe4, 0x2a, 0xad, 0x60, 0x5d, 0x7e, 0x35, 0x5b, 0x41, 0x39, 0xeb, + 0x6f, 0x58, 0xb3, 0xfe, 0x2e, 0x2c, 0xd3, 0x44, 0xe4, 0x39, 0xef, 0xb9, 0xb2, 0xc6, 0xbe, 0x76, + 0x7b, 0x8d, 0xed, 0x9c, 0xaa, 0x95, 0xcf, 0x49, 0xca, 0xde, 0xf8, 0x39, 0x9f, 0x7b, 0x0c, 0x5d, + 0x3a, 0x1a, 0xc5, 0x11, 0xc1, 0xb3, 0x8c, 0x5f, 0xca, 0x93, 0xed, 0x91, 0x3c, 0xd9, 0xbc, 0x39, + 0xa2, 0x4e, 0xed, 0x95, 0x7e, 0x95, 0x75, 0xeb, 0x43, 0x58, 0x35, 0xb7, 0x11, 0x6e, 0xb8, 0xc2, + 0x37, 0x3a, 0x07, 0xc5, 0x4f, 0x31, 0xec, 0x5d, 0x07, 0x71, 0xa6, 0x8e, 0x81, 0x15, 0x5f, 0x11, + 0x1f, 0xd6, 0xbe, 0xe3, 0x78, 0xbf, 0x71, 0xa0, 0x5b, 0xd9, 0x40, 0xac, 0x4e, 0xa3, 0x34, 0x46, + 0x2d, 0x41, 0x11, 0xae, 0x0b, 0x4b, 0x21, 0xf2, 0xa1, 0x4e, 0x61, 0xf9, 0x5b, 0x77, 0xb2, 0x7a, + 0x31, 0x2e, 0x8a, 0x0b, 0xdd, 0xe9, 0x40, 0x08, 0x1a, 0xd0, 0x8c, 0x84, 0xc5, 0x85, 0xce, 0xc0, + 0x44, 0x0a, 0x45, 0xa7, 0x83, 0xbd, 0x20, 0x1c, 0xa3, 0xba, 0x76, 0x35, 0xa4, 0x4e, 0x36, 0xe8, + 0x85, 0xb0, 0x72, 0x1e, 0x25, 0x7c, 0x9f, 0x4e, 0x26, 0x22, 0x10, 0x21, 0xa6, 0x62, 0x56, 0x75, + 0x64, 0xbc, 0x35, 0x25, 0x52, 0x25, 0xc4, 0x51, 0x90, 0xc5, 0xa9, 0x58, 0x9a, 0x17, 0xae, 0x01, + 0xc9, 0x0b, 0x07, 0xa7, 0xe4, 0x40, 0x71, 0x2b, 0x3d, 0x0d, 0xc4, 0xfb, 0x5b, 0x0d, 0xd6, 0xe5, + 0xe0, 0xb0, 0x2f, 0xc3, 0x1e, 0x4a, 0xa6, 0x67, 0xd0, 0x90, 0x65, 0xa8, 0x87, 0x95, 0xbb, 0x87, + 0x0d, 0xb5, 0xd4, 0xfd, 0x3e, 0x34, 0x69, 0x22, 0x47, 0x4e, 0x35, 0xa1, 0xbc, 0x7f, 0x1b, 0x93, + 0x7d, 0xb7, 0xf3, 0x35, 0x97, 0x7b, 0x08, 0xa0, 0xae, 0x9d, 0xc7, 0x65, 0xeb, 0x5e, 0x54, 0x86, + 0xc1, 0x29, 0x9c, 0x5b, 0xb4, 0x61, 0xe3, 0x82, 0x67, 0x83, 0xee, 0x09, 0xac, 0x49, 0xb5, 0x4f, + 0xf3, 0xa9, 0x53, 0xc6, 0x60, 0xf1, 0x1d, 0x2b, 0xdc, 0xde, 0xef, 0x1c, 0xed, 0x46, 0xf1, 0x75, + 0x80, 0xca, 0xf7, 0xa5, 0x4b, 0x9c, 0x7b, 0xb9, 0x64, 0x0b, 0x56, 0x26, 0x99, 0x31, 0x04, 0xd7, + 0xfd, 0x82, 0x2e, 0x43, 0x54, 0x5f, 0x38, 0x44, 0xde, 0xef, 0x1d, 0xe8, 0x7d, 0x4c, 0x23, 0x22, + 0x3f, 0xec, 0x26, 0x49, 0xac, 0x5f, 0x21, 0xee, 0x1d, 0xf3, 0x1f, 0x40, 0x2b, 0x50, 0x62, 0x48, + 0xaa, 0xc3, 0xbe, 0xc0, 0x60, 0x5b, 0xf2, 0x18, 0x33, 0x4a, 0xdd, 0x9c, 0x51, 0xbc, 0x3f, 0x3a, + 0xb0, 0xa6, 0x9c, 0xf2, 0xe3, 0x2c, 0x4a, 0xef, 0xad, 0xdf, 0x1e, 0xac, 0x4c, 0xb3, 0x28, 0xbd, + 0x47, 0x56, 0x16, 0x7c, 0xb3, 0xf9, 0x54, 0x9f, 0x93, 0x4f, 0xde, 0x9f, 0x1c, 0x78, 0x5c, 0x75, + 0xeb, 0xee, 0x70, 0x88, 0xc9, 0xdb, 0x2c, 0x29, 0x6b, 0x46, 0x5b, 0xaa, 0xcc, 0x68, 0x73, 0x55, + 0xf6, 0xf1, 0x53, 0x1c, 0xfe, 0xff, 0xaa, 0xfc, 0xab, 0x1a, 0x7c, 0xe9, 0xa8, 0x28, 0xbc, 0x73, + 0x16, 0x10, 0x3e, 0x42, 0xc6, 0xde, 0xa2, 0xbe, 0xc7, 0xd0, 0x21, 0x78, 0x53, 0xea, 0xa4, 0xcb, + 0x71, 0x51, 0x31, 0x36, 0xf3, 0x62, 0xbd, 0xcb, 0xfb, 0x8f, 0x03, 0xeb, 0x4a, 0xce, 0x8f, 0xa2, + 0xe1, 0xd5, 0x5b, 0x34, 0xfe, 0x04, 0xd6, 0xae, 0xa4, 0x06, 0x82, 0xba, 0x47, 0xdb, 0xae, 0x70, + 0x2f, 0x68, 0xfe, 0x7f, 0x1d, 0xd8, 0x50, 0x82, 0x5e, 0x90, 0xeb, 0xe8, 0x6d, 0x26, 0xeb, 0x19, + 0x74, 0x23, 0xa5, 0xc2, 0x3d, 0x1d, 0x50, 0x65, 0x5f, 0xd0, 0x03, 0x7f, 0x76, 0xa0, 0xab, 0x24, + 0x3d, 0x27, 0x29, 0xb2, 0x7b, 0xdb, 0xff, 0x43, 0x68, 0x23, 0x49, 0x59, 0x40, 0xee, 0xd3, 0x21, + 0x4d, 0xd6, 0x05, 0x9b, 0xe4, 0x15, 0x6c, 0xa8, 0x2b, 0xbc, 0xd1, 0x71, 0xc4, 0x2c, 0x1b, 0x84, + 0x6a, 0x3c, 0x75, 0x24, 0x53, 0x4e, 0xda, 0x8f, 0x33, 0xfa, 0x75, 0xbd, 0x7c, 0x9c, 0x79, 0x02, + 0x10, 0x84, 0xe1, 0x27, 0x94, 0x85, 0x11, 0xc9, 0x8f, 0x0f, 0x03, 0xf1, 0x3e, 0x86, 0x55, 0x31, + 0x4d, 0x9f, 0x1b, 0x97, 0xf1, 0x3b, 0x9f, 0x0b, 0xcc, 0x8b, 0x7c, 0xcd, 0xbe, 0xc8, 0x7b, 0x3f, + 0x87, 0x2f, 0xcc, 0x28, 0x2e, 0xbd, 0xbe, 0xaf, 0xde, 0x18, 0xf2, 0x4d, 0xb4, 0xf3, 0xbf, 0x32, + 0xc7, 0x85, 0xa6, 0x2e, 0xbe, 0xc5, 0xe4, 0xfd, 0xd2, 0x81, 0x77, 0x67, 0xc4, 0xef, 0x26, 0x09, + 0xa3, 0xd7, 0x3a, 0xb9, 0x1f, 0x62, 0x1b, 0xbb, 0xb5, 0xd6, 0xaa, 0xad, 0x75, 0xae, 0x12, 0xd6, + 0x71, 0xf0, 0x39, 0x28, 0xf1, 0x07, 0x07, 0xba, 0x5a, 0x89, 0x30, 0xd4, 0xdb, 0x7e, 0x1b, 0x9a, + 0xea, 0x7d, 0x52, 0x6f, 0xf8, 0xee, 0xdc, 0x0d, 0xf3, 0x77, 0x55, 0x5f, 0x2f, 0x9e, 0xcd, 0xc8, + 0xda, 0xbc, 0x31, 0xf0, 0xbb, 0x45, 0x07, 0x58, 0xf8, 0x05, 0x51, 0x33, 0x78, 0x3f, 0xcd, 0x93, + 0xf9, 0x00, 0x63, 0x7c, 0x48, 0x1f, 0x79, 0x2f, 0x61, 0x4d, 0x3e, 0x96, 0x96, 0x3e, 0x78, 0x10, + 0xb1, 0x9f, 0xc0, 0xba, 0x14, 0xfb, 0xe0, 0xfa, 0x16, 0xd5, 0x21, 0xfc, 0xb3, 0x7f, 0x19, 0x90, + 0xf1, 0x43, 0x4a, 0xff, 0x06, 0x3c, 0xca, 0x7d, 0xff, 0x32, 0x09, 0x8b, 0x2b, 0xca, 0x2d, 0x0f, + 0x33, 0xde, 0x37, 0x61, 0x73, 0x9f, 0x92, 0x6b, 0x64, 0x5c, 0x46, 0x59, 0xb1, 0xe4, 0x1c, 0x56, + 0xf1, 0x6b, 0xca, 0x1b, 0xc0, 0x86, 0x7e, 0x52, 0x3c, 0x0b, 0xc6, 0x11, 0x51, 0x5d, 0xe9, 0x09, + 0x40, 0x12, 0x8c, 0xf3, 0xbf, 0x14, 0xd4, 0xbb, 0x93, 0x81, 0x88, 0xef, 0xfc, 0x92, 0xde, 0xe8, + 0xef, 0x35, 0xf5, 0xbd, 0x44, 0xbc, 0x9f, 0x80, 0xeb, 0x23, 0x4f, 0x28, 0xe1, 0x68, 0x48, 0xdd, + 0x86, 0xf6, 0x7e, 0xc6, 0x18, 0x12, 0xb1, 0x55, 0xfe, 0xbe, 0x6e, 0x42, 0x42, 0xee, 0xa0, 0x94, + 0xab, 0xde, 0x2a, 0x0c, 0x64, 0xef, 0xf1, 0xcf, 0xb6, 0x76, 0x3e, 0x50, 0xff, 0x60, 0x7e, 0x34, + 0xe3, 0xc6, 0x8b, 0xa6, 0xfc, 0x47, 0xf3, 0x5b, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x24, 0xc1, + 0xb6, 0xba, 0xe4, 0x1c, 0x00, 0x00, } diff --git a/pkg/proto/sdk_ws/ws.proto b/pkg/proto/sdk_ws/ws.proto index cb622b96c..7856f4d19 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -40,6 +40,7 @@ message PublicUserInfo{ string nickname = 2; string faceURL = 3; int32 gender = 4; + string ex = 5; } message UserInfo{ @@ -338,37 +339,6 @@ message ConversationUpdateTips{ } -///callback -message CommonCallbackURLReq { - string CallbackCommand = 1 [json_name = "code"]; - string OpenIMServerID = 2; - string OperationID = 3; -} - -message CommonCallbackURLResp { - string Code = 1 [json_name = "code"]; - string Msg = 2 [json_name = "msg"]; - string OperationID = 3 [json_name = "operationID"]; -} - -message CallbackBeforeSendMsgReq { - commonReq CommonCallbackURLReq = 1; - -} - -message CallbackBeforeSendMsgResp { - commonResp CommonCallbackURLResp = 1; - string FromUserID = 2; -} - -message CallbackAfterAddFriendReq { - commonReq CommonCallbackURLReq = 1; -} - -message CallbackAfterAddFriendResp { - commonResp CommonCallbackURLResp = 1; -} - ///cms message RequestPagination { From c4554cb4e9fa4e42475628dfd1890c4835b413e7 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Wed, 9 Mar 2022 11:25:51 +0800 Subject: [PATCH 79/81] 1.statistics log 2. Handle exception : etcd keepalive failed --- internal/msg_gateway/gate/init.go | 4 ++-- internal/msg_transfer/logic/history_msg_handler.go | 4 ++-- internal/push/logic/init.go | 2 +- pkg/grpc-etcdv3/getcdv3/register.go | 10 ++++++++++ pkg/statistics/statistics.go | 7 ++++--- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/internal/msg_gateway/gate/init.go b/internal/msg_gateway/gate/init.go index a98027561..b827f9928 100644 --- a/internal/msg_gateway/gate/init.go +++ b/internal/msg_gateway/gate/init.go @@ -23,8 +23,8 @@ func Init(rpcPort, wsPort int) { log.NewPrivateLog(config.Config.ModuleName.LongConnSvrName) rwLock = new(sync.RWMutex) validate = validator.New() - statistics.NewStatistics(&sendMsgCount, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second recv to msg_gateway sendMsgCount", sendMsgCount), 10) - statistics.NewStatistics(&userCount, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second add user conn", userCount), 10) + statistics.NewStatistics(&sendMsgCount, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second recv to msg_gateway sendMsgCount", sendMsgCount), 300) + statistics.NewStatistics(&userCount, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second add user conn", userCount), 300) ws.onInit(wsPort) rpcSvr.onInit(rpcPort) } diff --git a/internal/msg_transfer/logic/history_msg_handler.go b/internal/msg_transfer/logic/history_msg_handler.go index 294b5ed70..1281b1732 100644 --- a/internal/msg_transfer/logic/history_msg_handler.go +++ b/internal/msg_transfer/logic/history_msg_handler.go @@ -26,8 +26,8 @@ type HistoryConsumerHandler struct { } func (mc *HistoryConsumerHandler) Init() { - statistics.NewStatistics(&mc.singleMsgCount, config.Config.ModuleName.MsgTransferName, "singleMsgCount insert to mongo ", 10) - statistics.NewStatistics(&mc.groupMsgCount, config.Config.ModuleName.MsgTransferName, "groupMsgCount insert to mongo ", 10) + statistics.NewStatistics(&mc.singleMsgCount, config.Config.ModuleName.MsgTransferName, "singleMsgCount insert to mongo ", 300) + statistics.NewStatistics(&mc.groupMsgCount, config.Config.ModuleName.MsgTransferName, "groupMsgCount insert to mongo ", 300) mc.msgHandle = make(map[string]fcb) mc.msgHandle[config.Config.Kafka.Ws2mschat.Topic] = mc.handleChatWs2Mongo diff --git a/internal/push/logic/init.go b/internal/push/logic/init.go index 02d96fda4..6f6f061b8 100644 --- a/internal/push/logic/init.go +++ b/internal/push/logic/init.go @@ -31,7 +31,7 @@ func Init(rpcPort int) { } func init() { producer = kafka.NewKafkaProducer(config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.Ws2mschat.Topic) - statistics.NewStatistics(&count, config.Config.ModuleName.PushName, fmt.Sprintf("%d second push to msg_gateway count", 10), 10) + statistics.NewStatistics(&count, config.Config.ModuleName.PushName, fmt.Sprintf("%d second push to msg_gateway count", 300), 300) } func Run() { diff --git a/pkg/grpc-etcdv3/getcdv3/register.go b/pkg/grpc-etcdv3/getcdv3/register.go index 3230590b6..898a4b8c0 100644 --- a/pkg/grpc-etcdv3/getcdv3/register.go +++ b/pkg/grpc-etcdv3/getcdv3/register.go @@ -78,6 +78,16 @@ func RegisterEtcd(schema, etcdAddr, myHost string, myPort int, serviceName strin log.Debug("", "KeepAlive kresp ok", pv) } else { log.Error("", "KeepAlive kresp failed", pv) + t := time.NewTicker(time.Duration(ttl) * time.Second) + for { + select { + case <-t.C: + } + if _, err := cli.Put(ctx, serviceKey, serviceValue, clientv3.WithLease(resp.ID)); err != nil { + log.Error("", "etcd Put failed ", err.Error(), serviceKey, serviceValue, resp.ID) + } + log.Info("", "etcd Put ok", serviceKey, serviceValue, resp.ID) + } } } } diff --git a/pkg/statistics/statistics.go b/pkg/statistics/statistics.go index 2711c5d91..bea4479bd 100644 --- a/pkg/statistics/statistics.go +++ b/pkg/statistics/statistics.go @@ -1,6 +1,7 @@ package statistics import ( + "Open_IM/pkg/common/log" "time" ) @@ -14,13 +15,13 @@ type Statistics struct { func (s *Statistics) output() { t := time.NewTicker(time.Duration(s.SleepTime) * time.Second) defer t.Stop() - //var sum uint64 + var sum uint64 for { - //sum = *s.Count + sum = *s.Count select { case <-t.C: } - //log.NewWarn("", " system stat ", s.ModuleName, s.PrintArgs, *s.Count-sum, "total:", *s.Count) + log.NewWarn("", " system stat ", s.ModuleName, s.PrintArgs, *s.Count-sum, "total:", *s.Count) } } From 12d10ce8b5face111d6a087c075a78810067bbd8 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 10 Mar 2022 12:01:28 +0800 Subject: [PATCH 80/81] fix bug: group member jointime --- internal/rpc/group/group.go | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 7d4b85094..1a992cfa3 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -79,7 +79,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR canCreate, err := callbackBeforeCreateGroup(req) if err != nil || !canCreate { if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "callbackBeforeCreateGroup failed", ) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "callbackBeforeCreateGroup failed") } } //Time stamp + MD5 to generate group chat id @@ -274,7 +274,7 @@ func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGro for _, v := range memberList { var node open_im_sdk.GroupMemberFullInfo - utils.CopyStructFields(&node, &v) + cp.GroupMemberDBCopyOpenIM(&node, &v) resp.MemberList = append(resp.MemberList, &node) } log.NewInfo(req.OperationID, "GetGroupAllMember rpc return ", resp.String()) @@ -647,9 +647,9 @@ func (s *groupServer) TransferGroupOwner(_ context.Context, req *pbGroup.Transfe } func (s *groupServer) GetGroupById(_ context.Context, req *pbGroup.GetGroupByIdReq) (*pbGroup.GetGroupByIdResp, error) { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbGroup.GetGroupByIdResp{CMSGroup: &pbGroup.CMSGroup{ - GroupInfo: &open_im_sdk.GroupInfo{}, + GroupInfo: &open_im_sdk.GroupInfo{}, }} group, err := imdb.GetGroupById(req.GroupId) if err != nil { @@ -687,7 +687,7 @@ func (s *groupServer) GetGroup(_ context.Context, req *pbGroup.GetGroupReq) (*pb log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupsByName error", req.String()) return resp, http.WrapError(constant.ErrDB) } - nums, err := imdb.GetGroupsCountNum(db.Group{GroupName:req.GroupName}) + nums, err := imdb.GetGroupsCountNum(db.Group{GroupName: req.GroupName}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupsCountNum error", err.Error()) return resp, http.WrapError(constant.ErrDB) @@ -712,7 +712,7 @@ func (s *groupServer) GetGroup(_ context.Context, req *pbGroup.GetGroupReq) (*pb CreatorUserID: v.CreatorUserID, }, GroupMasterName: groupMember.Nickname, - GroupMasterId: groupMember.UserID, + GroupMasterId: groupMember.UserID, }) } return resp, nil @@ -753,7 +753,7 @@ func (s *groupServer) GetGroups(_ context.Context, req *pbGroup.GetGroupsReq) (* CreatorUserID: v.CreatorUserID, CreateTime: uint32(v.CreateTime.Unix()), }, - GroupMasterId: groupMember.UserID, + GroupMasterId: groupMember.UserID, GroupMasterName: groupMember.Nickname, }) } @@ -808,11 +808,11 @@ func (s *groupServer) OperateUserRole(_ context.Context, req *pbGroup.OperateUse } func (s *groupServer) GetGroupMembersCMS(_ context.Context, req *pbGroup.GetGroupMembersCMSReq) (*pbGroup.GetGroupMembersCMSResp, error) { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "args:", req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "args:", req.String()) resp := &pbGroup.GetGroupMembersCMSResp{} groupMembers, err := imdb.GetGroupMembersByGroupIdCMS(req.GroupId, req.UserName, req.Pagination.ShowNumber, req.Pagination.PageNumber) if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(),"GetGroupMembersByGroupIdCMS Error", err.Error()) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupMembersByGroupIdCMS Error", err.Error()) return resp, http.WrapError(constant.ErrDB) } groupMembersCount, err := imdb.GetGroupMembersCount(req.GroupId, req.UserName) @@ -824,13 +824,13 @@ func (s *groupServer) GetGroupMembersCMS(_ context.Context, req *pbGroup.GetGrou resp.MemberNums = groupMembersCount for _, groupMember := range groupMembers { resp.Members = append(resp.Members, &open_im_sdk.GroupMemberFullInfo{ - GroupID: req.GroupId, - UserID: groupMember.UserID, - RoleLevel: groupMember.RoleLevel, - JoinTime: groupMember.JoinTime.Unix(), - Nickname: groupMember.Nickname, - FaceURL: groupMember.FaceURL, - JoinSource: groupMember.JoinSource, + GroupID: req.GroupId, + UserID: groupMember.UserID, + RoleLevel: groupMember.RoleLevel, + JoinTime: groupMember.JoinTime.Unix(), + Nickname: groupMember.Nickname, + FaceURL: groupMember.FaceURL, + JoinSource: groupMember.JoinSource, }) } resp.Pagination = &open_im_sdk.ResponsePagination{ @@ -894,7 +894,7 @@ func (s *groupServer) AddGroupMembersCMS(_ context.Context, req *pbGroup.AddGrou if err := imdb.InsertIntoGroupMember(groupMember); err != nil { log.NewError(req.OperationId, utils.GetSelfFuncName(), "InsertIntoGroupMember failed", req.String()) resp.Failed = append(resp.Failed, userId) - } else { + } else { resp.Success = append(resp.Success, userId) } } @@ -902,9 +902,8 @@ func (s *groupServer) AddGroupMembersCMS(_ context.Context, req *pbGroup.AddGrou return resp, nil } - func (s *groupServer) GetUserReqApplicationList(_ context.Context, req *pbGroup.GetUserReqApplicationListReq) (*pbGroup.GetUserReqApplicationListResp, error) { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbGroup.GetUserReqApplicationListResp{} groupRequests, err := imdb.GetUserReqGroupByUserID(req.UserID) if err != nil { From b10ba999cd72f8c6f91d1e5a0fee31d9c6ef31e2 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 10 Mar 2022 12:27:16 +0800 Subject: [PATCH 81/81] join time --- pkg/proto/sdk_ws/ws.pb.go | 300 +++++++++++++++++++------------------- pkg/proto/sdk_ws/ws.proto | 2 +- 2 files changed, 151 insertions(+), 151 deletions(-) diff --git a/pkg/proto/sdk_ws/ws.pb.go b/pkg/proto/sdk_ws/ws.pb.go index a8f964b34..accf94ecf 100644 --- a/pkg/proto/sdk_ws/ws.pb.go +++ b/pkg/proto/sdk_ws/ws.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // source: sdk_ws/ws.proto -package server_api_params // import "./sdk_ws" +package server_api_params import proto "github.com/golang/protobuf/proto" import fmt "fmt" @@ -40,7 +40,7 @@ func (m *GroupInfo) Reset() { *m = GroupInfo{} } func (m *GroupInfo) String() string { return proto.CompactTextString(m) } func (*GroupInfo) ProtoMessage() {} func (*GroupInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{0} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{0} } func (m *GroupInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfo.Unmarshal(m, b) @@ -148,7 +148,7 @@ type GroupMemberFullInfo struct { GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` RoleLevel int32 `protobuf:"varint,3,opt,name=roleLevel" json:"roleLevel,omitempty"` - JoinTime int64 `protobuf:"varint,4,opt,name=joinTime" json:"joinTime,omitempty"` + JoinTime int32 `protobuf:"varint,4,opt,name=joinTime" json:"joinTime,omitempty"` Nickname string `protobuf:"bytes,5,opt,name=nickname" json:"nickname,omitempty"` FaceURL string `protobuf:"bytes,6,opt,name=faceURL" json:"faceURL,omitempty"` AppMangerLevel int32 `protobuf:"varint,7,opt,name=appMangerLevel" json:"appMangerLevel,omitempty"` @@ -164,7 +164,7 @@ func (m *GroupMemberFullInfo) Reset() { *m = GroupMemberFullInfo{} } func (m *GroupMemberFullInfo) String() string { return proto.CompactTextString(m) } func (*GroupMemberFullInfo) ProtoMessage() {} func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{1} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{1} } func (m *GroupMemberFullInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberFullInfo.Unmarshal(m, b) @@ -205,7 +205,7 @@ func (m *GroupMemberFullInfo) GetRoleLevel() int32 { return 0 } -func (m *GroupMemberFullInfo) GetJoinTime() int64 { +func (m *GroupMemberFullInfo) GetJoinTime() int32 { if m != nil { return m.JoinTime } @@ -269,7 +269,7 @@ func (m *PublicUserInfo) Reset() { *m = PublicUserInfo{} } func (m *PublicUserInfo) String() string { return proto.CompactTextString(m) } func (*PublicUserInfo) ProtoMessage() {} func (*PublicUserInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{2} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{2} } func (m *PublicUserInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PublicUserInfo.Unmarshal(m, b) @@ -344,7 +344,7 @@ func (m *UserInfo) Reset() { *m = UserInfo{} } func (m *UserInfo) String() string { return proto.CompactTextString(m) } func (*UserInfo) ProtoMessage() {} func (*UserInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{3} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{3} } func (m *UserInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfo.Unmarshal(m, b) @@ -451,7 +451,7 @@ func (m *FriendInfo) Reset() { *m = FriendInfo{} } func (m *FriendInfo) String() string { return proto.CompactTextString(m) } func (*FriendInfo) ProtoMessage() {} func (*FriendInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{4} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{4} } func (m *FriendInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfo.Unmarshal(m, b) @@ -536,7 +536,7 @@ func (m *BlackInfo) Reset() { *m = BlackInfo{} } func (m *BlackInfo) String() string { return proto.CompactTextString(m) } func (*BlackInfo) ProtoMessage() {} func (*BlackInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{5} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{5} } func (m *BlackInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackInfo.Unmarshal(m, b) @@ -617,7 +617,7 @@ func (m *GroupRequest) Reset() { *m = GroupRequest{} } func (m *GroupRequest) String() string { return proto.CompactTextString(m) } func (*GroupRequest) ProtoMessage() {} func (*GroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{6} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{6} } func (m *GroupRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupRequest.Unmarshal(m, b) @@ -725,7 +725,7 @@ func (m *FriendRequest) Reset() { *m = FriendRequest{} } func (m *FriendRequest) String() string { return proto.CompactTextString(m) } func (*FriendRequest) ProtoMessage() {} func (*FriendRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{7} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{7} } func (m *FriendRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendRequest.Unmarshal(m, b) @@ -863,7 +863,7 @@ func (m *PullMessageBySeqListResp) Reset() { *m = PullMessageBySeqListRe func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) } func (*PullMessageBySeqListResp) ProtoMessage() {} func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{8} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{8} } func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) @@ -917,7 +917,7 @@ func (m *PullMessageBySeqListReq) Reset() { *m = PullMessageBySeqListReq func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) } func (*PullMessageBySeqListReq) ProtoMessage() {} func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{9} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{9} } func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) @@ -968,7 +968,7 @@ func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} } func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) } func (*GetMaxAndMinSeqReq) ProtoMessage() {} func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{10} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{10} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -1000,7 +1000,7 @@ func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} } func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) } func (*GetMaxAndMinSeqResp) ProtoMessage() {} func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{11} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{11} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -1047,7 +1047,7 @@ func (m *UserSendMsgResp) Reset() { *m = UserSendMsgResp{} } func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) } func (*UserSendMsgResp) ProtoMessage() {} func (*UserSendMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{12} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{12} } func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) @@ -1116,7 +1116,7 @@ func (m *MsgData) Reset() { *m = MsgData{} } func (m *MsgData) String() string { return proto.CompactTextString(m) } func (*MsgData) ProtoMessage() {} func (*MsgData) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{13} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{13} } func (m *MsgData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgData.Unmarshal(m, b) @@ -1277,7 +1277,7 @@ func (m *OfflinePushInfo) Reset() { *m = OfflinePushInfo{} } func (m *OfflinePushInfo) String() string { return proto.CompactTextString(m) } func (*OfflinePushInfo) ProtoMessage() {} func (*OfflinePushInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{14} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{14} } func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) @@ -1345,7 +1345,7 @@ func (m *TipsComm) Reset() { *m = TipsComm{} } func (m *TipsComm) String() string { return proto.CompactTextString(m) } func (*TipsComm) ProtoMessage() {} func (*TipsComm) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{15} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{15} } func (m *TipsComm) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TipsComm.Unmarshal(m, b) @@ -1402,7 +1402,7 @@ func (m *GroupCreatedTips) Reset() { *m = GroupCreatedTips{} } func (m *GroupCreatedTips) String() string { return proto.CompactTextString(m) } func (*GroupCreatedTips) ProtoMessage() {} func (*GroupCreatedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{16} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{16} } func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) @@ -1471,7 +1471,7 @@ func (m *GroupInfoSetTips) Reset() { *m = GroupInfoSetTips{} } func (m *GroupInfoSetTips) String() string { return proto.CompactTextString(m) } func (*GroupInfoSetTips) ProtoMessage() {} func (*GroupInfoSetTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{17} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{17} } func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) @@ -1526,7 +1526,7 @@ func (m *JoinGroupApplicationTips) Reset() { *m = JoinGroupApplicationTi func (m *JoinGroupApplicationTips) String() string { return proto.CompactTextString(m) } func (*JoinGroupApplicationTips) ProtoMessage() {} func (*JoinGroupApplicationTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{18} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{18} } func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) @@ -1582,7 +1582,7 @@ func (m *MemberQuitTips) Reset() { *m = MemberQuitTips{} } func (m *MemberQuitTips) String() string { return proto.CompactTextString(m) } func (*MemberQuitTips) ProtoMessage() {} func (*MemberQuitTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{19} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{19} } func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) @@ -1637,7 +1637,7 @@ func (m *GroupApplicationAcceptedTips) Reset() { *m = GroupApplicationAc func (m *GroupApplicationAcceptedTips) String() string { return proto.CompactTextString(m) } func (*GroupApplicationAcceptedTips) ProtoMessage() {} func (*GroupApplicationAcceptedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{20} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{20} } func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) @@ -1692,7 +1692,7 @@ func (m *GroupApplicationRejectedTips) Reset() { *m = GroupApplicationRe func (m *GroupApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (*GroupApplicationRejectedTips) ProtoMessage() {} func (*GroupApplicationRejectedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{21} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{21} } func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) @@ -1748,7 +1748,7 @@ func (m *GroupOwnerTransferredTips) Reset() { *m = GroupOwnerTransferred func (m *GroupOwnerTransferredTips) String() string { return proto.CompactTextString(m) } func (*GroupOwnerTransferredTips) ProtoMessage() {} func (*GroupOwnerTransferredTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{22} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{22} } func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) @@ -1811,7 +1811,7 @@ func (m *MemberKickedTips) Reset() { *m = MemberKickedTips{} } func (m *MemberKickedTips) String() string { return proto.CompactTextString(m) } func (*MemberKickedTips) ProtoMessage() {} func (*MemberKickedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{23} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{23} } func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) @@ -1874,7 +1874,7 @@ func (m *MemberInvitedTips) Reset() { *m = MemberInvitedTips{} } func (m *MemberInvitedTips) String() string { return proto.CompactTextString(m) } func (*MemberInvitedTips) ProtoMessage() {} func (*MemberInvitedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{24} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{24} } func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) @@ -1936,7 +1936,7 @@ func (m *MemberEnterTips) Reset() { *m = MemberEnterTips{} } func (m *MemberEnterTips) String() string { return proto.CompactTextString(m) } func (*MemberEnterTips) ProtoMessage() {} func (*MemberEnterTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{25} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{25} } func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) @@ -1990,7 +1990,7 @@ func (m *FriendApplication) Reset() { *m = FriendApplication{} } func (m *FriendApplication) String() string { return proto.CompactTextString(m) } func (*FriendApplication) ProtoMessage() {} func (*FriendApplication) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{26} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{26} } func (m *FriendApplication) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplication.Unmarshal(m, b) @@ -2043,7 +2043,7 @@ func (m *FromToUserID) Reset() { *m = FromToUserID{} } func (m *FromToUserID) String() string { return proto.CompactTextString(m) } func (*FromToUserID) ProtoMessage() {} func (*FromToUserID) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{27} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{27} } func (m *FromToUserID) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FromToUserID.Unmarshal(m, b) @@ -2089,7 +2089,7 @@ func (m *FriendApplicationTips) Reset() { *m = FriendApplicationTips{} } func (m *FriendApplicationTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationTips) ProtoMessage() {} func (*FriendApplicationTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{28} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{28} } func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) @@ -2129,7 +2129,7 @@ func (m *FriendApplicationApprovedTips) Reset() { *m = FriendApplication func (m *FriendApplicationApprovedTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationApprovedTips) ProtoMessage() {} func (*FriendApplicationApprovedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{29} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{29} } func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) @@ -2176,7 +2176,7 @@ func (m *FriendApplicationRejectedTips) Reset() { *m = FriendApplication func (m *FriendApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationRejectedTips) ProtoMessage() {} func (*FriendApplicationRejectedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{30} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{30} } func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) @@ -2224,7 +2224,7 @@ func (m *FriendAddedTips) Reset() { *m = FriendAddedTips{} } func (m *FriendAddedTips) String() string { return proto.CompactTextString(m) } func (*FriendAddedTips) ProtoMessage() {} func (*FriendAddedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{31} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{31} } func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) @@ -2277,7 +2277,7 @@ func (m *FriendDeletedTips) Reset() { *m = FriendDeletedTips{} } func (m *FriendDeletedTips) String() string { return proto.CompactTextString(m) } func (*FriendDeletedTips) ProtoMessage() {} func (*FriendDeletedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{32} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{32} } func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) @@ -2315,7 +2315,7 @@ func (m *BlackAddedTips) Reset() { *m = BlackAddedTips{} } func (m *BlackAddedTips) String() string { return proto.CompactTextString(m) } func (*BlackAddedTips) ProtoMessage() {} func (*BlackAddedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{33} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{33} } func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) @@ -2353,7 +2353,7 @@ func (m *BlackDeletedTips) Reset() { *m = BlackDeletedTips{} } func (m *BlackDeletedTips) String() string { return proto.CompactTextString(m) } func (*BlackDeletedTips) ProtoMessage() {} func (*BlackDeletedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{34} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{34} } func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) @@ -2391,7 +2391,7 @@ func (m *FriendInfoChangedTips) Reset() { *m = FriendInfoChangedTips{} } func (m *FriendInfoChangedTips) String() string { return proto.CompactTextString(m) } func (*FriendInfoChangedTips) ProtoMessage() {} func (*FriendInfoChangedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{35} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{35} } func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) @@ -2430,7 +2430,7 @@ func (m *UserInfoUpdatedTips) Reset() { *m = UserInfoUpdatedTips{} } func (m *UserInfoUpdatedTips) String() string { return proto.CompactTextString(m) } func (*UserInfoUpdatedTips) ProtoMessage() {} func (*UserInfoUpdatedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{36} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{36} } func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) @@ -2469,7 +2469,7 @@ func (m *ConversationUpdateTips) Reset() { *m = ConversationUpdateTips{} func (m *ConversationUpdateTips) String() string { return proto.CompactTextString(m) } func (*ConversationUpdateTips) ProtoMessage() {} func (*ConversationUpdateTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{37} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{37} } func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) @@ -2509,7 +2509,7 @@ func (m *RequestPagination) Reset() { *m = RequestPagination{} } func (m *RequestPagination) String() string { return proto.CompactTextString(m) } func (*RequestPagination) ProtoMessage() {} func (*RequestPagination) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{38} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{38} } func (m *RequestPagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RequestPagination.Unmarshal(m, b) @@ -2555,7 +2555,7 @@ func (m *ResponsePagination) Reset() { *m = ResponsePagination{} } func (m *ResponsePagination) String() string { return proto.CompactTextString(m) } func (*ResponsePagination) ProtoMessage() {} func (*ResponsePagination) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_c5eabd6c93a174c0, []int{39} + return fileDescriptor_ws_c2d3d5fccaf1040a, []int{39} } func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) @@ -2633,10 +2633,10 @@ func init() { proto.RegisterType((*ResponsePagination)(nil), "server_api_params.ResponsePagination") } -func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_c5eabd6c93a174c0) } +func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_c2d3d5fccaf1040a) } -var fileDescriptor_ws_c5eabd6c93a174c0 = []byte{ - // 2006 bytes of a gzipped FileDescriptorProto +var fileDescriptor_ws_c2d3d5fccaf1040a = []byte{ + // 2005 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4f, 0x6f, 0x23, 0x49, 0x15, 0x57, 0xdb, 0xb1, 0x13, 0x3f, 0xc7, 0x71, 0xd2, 0xb3, 0x04, 0x13, 0x66, 0x87, 0xd0, 0x5a, 0x2d, 0x23, 0x24, 0xb2, 0x68, 0x10, 0x12, 0xec, 0x0a, 0x50, 0xfe, 0x4c, 0xc2, 0x2c, 0x71, 0x12, @@ -2659,108 +2659,108 @@ var fileDescriptor_ws_c5eabd6c93a174c0 = []byte{ 0xb1, 0xc1, 0xc2, 0x63, 0xe7, 0x6f, 0x12, 0xec, 0xad, 0x4a, 0x01, 0x25, 0xe0, 0xfd, 0xa5, 0x06, 0x8f, 0xa4, 0xdf, 0xfb, 0x52, 0x81, 0xc3, 0x2c, 0x8e, 0x3f, 0x23, 0x02, 0x9b, 0xd0, 0xcc, 0xd4, 0x76, 0xca, 0xfd, 0x9a, 0x12, 0xfb, 0x30, 0x1a, 0xe3, 0x31, 0x5e, 0x63, 0x2c, 0x1d, 0xdf, 0xf0, - 0x4b, 0xc0, 0xdd, 0x82, 0x95, 0x4f, 0x69, 0x44, 0xa4, 0x4f, 0x84, 0xc7, 0xeb, 0x7e, 0x41, 0x8b, - 0x6f, 0x24, 0x1a, 0x5e, 0x11, 0x11, 0x52, 0xe5, 0xee, 0x82, 0x36, 0x23, 0xd1, 0xb4, 0x23, 0xf1, - 0x3e, 0xac, 0x05, 0x49, 0xd2, 0x0f, 0xc8, 0x18, 0x99, 0xda, 0x74, 0x59, 0x6e, 0x5a, 0x41, 0x45, - 0x3c, 0xc4, 0x4e, 0x03, 0x9a, 0xb1, 0x21, 0x4a, 0x77, 0x37, 0x7c, 0x03, 0x11, 0x72, 0x68, 0x82, - 0xcc, 0x70, 0xa3, 0xf2, 0x7c, 0x05, 0xd5, 0x51, 0x81, 0x3c, 0x2a, 0xde, 0xaf, 0x1d, 0x58, 0x3b, - 0xcb, 0x2e, 0xe2, 0x68, 0x28, 0x17, 0x08, 0xa7, 0x95, 0xae, 0x71, 0x2c, 0xd7, 0x98, 0x06, 0xd6, - 0x6e, 0x37, 0xb0, 0x6e, 0x1b, 0xb8, 0x09, 0xcd, 0x31, 0x92, 0x10, 0x99, 0x74, 0x58, 0xc3, 0xd7, - 0x94, 0x56, 0xa4, 0x51, 0x28, 0xf2, 0xdb, 0x1a, 0xac, 0x7c, 0xce, 0x2a, 0x6c, 0x43, 0x3b, 0xb9, - 0xa4, 0x04, 0x4f, 0x32, 0x91, 0x34, 0x5a, 0x17, 0x13, 0x72, 0xdf, 0x81, 0xc6, 0x45, 0xc4, 0xd2, - 0x4b, 0x19, 0xb5, 0x8e, 0xaf, 0x08, 0x81, 0xe2, 0x24, 0x88, 0x54, 0xa8, 0x5a, 0xbe, 0x22, 0xb4, - 0x41, 0x2b, 0x45, 0xbe, 0xdb, 0x15, 0xd4, 0x9a, 0xa9, 0xa0, 0xd9, 0xc8, 0xc3, 0xbc, 0xc8, 0x7b, - 0xff, 0x76, 0x00, 0x0e, 0x59, 0x84, 0x24, 0x94, 0xae, 0xa9, 0x94, 0xae, 0x33, 0x5b, 0xba, 0x9b, - 0xd0, 0x64, 0x38, 0x09, 0xd8, 0x55, 0x9e, 0xda, 0x8a, 0xaa, 0x28, 0x54, 0x9f, 0x51, 0xe8, 0x23, - 0x80, 0x91, 0xdc, 0x47, 0xc8, 0x91, 0xae, 0x6a, 0x3f, 0xfb, 0xf2, 0xce, 0x4c, 0x93, 0xdb, 0xc9, - 0xa3, 0xe4, 0x1b, 0xcb, 0x45, 0xdd, 0x04, 0x61, 0xa8, 0xd3, 0xb3, 0xa1, 0xea, 0xa6, 0x00, 0xe6, - 0x64, 0x67, 0xf3, 0x8e, 0xec, 0x5c, 0x2e, 0x92, 0xe2, 0x9f, 0x0e, 0xb4, 0xf6, 0xe2, 0x60, 0x78, - 0xb5, 0xa0, 0xe9, 0xb6, 0x89, 0xb5, 0x19, 0x13, 0x8f, 0xa0, 0x73, 0x21, 0xc4, 0xe5, 0x26, 0x48, - 0x2f, 0xb4, 0x9f, 0x7d, 0x75, 0x8e, 0x95, 0x76, 0x51, 0xf8, 0x36, 0x9f, 0x6d, 0xee, 0xd2, 0x67, - 0x9b, 0xdb, 0xb8, 0xc3, 0xdc, 0x66, 0x61, 0xee, 0xdf, 0x6b, 0xb0, 0x2a, 0xdb, 0x98, 0x8f, 0xd3, - 0x0c, 0x79, 0xea, 0x7e, 0x0f, 0x56, 0xb2, 0x5c, 0x55, 0x67, 0x51, 0x55, 0x0b, 0x16, 0xf7, 0x43, - 0xdd, 0x34, 0x25, 0x7f, 0x4d, 0xf2, 0x3f, 0x9e, 0xc3, 0x5f, 0x9c, 0x58, 0x7e, 0xb9, 0x5c, 0x1c, - 0x30, 0x97, 0x01, 0x09, 0x63, 0xf4, 0x91, 0x67, 0x71, 0xaa, 0x7b, 0xa1, 0x85, 0xa9, 0x4c, 0x9b, - 0xf6, 0xf9, 0x58, 0x1f, 0x3f, 0x9a, 0x12, 0xde, 0x51, 0xeb, 0xc4, 0x27, 0x65, 0x7a, 0x09, 0x88, - 0x42, 0x65, 0x38, 0x95, 0x11, 0x52, 0x65, 0x95, 0x93, 0xe5, 0x9e, 0xda, 0x6b, 0x2a, 0x11, 0x2c, - 0x4c, 0x84, 0x58, 0xd1, 0x52, 0x80, 0x3a, 0x77, 0x0c, 0xa4, 0x7a, 0xec, 0x78, 0xff, 0xa8, 0x43, - 0x47, 0x95, 0x4f, 0xee, 0xd4, 0x27, 0x22, 0xcf, 0xe9, 0xc4, 0xca, 0x22, 0x03, 0x11, 0x5a, 0x08, - 0xea, 0xc4, 0x6e, 0x34, 0x16, 0x26, 0x52, 0x51, 0xd0, 0x87, 0x56, 0xc3, 0x31, 0xa1, 0x7c, 0x97, - 0x23, 0xb3, 0xf1, 0x18, 0x88, 0x68, 0x65, 0x29, 0xb5, 0xb2, 0xa3, 0xa0, 0x05, 0x6f, 0x4a, 0x8b, - 0xfd, 0x55, 0x7e, 0x18, 0x88, 0xf0, 0x6f, 0x4a, 0xf3, 0xbd, 0x95, 0x93, 0x4a, 0x40, 0x49, 0xd6, - 0xfb, 0xaa, 0x83, 0xa2, 0xa0, 0x67, 0xa2, 0xda, 0xba, 0x33, 0xaa, 0x60, 0x45, 0xd5, 0x2e, 0xae, - 0xf6, 0x4c, 0x71, 0xbd, 0x07, 0x1d, 0x25, 0x27, 0x4f, 0xfa, 0x55, 0x75, 0x90, 0x5b, 0xa0, 0x9d, - 0x1b, 0x9d, 0x6a, 0x6e, 0xd8, 0xd1, 0x5d, 0xbb, 0x25, 0xba, 0xdd, 0x22, 0xba, 0xbf, 0x80, 0xde, - 0x59, 0x16, 0xc7, 0x7d, 0xe4, 0x3c, 0x18, 0xe3, 0xde, 0x9b, 0x01, 0x4e, 0x8f, 0x23, 0x9e, 0xfa, - 0xc8, 0x13, 0x91, 0x67, 0xc8, 0xd8, 0x3e, 0x0d, 0x51, 0x06, 0xb9, 0xe1, 0xe7, 0xa4, 0xb0, 0x10, - 0x19, 0x13, 0x0a, 0xe8, 0x0e, 0xa9, 0x28, 0x77, 0x07, 0x96, 0xe2, 0x88, 0x8b, 0x5c, 0xaf, 0x3f, - 0x6d, 0x3f, 0xdb, 0x9a, 0x53, 0x2a, 0x7d, 0x3e, 0x3e, 0x08, 0xd2, 0xc0, 0x97, 0xeb, 0xbc, 0x09, - 0x7c, 0x71, 0xfe, 0xee, 0xd3, 0x5b, 0x4f, 0x30, 0xd1, 0xc3, 0x64, 0x13, 0x88, 0x28, 0x29, 0x86, - 0x0f, 0x13, 0x12, 0x6a, 0x73, 0x25, 0x47, 0xea, 0xd1, 0xf1, 0x73, 0xd2, 0x7b, 0x07, 0xdc, 0x23, - 0x4c, 0xfb, 0xc1, 0xeb, 0x5d, 0x12, 0xf6, 0x23, 0x32, 0xc0, 0xa9, 0x8f, 0x53, 0xef, 0x39, 0x3c, - 0x9a, 0x41, 0x79, 0x22, 0x14, 0x98, 0x04, 0xaf, 0x07, 0x38, 0x95, 0x0a, 0x74, 0x7c, 0x4d, 0x49, - 0x5c, 0xae, 0xd2, 0xed, 0x51, 0x53, 0xde, 0x14, 0xba, 0x22, 0x42, 0x03, 0x24, 0x61, 0x9f, 0x8f, - 0xa5, 0x88, 0x6d, 0x68, 0x2b, 0x0f, 0xf4, 0xf9, 0xb8, 0xec, 0xb7, 0x06, 0x24, 0x56, 0x0c, 0xe3, - 0x08, 0x49, 0xaa, 0x56, 0x68, 0x6b, 0x0c, 0x48, 0x24, 0x23, 0x47, 0x12, 0x16, 0x47, 0x4e, 0xdd, - 0x2f, 0x68, 0xef, 0xaf, 0x0d, 0x58, 0xd6, 0x0e, 0x95, 0xd3, 0xa1, 0x38, 0xe2, 0x0a, 0x7f, 0x29, - 0x4a, 0x25, 0xe3, 0xf0, 0xba, 0x9c, 0xd3, 0x14, 0x65, 0x4e, 0x76, 0x75, 0x7b, 0xb2, 0xab, 0xe8, - 0xb4, 0x34, 0xab, 0x53, 0xc5, 0xae, 0xc6, 0xac, 0x5d, 0x5f, 0x87, 0x75, 0x2e, 0x0b, 0xe6, 0x2c, - 0x0e, 0xd2, 0x11, 0x65, 0x13, 0x7d, 0x62, 0x35, 0xfc, 0x19, 0x5c, 0x34, 0x7b, 0x85, 0x15, 0x05, - 0xab, 0x2a, 0xb2, 0x82, 0x8a, 0xf2, 0x50, 0x48, 0x5e, 0xb8, 0x6a, 0x54, 0xb0, 0x41, 0xa5, 0x1b, - 0xe7, 0x11, 0x25, 0x72, 0xd2, 0x55, 0xf5, 0x69, 0x42, 0xc2, 0xf2, 0x09, 0x1f, 0x1f, 0x32, 0x3a, - 0xd1, 0x03, 0x43, 0x4e, 0x4a, 0xcb, 0x29, 0x49, 0x91, 0xa4, 0x92, 0xb7, 0xad, 0x78, 0x0d, 0x48, - 0xf0, 0x6a, 0x52, 0x16, 0xe7, 0xaa, 0x9f, 0x93, 0xee, 0x3a, 0xd4, 0x39, 0x4e, 0x75, 0xc5, 0x89, - 0x9f, 0x56, 0xe4, 0xba, 0x76, 0xe4, 0x2a, 0xad, 0x60, 0x5d, 0x7e, 0x35, 0x5b, 0x41, 0x39, 0xeb, - 0x6f, 0x58, 0xb3, 0xfe, 0x2e, 0x2c, 0xd3, 0x44, 0xe4, 0x39, 0xef, 0xb9, 0xb2, 0xc6, 0xbe, 0x76, - 0x7b, 0x8d, 0xed, 0x9c, 0xaa, 0x95, 0xcf, 0x49, 0xca, 0xde, 0xf8, 0x39, 0x9f, 0x7b, 0x0c, 0x5d, - 0x3a, 0x1a, 0xc5, 0x11, 0xc1, 0xb3, 0x8c, 0x5f, 0xca, 0x93, 0xed, 0x91, 0x3c, 0xd9, 0xbc, 0x39, - 0xa2, 0x4e, 0xed, 0x95, 0x7e, 0x95, 0x75, 0xeb, 0x43, 0x58, 0x35, 0xb7, 0x11, 0x6e, 0xb8, 0xc2, - 0x37, 0x3a, 0x07, 0xc5, 0x4f, 0x31, 0xec, 0x5d, 0x07, 0x71, 0xa6, 0x8e, 0x81, 0x15, 0x5f, 0x11, - 0x1f, 0xd6, 0xbe, 0xe3, 0x78, 0xbf, 0x71, 0xa0, 0x5b, 0xd9, 0x40, 0xac, 0x4e, 0xa3, 0x34, 0x46, - 0x2d, 0x41, 0x11, 0xae, 0x0b, 0x4b, 0x21, 0xf2, 0xa1, 0x4e, 0x61, 0xf9, 0x5b, 0x77, 0xb2, 0x7a, - 0x31, 0x2e, 0x8a, 0x0b, 0xdd, 0xe9, 0x40, 0x08, 0x1a, 0xd0, 0x8c, 0x84, 0xc5, 0x85, 0xce, 0xc0, - 0x44, 0x0a, 0x45, 0xa7, 0x83, 0xbd, 0x20, 0x1c, 0xa3, 0xba, 0x76, 0x35, 0xa4, 0x4e, 0x36, 0xe8, - 0x85, 0xb0, 0x72, 0x1e, 0x25, 0x7c, 0x9f, 0x4e, 0x26, 0x22, 0x10, 0x21, 0xa6, 0x62, 0x56, 0x75, - 0x64, 0xbc, 0x35, 0x25, 0x52, 0x25, 0xc4, 0x51, 0x90, 0xc5, 0xa9, 0x58, 0x9a, 0x17, 0xae, 0x01, - 0xc9, 0x0b, 0x07, 0xa7, 0xe4, 0x40, 0x71, 0x2b, 0x3d, 0x0d, 0xc4, 0xfb, 0x5b, 0x0d, 0xd6, 0xe5, - 0xe0, 0xb0, 0x2f, 0xc3, 0x1e, 0x4a, 0xa6, 0x67, 0xd0, 0x90, 0x65, 0xa8, 0x87, 0x95, 0xbb, 0x87, - 0x0d, 0xb5, 0xd4, 0xfd, 0x3e, 0x34, 0x69, 0x22, 0x47, 0x4e, 0x35, 0xa1, 0xbc, 0x7f, 0x1b, 0x93, - 0x7d, 0xb7, 0xf3, 0x35, 0x97, 0x7b, 0x08, 0xa0, 0xae, 0x9d, 0xc7, 0x65, 0xeb, 0x5e, 0x54, 0x86, - 0xc1, 0x29, 0x9c, 0x5b, 0xb4, 0x61, 0xe3, 0x82, 0x67, 0x83, 0xee, 0x09, 0xac, 0x49, 0xb5, 0x4f, - 0xf3, 0xa9, 0x53, 0xc6, 0x60, 0xf1, 0x1d, 0x2b, 0xdc, 0xde, 0xef, 0x1c, 0xed, 0x46, 0xf1, 0x75, - 0x80, 0xca, 0xf7, 0xa5, 0x4b, 0x9c, 0x7b, 0xb9, 0x64, 0x0b, 0x56, 0x26, 0x99, 0x31, 0x04, 0xd7, - 0xfd, 0x82, 0x2e, 0x43, 0x54, 0x5f, 0x38, 0x44, 0xde, 0xef, 0x1d, 0xe8, 0x7d, 0x4c, 0x23, 0x22, - 0x3f, 0xec, 0x26, 0x49, 0xac, 0x5f, 0x21, 0xee, 0x1d, 0xf3, 0x1f, 0x40, 0x2b, 0x50, 0x62, 0x48, - 0xaa, 0xc3, 0xbe, 0xc0, 0x60, 0x5b, 0xf2, 0x18, 0x33, 0x4a, 0xdd, 0x9c, 0x51, 0xbc, 0x3f, 0x3a, - 0xb0, 0xa6, 0x9c, 0xf2, 0xe3, 0x2c, 0x4a, 0xef, 0xad, 0xdf, 0x1e, 0xac, 0x4c, 0xb3, 0x28, 0xbd, - 0x47, 0x56, 0x16, 0x7c, 0xb3, 0xf9, 0x54, 0x9f, 0x93, 0x4f, 0xde, 0x9f, 0x1c, 0x78, 0x5c, 0x75, - 0xeb, 0xee, 0x70, 0x88, 0xc9, 0xdb, 0x2c, 0x29, 0x6b, 0x46, 0x5b, 0xaa, 0xcc, 0x68, 0x73, 0x55, - 0xf6, 0xf1, 0x53, 0x1c, 0xfe, 0xff, 0xaa, 0xfc, 0xab, 0x1a, 0x7c, 0xe9, 0xa8, 0x28, 0xbc, 0x73, - 0x16, 0x10, 0x3e, 0x42, 0xc6, 0xde, 0xa2, 0xbe, 0xc7, 0xd0, 0x21, 0x78, 0x53, 0xea, 0xa4, 0xcb, - 0x71, 0x51, 0x31, 0x36, 0xf3, 0x62, 0xbd, 0xcb, 0xfb, 0x8f, 0x03, 0xeb, 0x4a, 0xce, 0x8f, 0xa2, - 0xe1, 0xd5, 0x5b, 0x34, 0xfe, 0x04, 0xd6, 0xae, 0xa4, 0x06, 0x82, 0xba, 0x47, 0xdb, 0xae, 0x70, - 0x2f, 0x68, 0xfe, 0x7f, 0x1d, 0xd8, 0x50, 0x82, 0x5e, 0x90, 0xeb, 0xe8, 0x6d, 0x26, 0xeb, 0x19, - 0x74, 0x23, 0xa5, 0xc2, 0x3d, 0x1d, 0x50, 0x65, 0x5f, 0xd0, 0x03, 0x7f, 0x76, 0xa0, 0xab, 0x24, - 0x3d, 0x27, 0x29, 0xb2, 0x7b, 0xdb, 0xff, 0x43, 0x68, 0x23, 0x49, 0x59, 0x40, 0xee, 0xd3, 0x21, - 0x4d, 0xd6, 0x05, 0x9b, 0xe4, 0x15, 0x6c, 0xa8, 0x2b, 0xbc, 0xd1, 0x71, 0xc4, 0x2c, 0x1b, 0x84, - 0x6a, 0x3c, 0x75, 0x24, 0x53, 0x4e, 0xda, 0x8f, 0x33, 0xfa, 0x75, 0xbd, 0x7c, 0x9c, 0x79, 0x02, - 0x10, 0x84, 0xe1, 0x27, 0x94, 0x85, 0x11, 0xc9, 0x8f, 0x0f, 0x03, 0xf1, 0x3e, 0x86, 0x55, 0x31, - 0x4d, 0x9f, 0x1b, 0x97, 0xf1, 0x3b, 0x9f, 0x0b, 0xcc, 0x8b, 0x7c, 0xcd, 0xbe, 0xc8, 0x7b, 0x3f, - 0x87, 0x2f, 0xcc, 0x28, 0x2e, 0xbd, 0xbe, 0xaf, 0xde, 0x18, 0xf2, 0x4d, 0xb4, 0xf3, 0xbf, 0x32, - 0xc7, 0x85, 0xa6, 0x2e, 0xbe, 0xc5, 0xe4, 0xfd, 0xd2, 0x81, 0x77, 0x67, 0xc4, 0xef, 0x26, 0x09, - 0xa3, 0xd7, 0x3a, 0xb9, 0x1f, 0x62, 0x1b, 0xbb, 0xb5, 0xd6, 0xaa, 0xad, 0x75, 0xae, 0x12, 0xd6, - 0x71, 0xf0, 0x39, 0x28, 0xf1, 0x07, 0x07, 0xba, 0x5a, 0x89, 0x30, 0xd4, 0xdb, 0x7e, 0x1b, 0x9a, - 0xea, 0x7d, 0x52, 0x6f, 0xf8, 0xee, 0xdc, 0x0d, 0xf3, 0x77, 0x55, 0x5f, 0x2f, 0x9e, 0xcd, 0xc8, - 0xda, 0xbc, 0x31, 0xf0, 0xbb, 0x45, 0x07, 0x58, 0xf8, 0x05, 0x51, 0x33, 0x78, 0x3f, 0xcd, 0x93, - 0xf9, 0x00, 0x63, 0x7c, 0x48, 0x1f, 0x79, 0x2f, 0x61, 0x4d, 0x3e, 0x96, 0x96, 0x3e, 0x78, 0x10, - 0xb1, 0x9f, 0xc0, 0xba, 0x14, 0xfb, 0xe0, 0xfa, 0x16, 0xd5, 0x21, 0xfc, 0xb3, 0x7f, 0x19, 0x90, - 0xf1, 0x43, 0x4a, 0xff, 0x06, 0x3c, 0xca, 0x7d, 0xff, 0x32, 0x09, 0x8b, 0x2b, 0xca, 0x2d, 0x0f, - 0x33, 0xde, 0x37, 0x61, 0x73, 0x9f, 0x92, 0x6b, 0x64, 0x5c, 0x46, 0x59, 0xb1, 0xe4, 0x1c, 0x56, - 0xf1, 0x6b, 0xca, 0x1b, 0xc0, 0x86, 0x7e, 0x52, 0x3c, 0x0b, 0xc6, 0x11, 0x51, 0x5d, 0xe9, 0x09, - 0x40, 0x12, 0x8c, 0xf3, 0xbf, 0x14, 0xd4, 0xbb, 0x93, 0x81, 0x88, 0xef, 0xfc, 0x92, 0xde, 0xe8, - 0xef, 0x35, 0xf5, 0xbd, 0x44, 0xbc, 0x9f, 0x80, 0xeb, 0x23, 0x4f, 0x28, 0xe1, 0x68, 0x48, 0xdd, - 0x86, 0xf6, 0x7e, 0xc6, 0x18, 0x12, 0xb1, 0x55, 0xfe, 0xbe, 0x6e, 0x42, 0x42, 0xee, 0xa0, 0x94, - 0xab, 0xde, 0x2a, 0x0c, 0x64, 0xef, 0xf1, 0xcf, 0xb6, 0x76, 0x3e, 0x50, 0xff, 0x60, 0x7e, 0x34, - 0xe3, 0xc6, 0x8b, 0xa6, 0xfc, 0x47, 0xf3, 0x5b, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x24, 0xc1, - 0xb6, 0xba, 0xe4, 0x1c, 0x00, 0x00, + 0x4b, 0xc0, 0xdd, 0x82, 0x95, 0x4f, 0x69, 0x44, 0xa4, 0x4f, 0x96, 0xe4, 0xc7, 0x82, 0x16, 0xdf, + 0x48, 0x34, 0xbc, 0x22, 0x22, 0xa4, 0xca, 0xdd, 0x05, 0x6d, 0x46, 0xa2, 0x69, 0x47, 0xe2, 0x7d, + 0x58, 0x0b, 0x92, 0xa4, 0x1f, 0x90, 0x31, 0x32, 0xb5, 0xe9, 0xb2, 0x94, 0x5b, 0x41, 0x45, 0x3c, + 0xc4, 0x4e, 0x03, 0x9a, 0xb1, 0x21, 0x4a, 0x77, 0x37, 0x7c, 0x03, 0x11, 0x72, 0x68, 0x82, 0xcc, + 0x70, 0xa3, 0xf2, 0x7c, 0x05, 0xd5, 0x51, 0x81, 0x3c, 0x2a, 0xde, 0xaf, 0x1d, 0x58, 0x3b, 0xcb, + 0x2e, 0xe2, 0x68, 0x28, 0x17, 0x08, 0xa7, 0x95, 0xae, 0x71, 0x2c, 0xd7, 0x98, 0x06, 0xd6, 0x6e, + 0x37, 0xb0, 0x6e, 0x1b, 0xb8, 0x09, 0xcd, 0x31, 0x92, 0x10, 0x99, 0x76, 0x98, 0xa6, 0xb4, 0x22, + 0x8d, 0x42, 0x91, 0xdf, 0xd6, 0x60, 0xe5, 0x73, 0x56, 0x61, 0x1b, 0xda, 0xc9, 0x25, 0x25, 0x78, + 0x92, 0x89, 0xa4, 0xd1, 0xba, 0x98, 0x90, 0xfb, 0x0e, 0x34, 0x2e, 0x22, 0x96, 0x5e, 0xca, 0xa8, + 0x75, 0x7c, 0x45, 0x08, 0x14, 0x27, 0x41, 0xa4, 0x42, 0xd5, 0xf2, 0x15, 0xa1, 0x0d, 0x5a, 0x29, + 0xf2, 0xdd, 0xae, 0xa0, 0xd6, 0x4c, 0x05, 0xcd, 0x46, 0x1e, 0xe6, 0x45, 0xde, 0xfb, 0xb7, 0x03, + 0x70, 0xc8, 0x22, 0x24, 0xa1, 0x74, 0x4d, 0xa5, 0x74, 0x9d, 0xd9, 0xd2, 0xdd, 0x84, 0x26, 0xc3, + 0x49, 0xc0, 0xae, 0xf2, 0xd4, 0x56, 0x54, 0x45, 0xa1, 0xfa, 0x8c, 0x42, 0x1f, 0x01, 0x8c, 0xe4, + 0x3e, 0x42, 0x8e, 0x74, 0x55, 0xfb, 0xd9, 0x97, 0x77, 0x66, 0x9a, 0xdc, 0x4e, 0x1e, 0x25, 0xdf, + 0x58, 0x2e, 0xea, 0x26, 0x08, 0x43, 0x9d, 0x9e, 0x0d, 0x55, 0x37, 0x05, 0x30, 0x27, 0x3b, 0x9b, + 0x77, 0x64, 0xe7, 0x72, 0x91, 0x14, 0xff, 0x74, 0xa0, 0xb5, 0x17, 0x07, 0xc3, 0xab, 0x05, 0x4d, + 0xb7, 0x4d, 0xac, 0xcd, 0x98, 0x78, 0x04, 0x9d, 0x0b, 0x21, 0x2e, 0x37, 0x41, 0x7a, 0xa1, 0xfd, + 0xec, 0xab, 0x73, 0xac, 0xb4, 0x8b, 0xc2, 0xb7, 0xf9, 0x6c, 0x73, 0x97, 0x3e, 0xdb, 0xdc, 0xc6, + 0x1d, 0xe6, 0x36, 0x0b, 0x73, 0xff, 0x5e, 0x83, 0x55, 0xd9, 0xc6, 0x7c, 0x9c, 0x66, 0xc8, 0x53, + 0xf7, 0x7b, 0xb0, 0x92, 0xe5, 0xaa, 0x3a, 0x8b, 0xaa, 0x5a, 0xb0, 0xb8, 0x1f, 0xea, 0xa6, 0x29, + 0xf9, 0x6b, 0x92, 0xff, 0xf1, 0x1c, 0xfe, 0xe2, 0xc4, 0xf2, 0xcb, 0xe5, 0xe2, 0x80, 0xb9, 0x0c, + 0x48, 0x18, 0xa3, 0x8f, 0x3c, 0x8b, 0x53, 0xdd, 0x0b, 0x2d, 0x4c, 0x65, 0xda, 0xb4, 0xcf, 0xc7, + 0xfa, 0xf8, 0xd1, 0x94, 0xf0, 0x8e, 0x5a, 0x27, 0x3e, 0x29, 0xd3, 0x4b, 0x40, 0x14, 0x2a, 0xc3, + 0xa9, 0x8c, 0x90, 0x2a, 0xab, 0x9c, 0x2c, 0xf7, 0xd4, 0x5e, 0x53, 0x89, 0x60, 0x61, 0x22, 0xc4, + 0x8a, 0x96, 0x02, 0xd4, 0xb9, 0x63, 0x20, 0xd5, 0x63, 0xc7, 0xfb, 0x47, 0x1d, 0x3a, 0xaa, 0x7c, + 0x72, 0xa7, 0x3e, 0x11, 0x79, 0x4e, 0x27, 0x56, 0x16, 0x19, 0x88, 0xd0, 0x42, 0x50, 0x27, 0x76, + 0xa3, 0xb1, 0x30, 0x91, 0x8a, 0x82, 0x3e, 0xb4, 0x1a, 0x8e, 0x09, 0xe5, 0xbb, 0x1c, 0x99, 0x8d, + 0xc7, 0x40, 0x44, 0x2b, 0x4b, 0xa9, 0x95, 0x1d, 0x05, 0x2d, 0x78, 0x53, 0x5a, 0xec, 0xaf, 0xf2, + 0xc3, 0x40, 0x84, 0x7f, 0x53, 0x9a, 0xef, 0xad, 0x9c, 0x54, 0x02, 0x4a, 0xb2, 0xde, 0x57, 0x1d, + 0x14, 0x05, 0x3d, 0x13, 0xd5, 0xd6, 0x9d, 0x51, 0x05, 0x2b, 0xaa, 0x76, 0x71, 0xb5, 0x67, 0x8a, + 0xeb, 0x3d, 0xe8, 0x28, 0x39, 0x79, 0xd2, 0xaf, 0xaa, 0x83, 0xdc, 0x02, 0xed, 0xdc, 0xe8, 0x54, + 0x73, 0xc3, 0x8e, 0xee, 0xda, 0x2d, 0xd1, 0xed, 0x16, 0xd1, 0xfd, 0x05, 0xf4, 0xce, 0xb2, 0x38, + 0xee, 0x23, 0xe7, 0xc1, 0x18, 0xf7, 0xde, 0x0c, 0x70, 0x7a, 0x1c, 0xf1, 0xd4, 0x47, 0x9e, 0x88, + 0x3c, 0x43, 0xc6, 0xf6, 0x69, 0x88, 0x32, 0xc8, 0x0d, 0x3f, 0x27, 0x85, 0x85, 0xc8, 0x98, 0x50, + 0x40, 0x77, 0x48, 0x45, 0xb9, 0x3b, 0xb0, 0x14, 0x47, 0x5c, 0xe4, 0x7a, 0xfd, 0x69, 0xfb, 0xd9, + 0xd6, 0x9c, 0x52, 0xe9, 0xf3, 0xf1, 0x41, 0x90, 0x06, 0xbe, 0x5c, 0xe7, 0x4d, 0xe0, 0x8b, 0xf3, + 0x77, 0x9f, 0xde, 0x7a, 0x82, 0x89, 0x1e, 0x26, 0x9b, 0x40, 0x44, 0x49, 0x31, 0x7c, 0x98, 0x90, + 0x50, 0x9b, 0x2b, 0x39, 0x52, 0x8f, 0x8e, 0x9f, 0x93, 0xde, 0x3b, 0xe0, 0x1e, 0x61, 0xda, 0x0f, + 0x5e, 0xef, 0x92, 0xb0, 0x1f, 0x91, 0x01, 0x4e, 0x7d, 0x9c, 0x7a, 0xcf, 0xe1, 0xd1, 0x0c, 0xca, + 0x13, 0xa1, 0xc0, 0x24, 0x78, 0x3d, 0xc0, 0xa9, 0x54, 0xa0, 0xe3, 0x6b, 0x4a, 0xe2, 0x72, 0x95, + 0x6e, 0x8f, 0x9a, 0xf2, 0xa6, 0xd0, 0x15, 0x11, 0x1a, 0x20, 0x09, 0xfb, 0x7c, 0x2c, 0x45, 0x6c, + 0x43, 0x5b, 0x79, 0xa0, 0xcf, 0xc7, 0x65, 0xbf, 0x35, 0x20, 0xb1, 0x62, 0x18, 0x47, 0x48, 0x52, + 0xb5, 0x42, 0x5b, 0x63, 0x40, 0x22, 0x19, 0x39, 0x92, 0xb0, 0x38, 0x72, 0xea, 0x7e, 0x41, 0x7b, + 0x7f, 0x6d, 0xc0, 0xb2, 0x76, 0xa8, 0x9c, 0x0e, 0xc5, 0x11, 0x57, 0xf8, 0x4b, 0x51, 0x2a, 0x19, + 0x87, 0xd7, 0xe5, 0x9c, 0xa6, 0x28, 0x73, 0xb2, 0xab, 0xdb, 0x93, 0x5d, 0x45, 0xa7, 0xa5, 0x59, + 0x9d, 0x2a, 0x76, 0x35, 0x66, 0xed, 0xfa, 0x3a, 0xac, 0x73, 0x59, 0x30, 0x67, 0x71, 0x90, 0x8e, + 0x28, 0x9b, 0xe8, 0x13, 0xab, 0xe1, 0xcf, 0xe0, 0xa2, 0xd9, 0x2b, 0xac, 0x28, 0x58, 0x55, 0x91, + 0x15, 0x54, 0x94, 0x87, 0x42, 0xf2, 0xc2, 0x55, 0xa3, 0x82, 0x0d, 0x2a, 0xdd, 0x38, 0x8f, 0x28, + 0x91, 0x93, 0xae, 0xaa, 0x4f, 0x13, 0x12, 0x96, 0x4f, 0xf8, 0xf8, 0x90, 0xd1, 0x89, 0x1e, 0x18, + 0x72, 0x52, 0x5a, 0x4e, 0x49, 0x8a, 0x24, 0x95, 0xbc, 0x6d, 0xc5, 0x6b, 0x40, 0x82, 0x57, 0x93, + 0xb2, 0x38, 0x57, 0xfd, 0x9c, 0x74, 0xd7, 0xa1, 0xce, 0x71, 0xaa, 0x2b, 0x4e, 0xfc, 0xb4, 0x22, + 0xd7, 0xb5, 0x23, 0x57, 0x69, 0x05, 0xeb, 0xf2, 0xab, 0xd9, 0x0a, 0xca, 0x59, 0x7f, 0xc3, 0x9a, + 0xf5, 0x77, 0x61, 0x99, 0x26, 0x22, 0xcf, 0x79, 0xcf, 0x95, 0x35, 0xf6, 0xb5, 0xdb, 0x6b, 0x6c, + 0xe7, 0x54, 0xad, 0x7c, 0x4e, 0x52, 0xf6, 0xc6, 0xcf, 0xf9, 0xdc, 0x63, 0xe8, 0xd2, 0xd1, 0x28, + 0x8e, 0x08, 0x9e, 0x65, 0xfc, 0x52, 0x9e, 0x6c, 0x8f, 0xe4, 0xc9, 0xe6, 0xcd, 0x11, 0x75, 0x6a, + 0xaf, 0xf4, 0xab, 0xac, 0x5b, 0x1f, 0xc2, 0xaa, 0xb9, 0x8d, 0x70, 0xc3, 0x15, 0xbe, 0xd1, 0x39, + 0x28, 0x7e, 0x8a, 0x61, 0xef, 0x3a, 0x88, 0x33, 0x75, 0x0c, 0xac, 0xf8, 0x8a, 0xf8, 0xb0, 0xf6, + 0x1d, 0xc7, 0xfb, 0x8d, 0x03, 0xdd, 0xca, 0x06, 0x62, 0x75, 0x1a, 0xa5, 0x31, 0x6a, 0x09, 0x8a, + 0x70, 0x5d, 0x58, 0x0a, 0x91, 0x0f, 0x75, 0x0a, 0xcb, 0xdf, 0xba, 0x93, 0xd5, 0x8b, 0x71, 0x51, + 0x5c, 0xe8, 0x4e, 0x07, 0x42, 0xd0, 0x80, 0x66, 0x24, 0x2c, 0x2e, 0x74, 0x06, 0x26, 0x52, 0x28, + 0x3a, 0x1d, 0xec, 0x05, 0xe1, 0x18, 0xd5, 0xb5, 0xab, 0x21, 0x75, 0xb2, 0x41, 0x2f, 0x84, 0x95, + 0xf3, 0x28, 0xe1, 0xfb, 0x74, 0x32, 0x11, 0x81, 0x08, 0x31, 0x15, 0xb3, 0xaa, 0x23, 0xe3, 0xad, + 0x29, 0x91, 0x2a, 0x21, 0x8e, 0x82, 0x2c, 0x4e, 0xc5, 0xd2, 0xbc, 0x70, 0x0d, 0x48, 0x5e, 0x38, + 0x38, 0x25, 0x07, 0x8a, 0x5b, 0xe9, 0x69, 0x20, 0xde, 0xdf, 0x6a, 0xb0, 0x2e, 0x07, 0x87, 0x7d, + 0x19, 0xf6, 0x50, 0x32, 0x3d, 0x83, 0x86, 0x2c, 0x43, 0x3d, 0xac, 0xdc, 0x3d, 0x6c, 0xa8, 0xa5, + 0xee, 0xf7, 0xa1, 0x49, 0x13, 0x39, 0x72, 0xaa, 0x09, 0xe5, 0xfd, 0xdb, 0x98, 0xec, 0xbb, 0x9d, + 0xaf, 0xb9, 0xdc, 0x43, 0x00, 0x75, 0xed, 0x3c, 0x2e, 0x5b, 0xf7, 0xa2, 0x32, 0x0c, 0x4e, 0xe1, + 0xdc, 0xa2, 0x0d, 0x17, 0x17, 0xbc, 0xba, 0x6f, 0x83, 0xee, 0x09, 0xac, 0x49, 0xb5, 0x4f, 0xf3, + 0xa9, 0x53, 0xc6, 0x60, 0xf1, 0x1d, 0x2b, 0xdc, 0xde, 0xef, 0x1c, 0xed, 0x46, 0xf1, 0x75, 0x80, + 0xca, 0xf7, 0xa5, 0x4b, 0x9c, 0x7b, 0xb9, 0x64, 0x0b, 0x56, 0x26, 0x99, 0x31, 0x04, 0xd7, 0xfd, + 0x82, 0x2e, 0x43, 0x54, 0x5f, 0x38, 0x44, 0xde, 0xef, 0x1d, 0xe8, 0x7d, 0x4c, 0x23, 0x22, 0x3f, + 0xec, 0x26, 0x49, 0xac, 0x5f, 0x21, 0xee, 0x1d, 0xf3, 0x1f, 0x40, 0x2b, 0x50, 0x62, 0x48, 0xaa, + 0xc3, 0xbe, 0xc0, 0x60, 0x5b, 0xf2, 0x18, 0x33, 0x4a, 0xdd, 0x9c, 0x51, 0xbc, 0x3f, 0x3a, 0xb0, + 0xa6, 0x9c, 0xf2, 0xe3, 0x2c, 0x4a, 0xef, 0xad, 0xdf, 0x1e, 0xac, 0x4c, 0xb3, 0x28, 0xbd, 0x47, + 0x56, 0x16, 0x7c, 0xb3, 0xf9, 0x54, 0x9f, 0x93, 0x4f, 0xde, 0x9f, 0x1c, 0x78, 0x5c, 0x75, 0xeb, + 0xee, 0x70, 0x88, 0xc9, 0xdb, 0x2c, 0x29, 0x6b, 0x46, 0x5b, 0xaa, 0xcc, 0x68, 0x73, 0x55, 0xf6, + 0xf1, 0x53, 0x1c, 0xfe, 0xff, 0xaa, 0xfc, 0xab, 0x1a, 0x7c, 0xe9, 0xa8, 0x28, 0xbc, 0x73, 0x16, + 0x10, 0x3e, 0x42, 0xc6, 0xde, 0xa2, 0xbe, 0xc7, 0xd0, 0x21, 0x78, 0x53, 0xea, 0xa4, 0xcb, 0x71, + 0x51, 0x31, 0x36, 0xf3, 0x62, 0xbd, 0xcb, 0xfb, 0x8f, 0x03, 0xeb, 0x4a, 0xce, 0x8f, 0xa2, 0xe1, + 0xd5, 0x5b, 0x34, 0xfe, 0x04, 0xd6, 0xae, 0xa4, 0x06, 0x82, 0xba, 0x47, 0xdb, 0xae, 0x70, 0x2f, + 0x68, 0xfe, 0x7f, 0x1d, 0xd8, 0x50, 0x82, 0x5e, 0x90, 0xeb, 0xe8, 0x6d, 0x26, 0xeb, 0x19, 0x74, + 0x23, 0xa5, 0xc2, 0x3d, 0x1d, 0x50, 0x65, 0x5f, 0xd0, 0x03, 0x7f, 0x76, 0xa0, 0xab, 0x24, 0x3d, + 0x27, 0x29, 0xb2, 0x7b, 0xdb, 0xff, 0x43, 0x68, 0x23, 0x49, 0x59, 0x40, 0xee, 0xd3, 0x21, 0x4d, + 0xd6, 0x05, 0x9b, 0xe4, 0x15, 0x6c, 0xa8, 0x2b, 0xbc, 0xd1, 0x71, 0xc4, 0x2c, 0x1b, 0x84, 0x6a, + 0x3c, 0x75, 0x24, 0x53, 0x4e, 0xda, 0x8f, 0x33, 0xfa, 0x75, 0xbd, 0x7c, 0x9c, 0x79, 0x02, 0x10, + 0x84, 0xe1, 0x27, 0x94, 0x85, 0x11, 0xc9, 0x8f, 0x0f, 0x03, 0xf1, 0x3e, 0x86, 0x55, 0x31, 0x4d, + 0x9f, 0x1b, 0x97, 0xf1, 0x3b, 0x9f, 0x0b, 0xcc, 0x8b, 0x7c, 0xcd, 0xbe, 0xc8, 0x7b, 0x3f, 0x87, + 0x2f, 0xcc, 0x28, 0x2e, 0xbd, 0xbe, 0xaf, 0xde, 0x18, 0xf2, 0x4d, 0xb4, 0xf3, 0xbf, 0x32, 0xc7, + 0x85, 0xa6, 0x2e, 0xbe, 0xc5, 0xe4, 0xfd, 0xd2, 0x81, 0x77, 0x67, 0xc4, 0xef, 0x26, 0x09, 0xa3, + 0xd7, 0x3a, 0xb9, 0x1f, 0x62, 0x1b, 0xbb, 0xb5, 0xd6, 0xaa, 0xad, 0x75, 0xae, 0x12, 0xd6, 0x71, + 0xf0, 0x39, 0x28, 0xf1, 0x07, 0x07, 0xba, 0x5a, 0x89, 0x30, 0xd4, 0xdb, 0x7e, 0x1b, 0x9a, 0xea, + 0x7d, 0x52, 0x6f, 0xf8, 0xee, 0xdc, 0x0d, 0xf3, 0x77, 0x55, 0x5f, 0x2f, 0x9e, 0xcd, 0xc8, 0xda, + 0xbc, 0x31, 0xf0, 0xbb, 0x45, 0x07, 0x58, 0xf8, 0x05, 0x51, 0x33, 0x78, 0x3f, 0xcd, 0x93, 0xf9, + 0x00, 0x63, 0x7c, 0x48, 0x1f, 0x79, 0x2f, 0x61, 0x4d, 0x3e, 0x96, 0x96, 0x3e, 0x78, 0x10, 0xb1, + 0x9f, 0xc0, 0xba, 0x14, 0xfb, 0xe0, 0xfa, 0x16, 0xd5, 0x21, 0xfc, 0xb3, 0x7f, 0x19, 0x90, 0xf1, + 0x43, 0x4a, 0xff, 0x06, 0x3c, 0xca, 0x7d, 0xff, 0x32, 0x09, 0x8b, 0x2b, 0xca, 0x2d, 0x0f, 0x33, + 0xde, 0x37, 0x61, 0x73, 0x9f, 0x92, 0x6b, 0x64, 0x5c, 0x46, 0x59, 0xb1, 0xe4, 0x1c, 0x56, 0xf1, + 0x6b, 0xca, 0x1b, 0xc0, 0x86, 0x7e, 0x52, 0x3c, 0x0b, 0xc6, 0x11, 0x51, 0x5d, 0xe9, 0x09, 0x40, + 0x12, 0x8c, 0xf3, 0xbf, 0x14, 0xd4, 0xbb, 0x93, 0x81, 0x88, 0xef, 0xfc, 0x92, 0xde, 0xe8, 0xef, + 0x35, 0xf5, 0xbd, 0x44, 0xbc, 0x9f, 0x80, 0xeb, 0x23, 0x4f, 0x28, 0xe1, 0x68, 0x48, 0xdd, 0x86, + 0xf6, 0x7e, 0xc6, 0x18, 0x12, 0xb1, 0x55, 0xfe, 0xbe, 0x6e, 0x42, 0x42, 0xee, 0xa0, 0x94, 0xab, + 0xde, 0x2a, 0x0c, 0x64, 0xef, 0xf1, 0xcf, 0xb6, 0x76, 0x3e, 0x50, 0xff, 0x60, 0x7e, 0x34, 0xe3, + 0xc6, 0x8b, 0xa6, 0xfc, 0x47, 0xf3, 0x5b, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xe1, 0x45, 0x08, + 0x08, 0xe4, 0x1c, 0x00, 0x00, } diff --git a/pkg/proto/sdk_ws/ws.proto b/pkg/proto/sdk_ws/ws.proto index 7856f4d19..ee58d4a41 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -26,7 +26,7 @@ message GroupMemberFullInfo { string groupID = 1 ; string userID = 2 ; int32 roleLevel = 3; - int64 joinTime = 4; + int32 joinTime = 4; string nickname = 5; string faceURL = 6; int32 appMangerLevel = 7; //if >0