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/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 1b59b3612..576b3e2c6 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -92,8 +92,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服务端口 默认即可 @@ -132,8 +132,9 @@ rpcregistername: #rpc注册服务名,默认即可 log: storageLocation: ../logs/ rotationTime: 24 - remainRotationCount: 5 #日志数量 - remainLogLevel: 6 #日志级别 6表示全都打印,测试阶段建议设置为6 + remainRotationCount: 3 #日志数量 + #日志级别 6表示全都打印,测试阶段建议设置为6 + remainLogLevel: 4 elasticSearchSwitch: false elasticSearchAddr: [ 127.0.0.1:9201 ] elasticSearchUser: "" @@ -179,13 +180,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 @@ -200,6 +194,30 @@ iospush: pushSound: "xxx" badgeCount: true +callback: + # callback url 需要自行更换callback url + callbackUrl : "http://127.0.0.1:8080/callback" + # 开启关闭操作前后回调的配置 + callbackbeforeSendSingleMsg: + enable: false # 回调是否启用 + callbackTimeOut: 2 # 回调超时时间 + CallbackFailedContinue: true # 回调超时是否继续执行代码 + callbackAfterSendSingleMsg: + enable: false + callbackTimeOut: 2 + callbackBeforeSendGroupMsg: + enable: false + callbackTimeOut: 2 + CallbackFailedContinue: true + callbackAfterSendGroupMsg: + enable: false + callbackTimeOut: 2 + callbackWordFilter: + enable: false + callbackTimeOut: 2 + CallbackFailedContinue: true + + notification: groupCreated: conversation: @@ -463,19 +481,20 @@ notification: #是否启动demo,如果自身没有账号体系,设置为true demoswitch: true demo: - openImDemoPort: [ 42233 ] #demo对外服务端口,默认即可,需要开放此端口或做nginx转发 + #demo对外服务端口,默认即可,需要开放此端口或做nginx转发 + openImDemoPort: [ 42233 ] 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 #需开放此端口 出口方向 diff --git a/docker-compose.yaml b/docker-compose.yaml index b8d99cc7d..f63b3c125 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 @@ -89,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.0 + image: openim/open_im_server:v2.0.2 container_name: open_im_server volumes: - ./logs:/Open-IM-Server/logs diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index 4f54996ba..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()) @@ -30,18 +30,23 @@ 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 { - log.NewError("", utils.GetSelfFuncName(), "create bucket failed and bucket not exists", err.Error()) + if err != nil { + log.NewError("", utils.GetSelfFuncName(), err.Error()) + } + log.NewError("", utils.GetSelfFuncName(), "create bucket failed and bucket not exists") 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()) - // return + // return`z //} log.NewInfo("", utils.GetSelfFuncName(), "minio create and set policy success") } diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index aa1c9af39..cbdfdb46e 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" "net/http" @@ -24,12 +25,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 @@ -46,11 +47,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/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/internal/demo/register/login.go b/internal/demo/register/login.go index 85f2a6d96..1e434a204 100644 --- a/internal/demo/register/login.go +++ b/internal/demo/register/login.go @@ -54,7 +54,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/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/demo/register/set_password.go b/internal/demo/register/set_password.go index 550f9608c..226f3ded4 100644 --- a/internal/demo/register/set_password.go +++ b/internal/demo/register/set_password.go @@ -59,7 +59,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/msg_gateway/gate/init.go b/internal/msg_gateway/gate/init.go index 03f82f3ad..b827f9928 100644 --- a/internal/msg_gateway/gate/init.go +++ b/internal/msg_gateway/gate/init.go @@ -3,15 +3,19 @@ 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" ) var ( - rwLock *sync.RWMutex - validate *validator.Validate - ws WServer - rpcSvr RPCServer + rwLock *sync.RWMutex + validate *validator.Validate + ws WServer + rpcSvr RPCServer + sendMsgCount uint64 + userCount uint64 ) func Init(rpcPort, wsPort int) { @@ -19,6 +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), 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_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index d1756093c..df3b1a356 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) { + 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..477d43420 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -183,7 +183,8 @@ 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)) } @@ -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) } diff --git a/internal/msg_transfer/logic/history_msg_handler.go b/internal/msg_transfer/logic/history_msg_handler.go index b78695c11..1281b1732 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 ", 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 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: diff --git a/internal/push/logic/init.go b/internal/push/logic/init.go index b8941cc6f..6f6f061b8 100644 --- a/internal/push/logic/init.go +++ b/internal/push/logic/init.go @@ -11,6 +11,8 @@ import ( "Open_IM/pkg/common/constant" "Open_IM/pkg/common/kafka" "Open_IM/pkg/common/log" + "Open_IM/pkg/statistics" + "fmt" ) var ( @@ -18,6 +20,7 @@ var ( pushCh PushConsumerHandler pushTerminal []int32 producer *kafka.Producer + count uint64 ) func Init(rpcPort int) { @@ -28,6 +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", 300), 300) } func Run() { diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go index 41c943c4b..a5a6397f2 100644 --- a/internal/push/logic/push_to_client.go +++ b/internal/push/logic/push_to_client.go @@ -35,10 +35,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}) @@ -51,6 +51,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 { 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 5b899c9d4..362136a04 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -78,7 +78,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 @@ -86,7 +91,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) @@ -271,7 +276,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()) diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go new file mode 100644 index 000000000..bb8ccd700 --- /dev/null +++ b/internal/rpc/msg/callback.go @@ -0,0 +1,159 @@ +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 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) + 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 { + return false, err + } else { + return true, err + } + } else { + if resp.ActionCode == constant.ActionForbidden && resp.ErrCode == constant.CallbackHandleSuccess { + return false, nil + } + } + return true, err +} + +func callbackAfterSendSingleMsg(msg *pbChat.SendMsgReq) error { + if !config.Config.Callback.CallbackAfterSendSingleMsg.Enable { + return nil + } + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) + 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) + 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 + } + return nil +} + +func callbackBeforeSendGroupMsg(msg *pbChat.SendMsgReq) (canSend bool, err error) { + if !config.Config.Callback.CallbackBeforeSendGroupMsg.Enable { + return true, nil + } + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) + commonCallbackReq := copyCallbackCommonReqStruct(msg) + commonCallbackReq.CallbackCommand = constant.CallbackBeforeSendGroupMsgCommand + req := cbApi.CallbackAfterSendGroupMsgReq{ + CommonCallbackReq: commonCallbackReq, + 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, err + } else { + return true, err + } + } else { + if resp.ActionCode == constant.ActionForbidden && resp.ErrCode == constant.CallbackHandleSuccess { + return false, nil + } + } + return true, err +} + +func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) error { + if !config.Config.Callback.CallbackAfterSendGroupMsg.Enable { + return nil + } + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) + commonCallbackReq := copyCallbackCommonReqStruct(msg) + commonCallbackReq.CallbackCommand = constant.CallbackAfterSendGroupMsgCommand + req := cbApi.CallbackAfterSendGroupMsgReq{ + CommonCallbackReq: commonCallbackReq, + GroupID: msg.MsgData.GroupID, + } + resp := &cbApi.CallbackAfterSendGroupMsgResp{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.CallbackAfterSendGroupMsg.CallbackTimeOut); err != nil { + return err + } + 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 + } + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) + commonCallbackReq := copyCallbackCommonReqStruct(msg) + commonCallbackReq.CallbackCommand = constant.CallbackWordFilterCommand + req := cbApi.CallbackWordFilterReq{ + CommonCallbackReq: commonCallbackReq, + } + resp := &cbApi.CallbackWordFilterResp{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.CallbackWordFilter.CallbackTimeOut); err != nil { + 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 { + return false, nil + } + if resp.ErrCode == constant.CallbackHandleSuccess { + msg.MsgData.Content = []byte(resp.Content) + } + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), string(msg.MsgData.Content)) + } + return true, err +} diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 114746da2..af8f40b4f 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,27 @@ 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(), "callbackWordFilter failed", err.Error(), pb.MsgData) + } + if !canSend { + 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(), "callbackBeforeSendSingleMsg failed", err.Error()) + } + if !canSend { + 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 { msgToMQ.MsgData = pb.MsgData @@ -163,8 +162,21 @@ 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(), "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(), "callbackBeforeSendGroupMsg failed", err.Error()) + } + if !canSend { + 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) req := &pbGroup.GetGroupAllMemberReq{ @@ -228,7 +240,10 @@ 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(), "callbackAfterSendGroupMsg failed", err.Error()) } return returnMsg(&replay, pb, 0, "", msgToMQ.MsgData.ServerMsgID, msgToMQ.MsgData.SendTime) default: @@ -245,7 +260,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) { 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/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..e2bf510f4 100644 --- a/pkg/call_back_struct/common.go +++ b/pkg/call_back_struct/common.go @@ -1 +1,26 @@ package call_back_struct + +type CommonCallbackReq struct { + SendID string `json:"sendID"` + CallbackCommand string `json:"callbackCommand"` + 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"` + ContentType int32 `json:"contentType"` + Status int32 `json:"status"` + CreateTime int64 `json:"createTime"` + Content string `json:"content"` +} + +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..31c215ea2 100644 --- a/pkg/call_back_struct/message.go +++ b/pkg/call_back_struct/message.go @@ -1 +1,47 @@ package call_back_struct + + +type CallbackBeforeSendSingleMsgReq struct { + CommonCallbackReq + RecvID string `json:"recvID"` +} + +type CallbackBeforeSendSingleMsgResp struct { + CommonCallbackResp +} + +type CallbackAfterSendSingleMsgReq struct { + CommonCallbackReq + RecvID string `json:"recvID"` +} + +type CallbackAfterSendSingleMsgResp struct { + CommonCallbackResp +} + +type CallbackBeforeSendGroupMsgReq struct { + CommonCallbackReq + GroupID string `json:"groupID"` +} + +type CallbackBeforeSendGroupMsgResp struct { + CommonCallbackResp +} + +type CallbackAfterSendGroupMsgReq struct { + CommonCallbackReq + GroupID string `json:"groupID"` +} + +type CallbackAfterSendGroupMsgResp struct { + CommonCallbackResp +} + +type CallbackWordFilterReq struct { + CommonCallbackReq +} + +type CallbackWordFilterResp struct { + CommonCallbackResp + Content string `json:"content"` +} diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 12a3e2261..2ea520b38 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -18,6 +18,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"` @@ -166,11 +172,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"` } @@ -178,6 +179,15 @@ type config struct { PushSound string `yaml:"pushSound"` BadgeCount bool `yaml:"badgeCount"` } + + Callback struct { + CallbackUrl string `yaml:"callbackUrl"` + CallbackBeforeSendSingleMsg callBackConfig `yaml:"callbackbeforeSendSingleMsg"` + CallbackAfterSendSingleMsg callBackConfig `yaml:"callbackAfterSendSingleMsg"` + 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..199a1917a 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -136,6 +136,19 @@ const ( VerificationCodeForReset = 2 VerificationCodeForRegisterSuffix = "_forRegister" VerificationCodeForResetSuffix = "_forReset" + + //callbackCommand + CallbackBeforeSendSingleMsgCommand = "callbackBeforeSendSingleMsgCommand" + CallbackAfterSendSingleMsgCommand = "callbackAfterSendSingleMsgCommand" + CallbackBeforeSendGroupMsgCommand = "callbackBeforeSendGroupMsgCommand" + CallbackAfterSendGroupMsgCommand = "callbackAfterSendGroupMsgCommand" + CallbackWordFilterCommand = "callbackWordFilterCommand" + //callback actionCode + ActionAllow = 0 + ActionForbidden = 1 + //callback callbackHandleCode + CallbackHandleSuccess = 0 + CallbackHandleFailed = 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/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 } 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/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) { // 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..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 { @@ -78,7 +66,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 } 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 } diff --git a/pkg/common/http/http_client.go b/pkg/common/http/http_client.go index 4d480770a..e227da91e 100644 --- a/pkg/common/http/http_client.go +++ b/pkg/common/http/http_client.go @@ -53,3 +53,14 @@ 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 + } + return nil +} diff --git a/pkg/common/log/file_line_hk.go b/pkg/common/log/file_line_hk.go index 9ffa7806e..bc908ee03 100644 --- a/pkg/common/log/file_line_hk.go +++ b/pkg/common/log/file_line_hk.go @@ -28,6 +28,17 @@ func (f *fileHook) Fire(entry *logrus.Entry) error { 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) +// } +// entry.Data["FilePath"] = s +// return nil +//} + func findCaller(skip int) string { file := "" line := 0 diff --git a/pkg/grpc-etcdv3/getcdv3/register.go b/pkg/grpc-etcdv3/getcdv3/register.go index 4fd2cd5a7..898a4b8c0 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" @@ -37,11 +38,12 @@ 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}) - 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 +68,26 @@ 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: + case pv, ok := <-kresp: if ok == true { - // fmt.Println(" kresp ok ", v) + log.Debug("", "KeepAlive kresp ok", pv) } else { - fmt.Println(" kresp failed ", v) + 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/grpc-etcdv3/getcdv3/resolver.go b/pkg/grpc-etcdv3/getcdv3/resolver.go index aa41f86c4..1e57f8cdd 100644 --- a/pkg/grpc-etcdv3/getcdv3/resolver.go +++ b/pkg/grpc-etcdv3/getcdv3/resolver.go @@ -102,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 { - 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 +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)}) - 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 +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 { - fmt.Println("eeeeeeeeeeeee", err.Error()) + //log.Error("clientv3.New failed", err.Error()) return nil } @@ -200,7 +200,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 +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) - fmt.Println(err) + //log.Info("", "Get ", err) return c, err } diff --git a/pkg/proto/sdk_ws/ws.pb.go b/pkg/proto/sdk_ws/ws.pb.go index f5d259dac..accf94ecf 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 -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_c2d3d5fccaf1040a, []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 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"` + 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_c2d3d5fccaf1040a, []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() int32 { + 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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a, []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_c2d3d5fccaf1040a) } + +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, + 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, 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 5d200cce6..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 @@ -40,6 +40,7 @@ message PublicUserInfo{ string nickname = 2; string faceURL = 3; int32 gender = 4; + string ex = 5; } message UserInfo{ @@ -339,7 +340,6 @@ message ConversationUpdateTips{ } - ///cms message RequestPagination { int32 pageNumber = 1; diff --git a/pkg/statistics/statistics.go b/pkg/statistics/statistics.go new file mode 100644 index 000000000..bea4479bd --- /dev/null +++ b/pkg/statistics/statistics.go @@ -0,0 +1,32 @@ +package statistics + +import ( + "Open_IM/pkg/common/log" + "time" +) + +type Statistics struct { + 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 { + sum = *s.Count + select { + case <-t.C: + } + log.NewWarn("", " system stat ", s.ModuleName, s.PrintArgs, *s.Count-sum, "total:", *s.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 +} 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 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