Merge remote-tracking branch 'origin/superGroup' into superGroup

This commit is contained in:
skiffer-git 2022-06-17 10:43:44 +08:00
commit f1b5f56294
15 changed files with 538 additions and 318 deletions

View File

@ -38,7 +38,8 @@ func main() {
// user routing group, which handles user registration and login services // user routing group, which handles user registration and login services
userRouterGroup := r.Group("/user") userRouterGroup := r.Group("/user")
{ {
userRouterGroup.POST("/update_user_info", user.UpdateUserInfo) //1 userRouterGroup.POST("/update_user_info", user.UpdateUserInfo) //1
userRouterGroup.POST("/set_global_msg_recv_opt", user.SetGlobalRecvMessageOpt)
userRouterGroup.POST("/get_users_info", user.GetUsersInfo) //1 userRouterGroup.POST("/get_users_info", user.GetUsersInfo) //1
userRouterGroup.POST("/get_self_user_info", user.GetSelfUserInfo) //1 userRouterGroup.POST("/get_self_user_info", user.GetSelfUserInfo) //1
userRouterGroup.POST("/get_users_online_status", user.GetUsersOnlineStatus) //1 userRouterGroup.POST("/get_users_online_status", user.GetUsersOnlineStatus) //1

View File

@ -55,8 +55,8 @@ kafka:
addr: [ 127.0.0.1:9092 ] #kafka配置默认即可 addr: [ 127.0.0.1:9092 ] #kafka配置默认即可
topic: "ms2ps_chat" topic: "ms2ps_chat"
consumergroupid: consumergroupid:
msgToRedis: redis
msgToMongo: mongo msgToMongo: mongo
msgToMongoOffline: mongo_offline
msgToMySql: mysql msgToMySql: mysql
msgToPush: push msgToPush: push

View File

@ -75,7 +75,7 @@ services:
TZ: Asia/Shanghai TZ: Asia/Shanghai
KAFKA_BROKER_ID: 0 KAFKA_BROKER_ID: 0
KAFKA_ZOOKEEPER_CONNECT: 127.0.0.1:2181 KAFKA_ZOOKEEPER_CONNECT: 127.0.0.1:2181
KAFKA_CREATE_TOPICS: "ws2ms_chat:8:1,ms2ps_chat:2:1,msg_to_mongo:2:1" KAFKA_CREATE_TOPICS: "ws2ms_chat:8:1,ms2ps_chat:8:1,msg_to_mongo:8:1"
KAFKA_ADVERTISED_LISTENERS: INSIDE://127.0.0.1:9092,OUTSIDE://103.116.45.174:9093 KAFKA_ADVERTISED_LISTENERS: INSIDE://127.0.0.1:9092,OUTSIDE://103.116.45.174:9093
KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9093 KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9093
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT" KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT"

View File

@ -15,7 +15,6 @@ import (
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
"context" "context"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/golang/protobuf/ptypes/wrappers"
"net/http" "net/http"
"strings" "strings"
) )
@ -216,9 +215,6 @@ func UpdateUserInfo(c *gin.Context) {
return return
} }
log.NewInfo(params.OperationID, "UpdateUserInfo args ", req.String()) log.NewInfo(params.OperationID, "UpdateUserInfo args ", req.String())
if params.GlobalRecvMsgOpt != nil {
req.GlobalRecvMsgOpt = &wrappers.Int32Value{Value: *params.GlobalRecvMsgOpt}
}
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID)
if etcdConn == nil { if etcdConn == nil {
errMsg := req.OperationID + "getcdv3.GetConn == nil" errMsg := req.OperationID + "getcdv3.GetConn == nil"
@ -237,6 +233,44 @@ func UpdateUserInfo(c *gin.Context) {
log.NewInfo(req.OperationID, "UpdateUserInfo api return ", resp) log.NewInfo(req.OperationID, "UpdateUserInfo api return ", resp)
c.JSON(http.StatusOK, resp) c.JSON(http.StatusOK, resp)
} }
func SetGlobalRecvMessageOpt(c *gin.Context) {
params := api.SetGlobalRecvMessageOptReq{}
if err := c.BindJSON(&params); err != nil {
log.NewError("0", "BindJSON failed ", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
return
}
req := &rpc.SetGlobalRecvMessageOptReq{}
utils.CopyStructFields(req, &params)
req.OperationID = params.OperationID
var ok bool
var errInfo string
ok, req.UserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
if !ok {
errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
return
}
log.NewInfo(params.OperationID, "SetGlobalRecvMessageOpt args ", req.String())
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID)
if etcdConn == nil {
errMsg := req.OperationID + "getcdv3.GetConn == nil"
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
return
}
client := rpc.NewUserClient(etcdConn)
RpcResp, err := client.SetGlobalRecvMessageOpt(context.Background(), req)
if err != nil {
log.NewError(req.OperationID, "SetGlobalRecvMessageOpt failed ", err.Error(), req.String())
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"})
return
}
resp := api.UpdateUserInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
log.NewInfo(req.OperationID, "SetGlobalRecvMessageOpt api return ", resp)
c.JSON(http.StatusOK, resp)
}
func GetSelfUserInfo(c *gin.Context) { func GetSelfUserInfo(c *gin.Context) {
params := api.GetSelfUserInfoReq{} params := api.GetSelfUserInfoReq{}

View File

@ -4,7 +4,6 @@ import (
"Open_IM/pkg/common/config" "Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant" "Open_IM/pkg/common/constant"
"Open_IM/pkg/common/kafka" "Open_IM/pkg/common/kafka"
"Open_IM/pkg/common/log"
"Open_IM/pkg/statistics" "Open_IM/pkg/statistics"
"fmt" "fmt"
"sync" "sync"
@ -20,7 +19,8 @@ const ChannelNum = 100
var ( var (
persistentCH PersistentConsumerHandler persistentCH PersistentConsumerHandler
historyCH OnlineHistoryConsumerHandler historyCH OnlineHistoryRedisConsumerHandler
historyMongoCH OnlineHistoryMongoConsumerHandler
producer *kafka.Producer producer *kafka.Producer
producerToMongo *kafka.Producer producerToMongo *kafka.Producer
cmdCh chan Cmd2Value cmdCh chan Cmd2Value
@ -38,8 +38,8 @@ func Init() {
w = new(sync.Mutex) w = new(sync.Mutex)
persistentCH.Init() persistentCH.Init()
historyCH.Init(cmdCh) historyCH.Init(cmdCh)
historyMongoCH.Init()
onlineTopicStatus = OnlineTopicVacancy onlineTopicStatus = OnlineTopicVacancy
log.Debug("come msg transfer ts", config.Config.Kafka.ConsumerGroupID.MsgToMongoOffline, config.Config.Kafka.Ws2mschatOffline.Topic)
//offlineHistoryCH.Init(cmdCh) //offlineHistoryCH.Init(cmdCh)
statistics.NewStatistics(&singleMsgSuccessCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second singleMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) statistics.NewStatistics(&singleMsgSuccessCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second singleMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval)
statistics.NewStatistics(&groupMsgCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second groupMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) statistics.NewStatistics(&groupMsgCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second groupMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval)
@ -54,6 +54,7 @@ func Run() {
fmt.Println("not start mysql consumer") fmt.Println("not start mysql consumer")
} }
go historyCH.historyConsumerGroup.RegisterHandleAndConsumer(&historyCH) go historyCH.historyConsumerGroup.RegisterHandleAndConsumer(&historyCH)
go historyMongoCH.historyConsumerGroup.RegisterHandleAndConsumer(&historyMongoCH)
//go offlineHistoryCH.historyConsumerGroup.RegisterHandleAndConsumer(&offlineHistoryCH) //go offlineHistoryCH.historyConsumerGroup.RegisterHandleAndConsumer(&offlineHistoryCH)
} }
func SetOnlineTopicStatus(status int) { func SetOnlineTopicStatus(status int) {

View File

@ -9,10 +9,8 @@ import (
"Open_IM/pkg/grpc-etcdv3/getcdv3" "Open_IM/pkg/grpc-etcdv3/getcdv3"
pbMsg "Open_IM/pkg/proto/chat" pbMsg "Open_IM/pkg/proto/chat"
pbPush "Open_IM/pkg/proto/push" pbPush "Open_IM/pkg/proto/push"
server_api_params "Open_IM/pkg/proto/sdk_ws"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
"context" "context"
"errors"
"github.com/Shopify/sarama" "github.com/Shopify/sarama"
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
"hash/crc32" "hash/crc32"
@ -36,28 +34,21 @@ type Cmd2Value struct {
Cmd int Cmd int
Value interface{} Value interface{}
} }
type OnlineHistoryConsumerHandler struct { type OnlineHistoryRedisConsumerHandler struct {
msgHandle map[string]fcb msgHandle map[string]fcb
historyConsumerGroup *kfk.MConsumerGroup historyConsumerGroup *kfk.MConsumerGroup
cmdCh chan Cmd2Value
chArrays [ChannelNum]chan Cmd2Value chArrays [ChannelNum]chan Cmd2Value
chMongoArrays [ChannelNum]chan Cmd2Value
msgDistributionCh chan Cmd2Value msgDistributionCh chan Cmd2Value
} }
func (och *OnlineHistoryConsumerHandler) Init(cmdCh chan Cmd2Value) { func (och *OnlineHistoryRedisConsumerHandler) Init(cmdCh chan Cmd2Value) {
och.msgHandle = make(map[string]fcb) och.msgHandle = make(map[string]fcb)
och.msgDistributionCh = make(chan Cmd2Value) //no buffer channel och.msgDistributionCh = make(chan Cmd2Value) //no buffer channel
go och.MessagesDistributionHandle() go och.MessagesDistributionHandle()
och.cmdCh = cmdCh
for i := 0; i < ChannelNum; i++ { for i := 0; i < ChannelNum; i++ {
och.chArrays[i] = make(chan Cmd2Value, 50) och.chArrays[i] = make(chan Cmd2Value, 50)
go och.Run(i) go och.Run(i)
} }
for i := 0; i < ChannelNum; i++ {
och.chMongoArrays[i] = make(chan Cmd2Value, 10000)
go och.MongoMessageRun(i)
}
if config.Config.ReliableStorage { if config.Config.ReliableStorage {
och.msgHandle[config.Config.Kafka.Ws2mschat.Topic] = och.handleChatWs2Mongo och.msgHandle[config.Config.Kafka.Ws2mschat.Topic] = och.handleChatWs2Mongo
} else { } else {
@ -66,34 +57,10 @@ func (och *OnlineHistoryConsumerHandler) Init(cmdCh chan Cmd2Value) {
} }
och.historyConsumerGroup = kfk.NewMConsumerGroup(&kfk.MConsumerGroupConfig{KafkaVersion: sarama.V2_0_0_0, och.historyConsumerGroup = kfk.NewMConsumerGroup(&kfk.MConsumerGroupConfig{KafkaVersion: sarama.V2_0_0_0,
OffsetsInitial: sarama.OffsetNewest, IsReturnErr: false}, []string{config.Config.Kafka.Ws2mschat.Topic}, OffsetsInitial: sarama.OffsetNewest, IsReturnErr: false}, []string{config.Config.Kafka.Ws2mschat.Topic},
config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.ConsumerGroupID.MsgToMongo) config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.ConsumerGroupID.MsgToRedis)
} }
func (och *OnlineHistoryConsumerHandler) TriggerCmd(status int) { func (och *OnlineHistoryRedisConsumerHandler) Run(channelID int) {
operationID := utils.OperationIDGenerator()
err := sendCmd(och.cmdCh, Cmd2Value{Cmd: status, Value: ""}, 1)
if err != nil {
log.Error(operationID, "TriggerCmd failed ", err.Error(), status)
return
}
log.Debug(operationID, "TriggerCmd success", status)
}
func sendCmd(ch chan Cmd2Value, value Cmd2Value, timeout int64) error {
var flag = 0
select {
case ch <- value:
flag = 1
case <-time.After(time.Second * time.Duration(timeout)):
flag = 2
}
if flag == 1 {
return nil
} else {
return errors.New("send cmd timeout")
}
}
func (och *OnlineHistoryConsumerHandler) Run(channelID int) {
for { for {
select { select {
case cmd := <-och.chArrays[channelID]: case cmd := <-och.chArrays[channelID]:
@ -154,7 +121,7 @@ func (och *OnlineHistoryConsumerHandler) Run(channelID int) {
} }
} }
} }
func (och *OnlineHistoryConsumerHandler) SendMessageToMongoCH(aggregationID string, triggerID string, messages []*pbMsg.MsgDataToMQ, lastSeq uint64) { func (och *OnlineHistoryRedisConsumerHandler) SendMessageToMongoCH(aggregationID string, triggerID string, messages []*pbMsg.MsgDataToMQ, lastSeq uint64) {
pid, offset, err := producerToMongo.SendMessage(&pbMsg.MsgDataToMongoByMQ{LastSeq: lastSeq, AggregationID: aggregationID, MessageList: messages, TriggerID: triggerID}, aggregationID, triggerID) pid, offset, err := producerToMongo.SendMessage(&pbMsg.MsgDataToMongoByMQ{LastSeq: lastSeq, AggregationID: aggregationID, MessageList: messages, TriggerID: triggerID}, aggregationID, triggerID)
if err != nil { if err != nil {
log.Error(triggerID, "kafka send failed", "send data", len(messages), "pid", pid, "offset", offset, "err", err.Error(), "key", aggregationID) log.Error(triggerID, "kafka send failed", "send data", len(messages), "pid", pid, "offset", offset, "err", err.Error(), "key", aggregationID)
@ -167,47 +134,48 @@ func (och *OnlineHistoryConsumerHandler) SendMessageToMongoCH(aggregationID stri
////go func(cID uint32, userID string, messages []*pbMsg.MsgDataToMQ) { ////go func(cID uint32, userID string, messages []*pbMsg.MsgDataToMQ) {
//och.chMongoArrays[channelID] <- Cmd2Value{Cmd: MongoMessages, Value: MsgChannelValue{aggregationID: aggregationID, msgList: messages, triggerID: triggerID, lastSeq: lastSeq}} //och.chMongoArrays[channelID] <- Cmd2Value{Cmd: MongoMessages, Value: MsgChannelValue{aggregationID: aggregationID, msgList: messages, triggerID: triggerID, lastSeq: lastSeq}}
} }
func (och *OnlineHistoryConsumerHandler) MongoMessageRun(channelID int) {
for {
select {
case cmd := <-och.chMongoArrays[channelID]:
switch cmd.Cmd {
case MongoMessages:
msgChannelValue := cmd.Value.(MsgChannelValue)
msgList := msgChannelValue.msgList
triggerID := msgChannelValue.triggerID
aggregationID := msgChannelValue.aggregationID
lastSeq := msgChannelValue.lastSeq
err := db.DB.BatchInsertChat2DB(aggregationID, msgList, triggerID, lastSeq)
if err != nil {
log.NewError(triggerID, "single data insert to mongo err", err.Error(), msgList)
}
for _, v := range msgList {
if v.MsgData.ContentType == constant.DeleteMessageNotification {
tips := server_api_params.TipsComm{}
DeleteMessageTips := server_api_params.DeleteMessageTips{}
err := proto.Unmarshal(v.MsgData.Content, &tips)
if err != nil {
log.NewError(triggerID, "tips unmarshal err:", err.Error(), v.String())
continue
}
err = proto.Unmarshal(tips.Detail, &DeleteMessageTips)
if err != nil {
log.NewError(triggerID, "deleteMessageTips unmarshal err:", err.Error(), v.String())
continue
}
if unexistSeqList, err := db.DB.DelMsgBySeqList(DeleteMessageTips.UserID, DeleteMessageTips.SeqList, v.OperationID); err != nil {
log.NewError(v.OperationID, utils.GetSelfFuncName(), "DelMsgBySeqList args: ", DeleteMessageTips.UserID, DeleteMessageTips.SeqList, v.OperationID, err.Error(), unexistSeqList)
}
} //func (och *OnlineHistoryRedisConsumerHandler) MongoMessageRun(channelID int) {
} // for {
} // select {
} // case cmd := <-och.chMongoArrays[channelID]:
} // switch cmd.Cmd {
} // case MongoMessages:
// msgChannelValue := cmd.Value.(MsgChannelValue)
// msgList := msgChannelValue.msgList
// triggerID := msgChannelValue.triggerID
// aggregationID := msgChannelValue.aggregationID
// lastSeq := msgChannelValue.lastSeq
// err := db.DB.BatchInsertChat2DB(aggregationID, msgList, triggerID, lastSeq)
// if err != nil {
// log.NewError(triggerID, "single data insert to mongo err", err.Error(), msgList)
// }
// for _, v := range msgList {
// if v.MsgData.ContentType == constant.DeleteMessageNotification {
// tips := server_api_params.TipsComm{}
// DeleteMessageTips := server_api_params.DeleteMessageTips{}
// err := proto.Unmarshal(v.MsgData.Content, &tips)
// if err != nil {
// log.NewError(triggerID, "tips unmarshal err:", err.Error(), v.String())
// continue
// }
// err = proto.Unmarshal(tips.Detail, &DeleteMessageTips)
// if err != nil {
// log.NewError(triggerID, "deleteMessageTips unmarshal err:", err.Error(), v.String())
// continue
// }
// if unexistSeqList, err := db.DB.DelMsgBySeqList(DeleteMessageTips.UserID, DeleteMessageTips.SeqList, v.OperationID); err != nil {
// log.NewError(v.OperationID, utils.GetSelfFuncName(), "DelMsgBySeqList args: ", DeleteMessageTips.UserID, DeleteMessageTips.SeqList, v.OperationID, err.Error(), unexistSeqList)
// }
//
// }
// }
// }
// }
// }
//}
func (och *OnlineHistoryConsumerHandler) MessagesDistributionHandle() { func (och *OnlineHistoryRedisConsumerHandler) MessagesDistributionHandle() {
for { for {
aggregationMsgs := make(map[string][]*pbMsg.MsgDataToMQ, ChannelNum) aggregationMsgs := make(map[string][]*pbMsg.MsgDataToMQ, ChannelNum)
select { select {
@ -253,7 +221,7 @@ func (och *OnlineHistoryConsumerHandler) MessagesDistributionHandle() {
} }
} }
func (mc *OnlineHistoryConsumerHandler) handleChatWs2Mongo(cMsg *sarama.ConsumerMessage, msgKey string, sess sarama.ConsumerGroupSession) { func (mc *OnlineHistoryRedisConsumerHandler) handleChatWs2Mongo(cMsg *sarama.ConsumerMessage, msgKey string, sess sarama.ConsumerGroupSession) {
msg := cMsg.Value msg := cMsg.Value
now := time.Now() now := time.Now()
msgFromMQ := pbMsg.MsgDataToMQ{} msgFromMQ := pbMsg.MsgDataToMQ{}
@ -325,7 +293,7 @@ func (mc *OnlineHistoryConsumerHandler) handleChatWs2Mongo(cMsg *sarama.Consumer
log.NewDebug(msgFromMQ.OperationID, "msg_transfer handle topic data to database success...", msgFromMQ.String()) log.NewDebug(msgFromMQ.OperationID, "msg_transfer handle topic data to database success...", msgFromMQ.String())
} }
func (och *OnlineHistoryConsumerHandler) handleChatWs2MongoLowReliability(cMsg *sarama.ConsumerMessage, msgKey string, sess sarama.ConsumerGroupSession) { func (och *OnlineHistoryRedisConsumerHandler) handleChatWs2MongoLowReliability(cMsg *sarama.ConsumerMessage, msgKey string, sess sarama.ConsumerGroupSession) {
msg := cMsg.Value msg := cMsg.Value
msgFromMQ := pbMsg.MsgDataToMQ{} msgFromMQ := pbMsg.MsgDataToMQ{}
err := proto.Unmarshal(msg, &msgFromMQ) err := proto.Unmarshal(msg, &msgFromMQ)
@ -365,10 +333,10 @@ func (och *OnlineHistoryConsumerHandler) handleChatWs2MongoLowReliability(cMsg *
} }
} }
func (OnlineHistoryConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil } func (OnlineHistoryRedisConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil }
func (OnlineHistoryConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil } func (OnlineHistoryRedisConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil }
//func (och *OnlineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, //func (och *OnlineHistoryRedisConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession,
// claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group // claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group
// log.NewDebug("", "online new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition()) // log.NewDebug("", "online new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition())
// for msg := range claim.Messages() { // for msg := range claim.Messages() {
@ -385,7 +353,7 @@ func (OnlineHistoryConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error
// return nil // return nil
//} //}
func (och *OnlineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, func (och *OnlineHistoryRedisConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession,
claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group
for { for {
@ -480,7 +448,7 @@ func (och *OnlineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupS
return nil return nil
} }
//func (och *OnlineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, //func (och *OnlineHistoryRedisConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession,
// claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group // claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group
// //
// for { // for {

View File

@ -0,0 +1,79 @@
package logic
import (
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant"
"Open_IM/pkg/common/db"
kfk "Open_IM/pkg/common/kafka"
"Open_IM/pkg/common/log"
pbMsg "Open_IM/pkg/proto/chat"
server_api_params "Open_IM/pkg/proto/sdk_ws"
"Open_IM/pkg/utils"
"github.com/Shopify/sarama"
"github.com/golang/protobuf/proto"
)
type OnlineHistoryMongoConsumerHandler struct {
msgHandle map[string]fcb
historyConsumerGroup *kfk.MConsumerGroup
}
func (och *OnlineHistoryMongoConsumerHandler) Init() {
och.msgHandle = make(map[string]fcb)
och.msgHandle[config.Config.Kafka.MsgToMongo.Topic] = och.handleChatWs2Mongo
och.historyConsumerGroup = kfk.NewMConsumerGroup(&kfk.MConsumerGroupConfig{KafkaVersion: sarama.V2_0_0_0,
OffsetsInitial: sarama.OffsetNewest, IsReturnErr: false}, []string{config.Config.Kafka.MsgToMongo.Topic},
config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.ConsumerGroupID.MsgToMongo)
}
func (mc *OnlineHistoryMongoConsumerHandler) handleChatWs2Mongo(cMsg *sarama.ConsumerMessage, msgKey string, _ sarama.ConsumerGroupSession) {
msg := cMsg.Value
msgFromMQ := pbMsg.MsgDataToMongoByMQ{}
err := proto.Unmarshal(msg, &msgFromMQ)
if err != nil {
log.Error("msg_transfer Unmarshal msg err", "", "msg", string(msg), "err", err.Error())
return
}
err = db.DB.BatchInsertChat2DB(msgFromMQ.AggregationID, msgFromMQ.MessageList, msgFromMQ.TriggerID, msgFromMQ.LastSeq)
if err != nil {
log.NewError(msgFromMQ.TriggerID, "single data insert to mongo err", err.Error(), msgFromMQ.MessageList)
}
for _, v := range msgFromMQ.MessageList {
if v.MsgData.ContentType == constant.DeleteMessageNotification {
tips := server_api_params.TipsComm{}
DeleteMessageTips := server_api_params.DeleteMessageTips{}
err := proto.Unmarshal(v.MsgData.Content, &tips)
if err != nil {
log.NewError(msgFromMQ.TriggerID, "tips unmarshal err:", err.Error(), v.String())
continue
}
err = proto.Unmarshal(tips.Detail, &DeleteMessageTips)
if err != nil {
log.NewError(msgFromMQ.TriggerID, "deleteMessageTips unmarshal err:", err.Error(), v.String())
continue
}
if unexistSeqList, err := db.DB.DelMsgBySeqList(DeleteMessageTips.UserID, DeleteMessageTips.SeqList, v.OperationID); err != nil {
log.NewError(v.OperationID, utils.GetSelfFuncName(), "DelMsgBySeqList args: ", DeleteMessageTips.UserID, DeleteMessageTips.SeqList, v.OperationID, err.Error(), unexistSeqList)
}
}
}
}
func (OnlineHistoryMongoConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil }
func (OnlineHistoryMongoConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil }
func (och *OnlineHistoryMongoConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession,
claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group
log.NewDebug("", "online new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition())
for msg := range claim.Messages() {
log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value), "key", string(msg.Key))
if len(msg.Value) != 0 {
och.msgHandle[msg.Topic](msg, string(msg.Key), sess)
} else {
log.Error("", "mongo msg get from kafka but is nil", msg.Key)
}
sess.MarkMessage(msg, "")
}
return nil
}

View File

@ -383,26 +383,11 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserI
if req.UserInfo.Birth != 0 { if req.UserInfo.Birth != 0 {
user.Birth = utils.UnixSecondToTime(int64(req.UserInfo.Birth)) user.Birth = utils.UnixSecondToTime(int64(req.UserInfo.Birth))
} }
m := make(map[string]interface{}, 1)
if req.GlobalRecvMsgOpt != nil { err := imdb.UpdateUserInfo(user)
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), req.GlobalRecvMsgOpt, "set GlobalRecvMsgOpt") if err != nil {
m["global_recv_msg_opt"] = req.GlobalRecvMsgOpt.Value log.NewError(req.OperationID, "UpdateUserInfo failed ", err.Error(), user)
err := db.DB.SetUserGlobalMsgRecvOpt(user.UserID, req.GlobalRecvMsgOpt.Value) return &pbUser.UpdateUserInfoResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetUserGlobalMsgRecvOpt failed ", err.Error(), user)
return &pbUser.UpdateUserInfoResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
}
err = imdb.UpdateUserInfoByMap(user, m)
if err != nil {
log.NewError(req.OperationID, "UpdateUserInfo failed ", err.Error(), user)
return &pbUser.UpdateUserInfoResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
}
} else {
err := imdb.UpdateUserInfo(user)
if err != nil {
log.NewError(req.OperationID, "UpdateUserInfo failed ", err.Error(), user)
return &pbUser.UpdateUserInfoResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
}
} }
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName, req.OperationID) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName, req.OperationID)
if etcdConn == nil { if etcdConn == nil {
@ -448,7 +433,28 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserI
//} //}
return &pbUser.UpdateUserInfoResp{CommonResp: &pbUser.CommonResp{}}, nil return &pbUser.UpdateUserInfoResp{CommonResp: &pbUser.CommonResp{}}, nil
} }
func (s *userServer) SetGlobalRecvMessageOpt(ctx context.Context, req *pbUser.SetGlobalRecvMessageOptReq) (*pbUser.SetGlobalRecvMessageOptResp, error) {
log.NewInfo(req.OperationID, "SetGlobalRecvMessageOpt args ", req.String())
var user db.User
user.UserID = req.UserID
m := make(map[string]interface{}, 1)
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), req.GlobalRecvMsgOpt, "set GlobalRecvMsgOpt")
m["global_recv_msg_opt"] = req.GlobalRecvMsgOpt
err := db.DB.SetUserGlobalMsgRecvOpt(user.UserID, req.GlobalRecvMsgOpt)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetGlobalRecvMessageOpt failed ", err.Error(), user)
return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
}
err = imdb.UpdateUserInfoByMap(user, m)
if err != nil {
log.NewError(req.OperationID, "SetGlobalRecvMessageOpt failed ", err.Error(), user)
return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
}
chat.UserInfoUpdatedNotification(req.OperationID, req.UserID, req.UserID)
return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{}}, nil
}
func (s *userServer) SyncJoinedGroupMemberFaceURL(userID string, faceURL string, operationID string, opUserID string) { func (s *userServer) SyncJoinedGroupMemberFaceURL(userID string, faceURL string, operationID string, opUserID string) {
joinedGroupIDList, err := imdb.GetJoinedGroupIDListByUserID(userID) joinedGroupIDList, err := imdb.GetJoinedGroupIDListByUserID(userID)
if err != nil { if err != nil {

View File

@ -6,15 +6,14 @@ import (
) )
type ApiUserInfo struct { type ApiUserInfo struct {
UserID string `json:"userID" binding:"required,min=1,max=64"` UserID string `json:"userID" binding:"required,min=1,max=64"`
Nickname string `json:"nickname" binding:"omitempty,min=1,max=64"` Nickname string `json:"nickname" binding:"omitempty,min=1,max=64"`
FaceURL string `json:"faceURL" binding:"omitempty,max=1024"` FaceURL string `json:"faceURL" binding:"omitempty,max=1024"`
Gender int32 `json:"gender" binding:"omitempty,oneof=0 1 2"` Gender int32 `json:"gender" binding:"omitempty,oneof=0 1 2"`
PhoneNumber string `json:"phoneNumber" binding:"omitempty,max=32"` PhoneNumber string `json:"phoneNumber" binding:"omitempty,max=32"`
Birth uint32 `json:"birth" binding:"omitempty"` Birth uint32 `json:"birth" binding:"omitempty"`
Email string `json:"email" binding:"omitempty,max=64"` Email string `json:"email" binding:"omitempty,max=64"`
GlobalRecvMsgOpt *int32 `json:"globalRecvMsgOpt" binding:"omitempty,oneof=0 1 2"` Ex string `json:"ex" binding:"omitempty,max=1024"`
Ex string `json:"ex" binding:"omitempty,max=1024"`
} }
//type Conversation struct { //type Conversation struct {

View File

@ -18,7 +18,13 @@ type UpdateSelfUserInfoReq struct {
ApiUserInfo ApiUserInfo
OperationID string `json:"operationID" binding:"required"` OperationID string `json:"operationID" binding:"required"`
} }
type SetGlobalRecvMessageOptReq struct {
OperationID string `json:"operationID" binding:"required"`
GlobalRecvMsgOpt *int32 `json:"globalRecvMsgOpt" binding:"omitempty,oneof=0 1 2"`
}
type SetGlobalRecvMessageOptResp struct {
CommResp
}
type UpdateUserInfoResp struct { type UpdateUserInfoResp struct {
CommResp CommResp
} }

View File

@ -213,10 +213,10 @@ type config struct {
Topic string `yaml:"topic"` Topic string `yaml:"topic"`
} }
ConsumerGroupID struct { ConsumerGroupID struct {
MsgToMongo string `yaml:"msgToMongo"` MsgToRedis string `yaml:"msgToRedis"`
MsgToMongoOffline string `yaml:"msgToMongoOffline"` MsgToMongo string `yaml:"msgToMongo"`
MsgToMySql string `yaml:"msgToMySql"` MsgToMySql string `yaml:"msgToMySql"`
MsgToPush string `yaml:"msgToPush"` MsgToPush string `yaml:"msgToPush"`
} }
} }
Secret string `yaml:"secret"` Secret string `yaml:"secret"`

View File

@ -302,6 +302,6 @@ func GetRandomDepartmentID() (string, error) {
return "", err return "", err
} }
department := &db.Department{} department := &db.Department{}
err = dbConn.Model(department).Where("related_group_id != ? AND parent_id != ?", "", "").Take(department).Error err = dbConn.Model(department).Order("RAND()").Where("related_group_id != ?", "").First(department).Error
return department.DepartmentID, err return department.DepartmentID, err
} }

View File

@ -7,7 +7,6 @@ import proto "github.com/golang/protobuf/proto"
import fmt "fmt" import fmt "fmt"
import math "math" import math "math"
import sdk_ws "Open_IM/pkg/proto/sdk_ws" import sdk_ws "Open_IM/pkg/proto/sdk_ws"
import wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
import ( import (
context "golang.org/x/net/context" context "golang.org/x/net/context"
@ -37,7 +36,7 @@ func (m *CommonResp) Reset() { *m = CommonResp{} }
func (m *CommonResp) String() string { return proto.CompactTextString(m) } func (m *CommonResp) String() string { return proto.CompactTextString(m) }
func (*CommonResp) ProtoMessage() {} func (*CommonResp) ProtoMessage() {}
func (*CommonResp) Descriptor() ([]byte, []int) { func (*CommonResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{0} return fileDescriptor_user_f1112695e0d68005, []int{0}
} }
func (m *CommonResp) XXX_Unmarshal(b []byte) error { func (m *CommonResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommonResp.Unmarshal(m, b) return xxx_messageInfo_CommonResp.Unmarshal(m, b)
@ -84,7 +83,7 @@ func (m *DeleteUsersReq) Reset() { *m = DeleteUsersReq{} }
func (m *DeleteUsersReq) String() string { return proto.CompactTextString(m) } func (m *DeleteUsersReq) String() string { return proto.CompactTextString(m) }
func (*DeleteUsersReq) ProtoMessage() {} func (*DeleteUsersReq) ProtoMessage() {}
func (*DeleteUsersReq) Descriptor() ([]byte, []int) { func (*DeleteUsersReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{1} return fileDescriptor_user_f1112695e0d68005, []int{1}
} }
func (m *DeleteUsersReq) XXX_Unmarshal(b []byte) error { func (m *DeleteUsersReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteUsersReq.Unmarshal(m, b) return xxx_messageInfo_DeleteUsersReq.Unmarshal(m, b)
@ -137,7 +136,7 @@ func (m *DeleteUsersResp) Reset() { *m = DeleteUsersResp{} }
func (m *DeleteUsersResp) String() string { return proto.CompactTextString(m) } func (m *DeleteUsersResp) String() string { return proto.CompactTextString(m) }
func (*DeleteUsersResp) ProtoMessage() {} func (*DeleteUsersResp) ProtoMessage() {}
func (*DeleteUsersResp) Descriptor() ([]byte, []int) { func (*DeleteUsersResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{2} return fileDescriptor_user_f1112695e0d68005, []int{2}
} }
func (m *DeleteUsersResp) XXX_Unmarshal(b []byte) error { func (m *DeleteUsersResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteUsersResp.Unmarshal(m, b) return xxx_messageInfo_DeleteUsersResp.Unmarshal(m, b)
@ -183,7 +182,7 @@ func (m *GetAllUserIDReq) Reset() { *m = GetAllUserIDReq{} }
func (m *GetAllUserIDReq) String() string { return proto.CompactTextString(m) } func (m *GetAllUserIDReq) String() string { return proto.CompactTextString(m) }
func (*GetAllUserIDReq) ProtoMessage() {} func (*GetAllUserIDReq) ProtoMessage() {}
func (*GetAllUserIDReq) Descriptor() ([]byte, []int) { func (*GetAllUserIDReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{3} return fileDescriptor_user_f1112695e0d68005, []int{3}
} }
func (m *GetAllUserIDReq) XXX_Unmarshal(b []byte) error { func (m *GetAllUserIDReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllUserIDReq.Unmarshal(m, b) return xxx_messageInfo_GetAllUserIDReq.Unmarshal(m, b)
@ -229,7 +228,7 @@ func (m *GetAllUserIDResp) Reset() { *m = GetAllUserIDResp{} }
func (m *GetAllUserIDResp) String() string { return proto.CompactTextString(m) } func (m *GetAllUserIDResp) String() string { return proto.CompactTextString(m) }
func (*GetAllUserIDResp) ProtoMessage() {} func (*GetAllUserIDResp) ProtoMessage() {}
func (*GetAllUserIDResp) Descriptor() ([]byte, []int) { func (*GetAllUserIDResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{4} return fileDescriptor_user_f1112695e0d68005, []int{4}
} }
func (m *GetAllUserIDResp) XXX_Unmarshal(b []byte) error { func (m *GetAllUserIDResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllUserIDResp.Unmarshal(m, b) return xxx_messageInfo_GetAllUserIDResp.Unmarshal(m, b)
@ -276,7 +275,7 @@ func (m *AccountCheckReq) Reset() { *m = AccountCheckReq{} }
func (m *AccountCheckReq) String() string { return proto.CompactTextString(m) } func (m *AccountCheckReq) String() string { return proto.CompactTextString(m) }
func (*AccountCheckReq) ProtoMessage() {} func (*AccountCheckReq) ProtoMessage() {}
func (*AccountCheckReq) Descriptor() ([]byte, []int) { func (*AccountCheckReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{5} return fileDescriptor_user_f1112695e0d68005, []int{5}
} }
func (m *AccountCheckReq) XXX_Unmarshal(b []byte) error { func (m *AccountCheckReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AccountCheckReq.Unmarshal(m, b) return xxx_messageInfo_AccountCheckReq.Unmarshal(m, b)
@ -329,7 +328,7 @@ func (m *AccountCheckResp) Reset() { *m = AccountCheckResp{} }
func (m *AccountCheckResp) String() string { return proto.CompactTextString(m) } func (m *AccountCheckResp) String() string { return proto.CompactTextString(m) }
func (*AccountCheckResp) ProtoMessage() {} func (*AccountCheckResp) ProtoMessage() {}
func (*AccountCheckResp) Descriptor() ([]byte, []int) { func (*AccountCheckResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{6} return fileDescriptor_user_f1112695e0d68005, []int{6}
} }
func (m *AccountCheckResp) XXX_Unmarshal(b []byte) error { func (m *AccountCheckResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AccountCheckResp.Unmarshal(m, b) return xxx_messageInfo_AccountCheckResp.Unmarshal(m, b)
@ -375,7 +374,7 @@ func (m *AccountCheckResp_SingleUserStatus) Reset() { *m = AccountCheckR
func (m *AccountCheckResp_SingleUserStatus) String() string { return proto.CompactTextString(m) } func (m *AccountCheckResp_SingleUserStatus) String() string { return proto.CompactTextString(m) }
func (*AccountCheckResp_SingleUserStatus) ProtoMessage() {} func (*AccountCheckResp_SingleUserStatus) ProtoMessage() {}
func (*AccountCheckResp_SingleUserStatus) Descriptor() ([]byte, []int) { func (*AccountCheckResp_SingleUserStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{6, 0} return fileDescriptor_user_f1112695e0d68005, []int{6, 0}
} }
func (m *AccountCheckResp_SingleUserStatus) XXX_Unmarshal(b []byte) error { func (m *AccountCheckResp_SingleUserStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AccountCheckResp_SingleUserStatus.Unmarshal(m, b) return xxx_messageInfo_AccountCheckResp_SingleUserStatus.Unmarshal(m, b)
@ -422,7 +421,7 @@ func (m *GetUserInfoReq) Reset() { *m = GetUserInfoReq{} }
func (m *GetUserInfoReq) String() string { return proto.CompactTextString(m) } func (m *GetUserInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetUserInfoReq) ProtoMessage() {} func (*GetUserInfoReq) ProtoMessage() {}
func (*GetUserInfoReq) Descriptor() ([]byte, []int) { func (*GetUserInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{7} return fileDescriptor_user_f1112695e0d68005, []int{7}
} }
func (m *GetUserInfoReq) XXX_Unmarshal(b []byte) error { func (m *GetUserInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserInfoReq.Unmarshal(m, b) return xxx_messageInfo_GetUserInfoReq.Unmarshal(m, b)
@ -475,7 +474,7 @@ func (m *GetUserInfoResp) Reset() { *m = GetUserInfoResp{} }
func (m *GetUserInfoResp) String() string { return proto.CompactTextString(m) } func (m *GetUserInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetUserInfoResp) ProtoMessage() {} func (*GetUserInfoResp) ProtoMessage() {}
func (*GetUserInfoResp) Descriptor() ([]byte, []int) { func (*GetUserInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{8} return fileDescriptor_user_f1112695e0d68005, []int{8}
} }
func (m *GetUserInfoResp) XXX_Unmarshal(b []byte) error { func (m *GetUserInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserInfoResp.Unmarshal(m, b) return xxx_messageInfo_GetUserInfoResp.Unmarshal(m, b)
@ -510,20 +509,19 @@ func (m *GetUserInfoResp) GetUserInfoList() []*sdk_ws.UserInfo {
} }
type UpdateUserInfoReq struct { type UpdateUserInfoReq struct {
UserInfo *sdk_ws.UserInfo `protobuf:"bytes,1,opt,name=UserInfo" json:"UserInfo,omitempty"` UserInfo *sdk_ws.UserInfo `protobuf:"bytes,1,opt,name=UserInfo" json:"UserInfo,omitempty"`
OpUserID string `protobuf:"bytes,2,opt,name=OpUserID" json:"OpUserID,omitempty"` OpUserID string `protobuf:"bytes,2,opt,name=OpUserID" json:"OpUserID,omitempty"`
OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"`
GlobalRecvMsgOpt *wrapperspb.Int32Value `protobuf:"bytes,4,opt,name=globalRecvMsgOpt" json:"globalRecvMsgOpt,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"`
XXX_sizecache int32 `json:"-"`
} }
func (m *UpdateUserInfoReq) Reset() { *m = UpdateUserInfoReq{} } func (m *UpdateUserInfoReq) Reset() { *m = UpdateUserInfoReq{} }
func (m *UpdateUserInfoReq) String() string { return proto.CompactTextString(m) } func (m *UpdateUserInfoReq) String() string { return proto.CompactTextString(m) }
func (*UpdateUserInfoReq) ProtoMessage() {} func (*UpdateUserInfoReq) ProtoMessage() {}
func (*UpdateUserInfoReq) Descriptor() ([]byte, []int) { func (*UpdateUserInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{9} return fileDescriptor_user_f1112695e0d68005, []int{9}
} }
func (m *UpdateUserInfoReq) XXX_Unmarshal(b []byte) error { func (m *UpdateUserInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateUserInfoReq.Unmarshal(m, b) return xxx_messageInfo_UpdateUserInfoReq.Unmarshal(m, b)
@ -564,13 +562,6 @@ func (m *UpdateUserInfoReq) GetOperationID() string {
return "" return ""
} }
func (m *UpdateUserInfoReq) GetGlobalRecvMsgOpt() *wrapperspb.Int32Value {
if m != nil {
return m.GlobalRecvMsgOpt
}
return nil
}
type UpdateUserInfoResp struct { type UpdateUserInfoResp struct {
CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -582,7 +573,7 @@ func (m *UpdateUserInfoResp) Reset() { *m = UpdateUserInfoResp{} }
func (m *UpdateUserInfoResp) String() string { return proto.CompactTextString(m) } func (m *UpdateUserInfoResp) String() string { return proto.CompactTextString(m) }
func (*UpdateUserInfoResp) ProtoMessage() {} func (*UpdateUserInfoResp) ProtoMessage() {}
func (*UpdateUserInfoResp) Descriptor() ([]byte, []int) { func (*UpdateUserInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{10} return fileDescriptor_user_f1112695e0d68005, []int{10}
} }
func (m *UpdateUserInfoResp) XXX_Unmarshal(b []byte) error { func (m *UpdateUserInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateUserInfoResp.Unmarshal(m, b) return xxx_messageInfo_UpdateUserInfoResp.Unmarshal(m, b)
@ -609,6 +600,98 @@ func (m *UpdateUserInfoResp) GetCommonResp() *CommonResp {
return nil return nil
} }
type SetGlobalRecvMessageOptReq struct {
UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"`
OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"`
GlobalRecvMsgOpt int32 `protobuf:"varint,3,opt,name=globalRecvMsgOpt" json:"globalRecvMsgOpt,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SetGlobalRecvMessageOptReq) Reset() { *m = SetGlobalRecvMessageOptReq{} }
func (m *SetGlobalRecvMessageOptReq) String() string { return proto.CompactTextString(m) }
func (*SetGlobalRecvMessageOptReq) ProtoMessage() {}
func (*SetGlobalRecvMessageOptReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_f1112695e0d68005, []int{11}
}
func (m *SetGlobalRecvMessageOptReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGlobalRecvMessageOptReq.Unmarshal(m, b)
}
func (m *SetGlobalRecvMessageOptReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SetGlobalRecvMessageOptReq.Marshal(b, m, deterministic)
}
func (dst *SetGlobalRecvMessageOptReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_SetGlobalRecvMessageOptReq.Merge(dst, src)
}
func (m *SetGlobalRecvMessageOptReq) XXX_Size() int {
return xxx_messageInfo_SetGlobalRecvMessageOptReq.Size(m)
}
func (m *SetGlobalRecvMessageOptReq) XXX_DiscardUnknown() {
xxx_messageInfo_SetGlobalRecvMessageOptReq.DiscardUnknown(m)
}
var xxx_messageInfo_SetGlobalRecvMessageOptReq proto.InternalMessageInfo
func (m *SetGlobalRecvMessageOptReq) GetUserID() string {
if m != nil {
return m.UserID
}
return ""
}
func (m *SetGlobalRecvMessageOptReq) GetOperationID() string {
if m != nil {
return m.OperationID
}
return ""
}
func (m *SetGlobalRecvMessageOptReq) GetGlobalRecvMsgOpt() int32 {
if m != nil {
return m.GlobalRecvMsgOpt
}
return 0
}
type SetGlobalRecvMessageOptResp struct {
CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SetGlobalRecvMessageOptResp) Reset() { *m = SetGlobalRecvMessageOptResp{} }
func (m *SetGlobalRecvMessageOptResp) String() string { return proto.CompactTextString(m) }
func (*SetGlobalRecvMessageOptResp) ProtoMessage() {}
func (*SetGlobalRecvMessageOptResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_f1112695e0d68005, []int{12}
}
func (m *SetGlobalRecvMessageOptResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGlobalRecvMessageOptResp.Unmarshal(m, b)
}
func (m *SetGlobalRecvMessageOptResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SetGlobalRecvMessageOptResp.Marshal(b, m, deterministic)
}
func (dst *SetGlobalRecvMessageOptResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_SetGlobalRecvMessageOptResp.Merge(dst, src)
}
func (m *SetGlobalRecvMessageOptResp) XXX_Size() int {
return xxx_messageInfo_SetGlobalRecvMessageOptResp.Size(m)
}
func (m *SetGlobalRecvMessageOptResp) XXX_DiscardUnknown() {
xxx_messageInfo_SetGlobalRecvMessageOptResp.DiscardUnknown(m)
}
var xxx_messageInfo_SetGlobalRecvMessageOptResp proto.InternalMessageInfo
func (m *SetGlobalRecvMessageOptResp) GetCommonResp() *CommonResp {
if m != nil {
return m.CommonResp
}
return nil
}
type Conversation struct { type Conversation struct {
OwnerUserID string `protobuf:"bytes,1,opt,name=OwnerUserID" json:"OwnerUserID,omitempty"` OwnerUserID string `protobuf:"bytes,1,opt,name=OwnerUserID" json:"OwnerUserID,omitempty"`
ConversationID string `protobuf:"bytes,2,opt,name=ConversationID" json:"ConversationID,omitempty"` ConversationID string `protobuf:"bytes,2,opt,name=ConversationID" json:"ConversationID,omitempty"`
@ -633,7 +716,7 @@ func (m *Conversation) Reset() { *m = Conversation{} }
func (m *Conversation) String() string { return proto.CompactTextString(m) } func (m *Conversation) String() string { return proto.CompactTextString(m) }
func (*Conversation) ProtoMessage() {} func (*Conversation) ProtoMessage() {}
func (*Conversation) Descriptor() ([]byte, []int) { func (*Conversation) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{11} return fileDescriptor_user_f1112695e0d68005, []int{13}
} }
func (m *Conversation) XXX_Unmarshal(b []byte) error { func (m *Conversation) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Conversation.Unmarshal(m, b) return xxx_messageInfo_Conversation.Unmarshal(m, b)
@ -764,7 +847,7 @@ func (m *SetConversationReq) Reset() { *m = SetConversationReq{} }
func (m *SetConversationReq) String() string { return proto.CompactTextString(m) } func (m *SetConversationReq) String() string { return proto.CompactTextString(m) }
func (*SetConversationReq) ProtoMessage() {} func (*SetConversationReq) ProtoMessage() {}
func (*SetConversationReq) Descriptor() ([]byte, []int) { func (*SetConversationReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{12} return fileDescriptor_user_f1112695e0d68005, []int{14}
} }
func (m *SetConversationReq) XXX_Unmarshal(b []byte) error { func (m *SetConversationReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetConversationReq.Unmarshal(m, b) return xxx_messageInfo_SetConversationReq.Unmarshal(m, b)
@ -816,7 +899,7 @@ func (m *SetConversationResp) Reset() { *m = SetConversationResp{} }
func (m *SetConversationResp) String() string { return proto.CompactTextString(m) } func (m *SetConversationResp) String() string { return proto.CompactTextString(m) }
func (*SetConversationResp) ProtoMessage() {} func (*SetConversationResp) ProtoMessage() {}
func (*SetConversationResp) Descriptor() ([]byte, []int) { func (*SetConversationResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{13} return fileDescriptor_user_f1112695e0d68005, []int{15}
} }
func (m *SetConversationResp) XXX_Unmarshal(b []byte) error { func (m *SetConversationResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetConversationResp.Unmarshal(m, b) return xxx_messageInfo_SetConversationResp.Unmarshal(m, b)
@ -858,7 +941,7 @@ func (m *SetRecvMsgOptReq) Reset() { *m = SetRecvMsgOptReq{} }
func (m *SetRecvMsgOptReq) String() string { return proto.CompactTextString(m) } func (m *SetRecvMsgOptReq) String() string { return proto.CompactTextString(m) }
func (*SetRecvMsgOptReq) ProtoMessage() {} func (*SetRecvMsgOptReq) ProtoMessage() {}
func (*SetRecvMsgOptReq) Descriptor() ([]byte, []int) { func (*SetRecvMsgOptReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{14} return fileDescriptor_user_f1112695e0d68005, []int{16}
} }
func (m *SetRecvMsgOptReq) XXX_Unmarshal(b []byte) error { func (m *SetRecvMsgOptReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetRecvMsgOptReq.Unmarshal(m, b) return xxx_messageInfo_SetRecvMsgOptReq.Unmarshal(m, b)
@ -924,7 +1007,7 @@ func (m *SetRecvMsgOptResp) Reset() { *m = SetRecvMsgOptResp{} }
func (m *SetRecvMsgOptResp) String() string { return proto.CompactTextString(m) } func (m *SetRecvMsgOptResp) String() string { return proto.CompactTextString(m) }
func (*SetRecvMsgOptResp) ProtoMessage() {} func (*SetRecvMsgOptResp) ProtoMessage() {}
func (*SetRecvMsgOptResp) Descriptor() ([]byte, []int) { func (*SetRecvMsgOptResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{15} return fileDescriptor_user_f1112695e0d68005, []int{17}
} }
func (m *SetRecvMsgOptResp) XXX_Unmarshal(b []byte) error { func (m *SetRecvMsgOptResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetRecvMsgOptResp.Unmarshal(m, b) return xxx_messageInfo_SetRecvMsgOptResp.Unmarshal(m, b)
@ -964,7 +1047,7 @@ func (m *GetConversationReq) Reset() { *m = GetConversationReq{} }
func (m *GetConversationReq) String() string { return proto.CompactTextString(m) } func (m *GetConversationReq) String() string { return proto.CompactTextString(m) }
func (*GetConversationReq) ProtoMessage() {} func (*GetConversationReq) ProtoMessage() {}
func (*GetConversationReq) Descriptor() ([]byte, []int) { func (*GetConversationReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{16} return fileDescriptor_user_f1112695e0d68005, []int{18}
} }
func (m *GetConversationReq) XXX_Unmarshal(b []byte) error { func (m *GetConversationReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetConversationReq.Unmarshal(m, b) return xxx_messageInfo_GetConversationReq.Unmarshal(m, b)
@ -1017,7 +1100,7 @@ func (m *GetConversationResp) Reset() { *m = GetConversationResp{} }
func (m *GetConversationResp) String() string { return proto.CompactTextString(m) } func (m *GetConversationResp) String() string { return proto.CompactTextString(m) }
func (*GetConversationResp) ProtoMessage() {} func (*GetConversationResp) ProtoMessage() {}
func (*GetConversationResp) Descriptor() ([]byte, []int) { func (*GetConversationResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{17} return fileDescriptor_user_f1112695e0d68005, []int{19}
} }
func (m *GetConversationResp) XXX_Unmarshal(b []byte) error { func (m *GetConversationResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetConversationResp.Unmarshal(m, b) return xxx_messageInfo_GetConversationResp.Unmarshal(m, b)
@ -1064,7 +1147,7 @@ func (m *GetConversationsReq) Reset() { *m = GetConversationsReq{} }
func (m *GetConversationsReq) String() string { return proto.CompactTextString(m) } func (m *GetConversationsReq) String() string { return proto.CompactTextString(m) }
func (*GetConversationsReq) ProtoMessage() {} func (*GetConversationsReq) ProtoMessage() {}
func (*GetConversationsReq) Descriptor() ([]byte, []int) { func (*GetConversationsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{18} return fileDescriptor_user_f1112695e0d68005, []int{20}
} }
func (m *GetConversationsReq) XXX_Unmarshal(b []byte) error { func (m *GetConversationsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetConversationsReq.Unmarshal(m, b) return xxx_messageInfo_GetConversationsReq.Unmarshal(m, b)
@ -1117,7 +1200,7 @@ func (m *GetConversationsResp) Reset() { *m = GetConversationsResp{} }
func (m *GetConversationsResp) String() string { return proto.CompactTextString(m) } func (m *GetConversationsResp) String() string { return proto.CompactTextString(m) }
func (*GetConversationsResp) ProtoMessage() {} func (*GetConversationsResp) ProtoMessage() {}
func (*GetConversationsResp) Descriptor() ([]byte, []int) { func (*GetConversationsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{19} return fileDescriptor_user_f1112695e0d68005, []int{21}
} }
func (m *GetConversationsResp) XXX_Unmarshal(b []byte) error { func (m *GetConversationsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetConversationsResp.Unmarshal(m, b) return xxx_messageInfo_GetConversationsResp.Unmarshal(m, b)
@ -1163,7 +1246,7 @@ func (m *GetAllConversationsReq) Reset() { *m = GetAllConversationsReq{}
func (m *GetAllConversationsReq) String() string { return proto.CompactTextString(m) } func (m *GetAllConversationsReq) String() string { return proto.CompactTextString(m) }
func (*GetAllConversationsReq) ProtoMessage() {} func (*GetAllConversationsReq) ProtoMessage() {}
func (*GetAllConversationsReq) Descriptor() ([]byte, []int) { func (*GetAllConversationsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{20} return fileDescriptor_user_f1112695e0d68005, []int{22}
} }
func (m *GetAllConversationsReq) XXX_Unmarshal(b []byte) error { func (m *GetAllConversationsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllConversationsReq.Unmarshal(m, b) return xxx_messageInfo_GetAllConversationsReq.Unmarshal(m, b)
@ -1209,7 +1292,7 @@ func (m *GetAllConversationsResp) Reset() { *m = GetAllConversationsResp
func (m *GetAllConversationsResp) String() string { return proto.CompactTextString(m) } func (m *GetAllConversationsResp) String() string { return proto.CompactTextString(m) }
func (*GetAllConversationsResp) ProtoMessage() {} func (*GetAllConversationsResp) ProtoMessage() {}
func (*GetAllConversationsResp) Descriptor() ([]byte, []int) { func (*GetAllConversationsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{21} return fileDescriptor_user_f1112695e0d68005, []int{23}
} }
func (m *GetAllConversationsResp) XXX_Unmarshal(b []byte) error { func (m *GetAllConversationsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllConversationsResp.Unmarshal(m, b) return xxx_messageInfo_GetAllConversationsResp.Unmarshal(m, b)
@ -1257,7 +1340,7 @@ func (m *BatchSetConversationsReq) Reset() { *m = BatchSetConversationsR
func (m *BatchSetConversationsReq) String() string { return proto.CompactTextString(m) } func (m *BatchSetConversationsReq) String() string { return proto.CompactTextString(m) }
func (*BatchSetConversationsReq) ProtoMessage() {} func (*BatchSetConversationsReq) ProtoMessage() {}
func (*BatchSetConversationsReq) Descriptor() ([]byte, []int) { func (*BatchSetConversationsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{22} return fileDescriptor_user_f1112695e0d68005, []int{24}
} }
func (m *BatchSetConversationsReq) XXX_Unmarshal(b []byte) error { func (m *BatchSetConversationsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BatchSetConversationsReq.Unmarshal(m, b) return xxx_messageInfo_BatchSetConversationsReq.Unmarshal(m, b)
@ -1318,7 +1401,7 @@ func (m *BatchSetConversationsResp) Reset() { *m = BatchSetConversations
func (m *BatchSetConversationsResp) String() string { return proto.CompactTextString(m) } func (m *BatchSetConversationsResp) String() string { return proto.CompactTextString(m) }
func (*BatchSetConversationsResp) ProtoMessage() {} func (*BatchSetConversationsResp) ProtoMessage() {}
func (*BatchSetConversationsResp) Descriptor() ([]byte, []int) { func (*BatchSetConversationsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{23} return fileDescriptor_user_f1112695e0d68005, []int{25}
} }
func (m *BatchSetConversationsResp) XXX_Unmarshal(b []byte) error { func (m *BatchSetConversationsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BatchSetConversationsResp.Unmarshal(m, b) return xxx_messageInfo_BatchSetConversationsResp.Unmarshal(m, b)
@ -1371,7 +1454,7 @@ func (m *ResignUserReq) Reset() { *m = ResignUserReq{} }
func (m *ResignUserReq) String() string { return proto.CompactTextString(m) } func (m *ResignUserReq) String() string { return proto.CompactTextString(m) }
func (*ResignUserReq) ProtoMessage() {} func (*ResignUserReq) ProtoMessage() {}
func (*ResignUserReq) Descriptor() ([]byte, []int) { func (*ResignUserReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{24} return fileDescriptor_user_f1112695e0d68005, []int{26}
} }
func (m *ResignUserReq) XXX_Unmarshal(b []byte) error { func (m *ResignUserReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ResignUserReq.Unmarshal(m, b) return xxx_messageInfo_ResignUserReq.Unmarshal(m, b)
@ -1416,7 +1499,7 @@ func (m *ResignUserResp) Reset() { *m = ResignUserResp{} }
func (m *ResignUserResp) String() string { return proto.CompactTextString(m) } func (m *ResignUserResp) String() string { return proto.CompactTextString(m) }
func (*ResignUserResp) ProtoMessage() {} func (*ResignUserResp) ProtoMessage() {}
func (*ResignUserResp) Descriptor() ([]byte, []int) { func (*ResignUserResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{25} return fileDescriptor_user_f1112695e0d68005, []int{27}
} }
func (m *ResignUserResp) XXX_Unmarshal(b []byte) error { func (m *ResignUserResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ResignUserResp.Unmarshal(m, b) return xxx_messageInfo_ResignUserResp.Unmarshal(m, b)
@ -1455,7 +1538,7 @@ func (m *GetUserByIdReq) Reset() { *m = GetUserByIdReq{} }
func (m *GetUserByIdReq) String() string { return proto.CompactTextString(m) } func (m *GetUserByIdReq) String() string { return proto.CompactTextString(m) }
func (*GetUserByIdReq) ProtoMessage() {} func (*GetUserByIdReq) ProtoMessage() {}
func (*GetUserByIdReq) Descriptor() ([]byte, []int) { func (*GetUserByIdReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{26} return fileDescriptor_user_f1112695e0d68005, []int{28}
} }
func (m *GetUserByIdReq) XXX_Unmarshal(b []byte) error { func (m *GetUserByIdReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserByIdReq.Unmarshal(m, b) return xxx_messageInfo_GetUserByIdReq.Unmarshal(m, b)
@ -1504,7 +1587,7 @@ func (m *User) Reset() { *m = User{} }
func (m *User) String() string { return proto.CompactTextString(m) } func (m *User) String() string { return proto.CompactTextString(m) }
func (*User) ProtoMessage() {} func (*User) ProtoMessage() {}
func (*User) Descriptor() ([]byte, []int) { func (*User) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{27} return fileDescriptor_user_f1112695e0d68005, []int{29}
} }
func (m *User) XXX_Unmarshal(b []byte) error { func (m *User) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_User.Unmarshal(m, b) return xxx_messageInfo_User.Unmarshal(m, b)
@ -1571,7 +1654,7 @@ func (m *GetUserByIdResp) Reset() { *m = GetUserByIdResp{} }
func (m *GetUserByIdResp) String() string { return proto.CompactTextString(m) } func (m *GetUserByIdResp) String() string { return proto.CompactTextString(m) }
func (*GetUserByIdResp) ProtoMessage() {} func (*GetUserByIdResp) ProtoMessage() {}
func (*GetUserByIdResp) Descriptor() ([]byte, []int) { func (*GetUserByIdResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{28} return fileDescriptor_user_f1112695e0d68005, []int{30}
} }
func (m *GetUserByIdResp) XXX_Unmarshal(b []byte) error { func (m *GetUserByIdResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserByIdResp.Unmarshal(m, b) return xxx_messageInfo_GetUserByIdResp.Unmarshal(m, b)
@ -1618,7 +1701,7 @@ func (m *GetUsersByNameReq) Reset() { *m = GetUsersByNameReq{} }
func (m *GetUsersByNameReq) String() string { return proto.CompactTextString(m) } func (m *GetUsersByNameReq) String() string { return proto.CompactTextString(m) }
func (*GetUsersByNameReq) ProtoMessage() {} func (*GetUsersByNameReq) ProtoMessage() {}
func (*GetUsersByNameReq) Descriptor() ([]byte, []int) { func (*GetUsersByNameReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{29} return fileDescriptor_user_f1112695e0d68005, []int{31}
} }
func (m *GetUsersByNameReq) XXX_Unmarshal(b []byte) error { func (m *GetUsersByNameReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUsersByNameReq.Unmarshal(m, b) return xxx_messageInfo_GetUsersByNameReq.Unmarshal(m, b)
@ -1672,7 +1755,7 @@ func (m *GetUsersByNameResp) Reset() { *m = GetUsersByNameResp{} }
func (m *GetUsersByNameResp) String() string { return proto.CompactTextString(m) } func (m *GetUsersByNameResp) String() string { return proto.CompactTextString(m) }
func (*GetUsersByNameResp) ProtoMessage() {} func (*GetUsersByNameResp) ProtoMessage() {}
func (*GetUsersByNameResp) Descriptor() ([]byte, []int) { func (*GetUsersByNameResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{30} return fileDescriptor_user_f1112695e0d68005, []int{32}
} }
func (m *GetUsersByNameResp) XXX_Unmarshal(b []byte) error { func (m *GetUsersByNameResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUsersByNameResp.Unmarshal(m, b) return xxx_messageInfo_GetUsersByNameResp.Unmarshal(m, b)
@ -1729,7 +1812,7 @@ func (m *AlterUserReq) Reset() { *m = AlterUserReq{} }
func (m *AlterUserReq) String() string { return proto.CompactTextString(m) } func (m *AlterUserReq) String() string { return proto.CompactTextString(m) }
func (*AlterUserReq) ProtoMessage() {} func (*AlterUserReq) ProtoMessage() {}
func (*AlterUserReq) Descriptor() ([]byte, []int) { func (*AlterUserReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{31} return fileDescriptor_user_f1112695e0d68005, []int{33}
} }
func (m *AlterUserReq) XXX_Unmarshal(b []byte) error { func (m *AlterUserReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AlterUserReq.Unmarshal(m, b) return xxx_messageInfo_AlterUserReq.Unmarshal(m, b)
@ -1802,7 +1885,7 @@ func (m *AlterUserResp) Reset() { *m = AlterUserResp{} }
func (m *AlterUserResp) String() string { return proto.CompactTextString(m) } func (m *AlterUserResp) String() string { return proto.CompactTextString(m) }
func (*AlterUserResp) ProtoMessage() {} func (*AlterUserResp) ProtoMessage() {}
func (*AlterUserResp) Descriptor() ([]byte, []int) { func (*AlterUserResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{32} return fileDescriptor_user_f1112695e0d68005, []int{34}
} }
func (m *AlterUserResp) XXX_Unmarshal(b []byte) error { func (m *AlterUserResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AlterUserResp.Unmarshal(m, b) return xxx_messageInfo_AlterUserResp.Unmarshal(m, b)
@ -1842,7 +1925,7 @@ func (m *GetUsersReq) Reset() { *m = GetUsersReq{} }
func (m *GetUsersReq) String() string { return proto.CompactTextString(m) } func (m *GetUsersReq) String() string { return proto.CompactTextString(m) }
func (*GetUsersReq) ProtoMessage() {} func (*GetUsersReq) ProtoMessage() {}
func (*GetUsersReq) Descriptor() ([]byte, []int) { func (*GetUsersReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{33} return fileDescriptor_user_f1112695e0d68005, []int{35}
} }
func (m *GetUsersReq) XXX_Unmarshal(b []byte) error { func (m *GetUsersReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUsersReq.Unmarshal(m, b) return xxx_messageInfo_GetUsersReq.Unmarshal(m, b)
@ -1897,7 +1980,7 @@ func (m *GetUsersResp) Reset() { *m = GetUsersResp{} }
func (m *GetUsersResp) String() string { return proto.CompactTextString(m) } func (m *GetUsersResp) String() string { return proto.CompactTextString(m) }
func (*GetUsersResp) ProtoMessage() {} func (*GetUsersResp) ProtoMessage() {}
func (*GetUsersResp) Descriptor() ([]byte, []int) { func (*GetUsersResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{34} return fileDescriptor_user_f1112695e0d68005, []int{36}
} }
func (m *GetUsersResp) XXX_Unmarshal(b []byte) error { func (m *GetUsersResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUsersResp.Unmarshal(m, b) return xxx_messageInfo_GetUsersResp.Unmarshal(m, b)
@ -1960,7 +2043,7 @@ func (m *AddUserReq) Reset() { *m = AddUserReq{} }
func (m *AddUserReq) String() string { return proto.CompactTextString(m) } func (m *AddUserReq) String() string { return proto.CompactTextString(m) }
func (*AddUserReq) ProtoMessage() {} func (*AddUserReq) ProtoMessage() {}
func (*AddUserReq) Descriptor() ([]byte, []int) { func (*AddUserReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{35} return fileDescriptor_user_f1112695e0d68005, []int{37}
} }
func (m *AddUserReq) XXX_Unmarshal(b []byte) error { func (m *AddUserReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddUserReq.Unmarshal(m, b) return xxx_messageInfo_AddUserReq.Unmarshal(m, b)
@ -2026,7 +2109,7 @@ func (m *AddUserResp) Reset() { *m = AddUserResp{} }
func (m *AddUserResp) String() string { return proto.CompactTextString(m) } func (m *AddUserResp) String() string { return proto.CompactTextString(m) }
func (*AddUserResp) ProtoMessage() {} func (*AddUserResp) ProtoMessage() {}
func (*AddUserResp) Descriptor() ([]byte, []int) { func (*AddUserResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{36} return fileDescriptor_user_f1112695e0d68005, []int{38}
} }
func (m *AddUserResp) XXX_Unmarshal(b []byte) error { func (m *AddUserResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddUserResp.Unmarshal(m, b) return xxx_messageInfo_AddUserResp.Unmarshal(m, b)
@ -2067,7 +2150,7 @@ func (m *BlockUserReq) Reset() { *m = BlockUserReq{} }
func (m *BlockUserReq) String() string { return proto.CompactTextString(m) } func (m *BlockUserReq) String() string { return proto.CompactTextString(m) }
func (*BlockUserReq) ProtoMessage() {} func (*BlockUserReq) ProtoMessage() {}
func (*BlockUserReq) Descriptor() ([]byte, []int) { func (*BlockUserReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{37} return fileDescriptor_user_f1112695e0d68005, []int{39}
} }
func (m *BlockUserReq) XXX_Unmarshal(b []byte) error { func (m *BlockUserReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BlockUserReq.Unmarshal(m, b) return xxx_messageInfo_BlockUserReq.Unmarshal(m, b)
@ -2126,7 +2209,7 @@ func (m *BlockUserResp) Reset() { *m = BlockUserResp{} }
func (m *BlockUserResp) String() string { return proto.CompactTextString(m) } func (m *BlockUserResp) String() string { return proto.CompactTextString(m) }
func (*BlockUserResp) ProtoMessage() {} func (*BlockUserResp) ProtoMessage() {}
func (*BlockUserResp) Descriptor() ([]byte, []int) { func (*BlockUserResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{38} return fileDescriptor_user_f1112695e0d68005, []int{40}
} }
func (m *BlockUserResp) XXX_Unmarshal(b []byte) error { func (m *BlockUserResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BlockUserResp.Unmarshal(m, b) return xxx_messageInfo_BlockUserResp.Unmarshal(m, b)
@ -2166,7 +2249,7 @@ func (m *UnBlockUserReq) Reset() { *m = UnBlockUserReq{} }
func (m *UnBlockUserReq) String() string { return proto.CompactTextString(m) } func (m *UnBlockUserReq) String() string { return proto.CompactTextString(m) }
func (*UnBlockUserReq) ProtoMessage() {} func (*UnBlockUserReq) ProtoMessage() {}
func (*UnBlockUserReq) Descriptor() ([]byte, []int) { func (*UnBlockUserReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{39} return fileDescriptor_user_f1112695e0d68005, []int{41}
} }
func (m *UnBlockUserReq) XXX_Unmarshal(b []byte) error { func (m *UnBlockUserReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UnBlockUserReq.Unmarshal(m, b) return xxx_messageInfo_UnBlockUserReq.Unmarshal(m, b)
@ -2218,7 +2301,7 @@ func (m *UnBlockUserResp) Reset() { *m = UnBlockUserResp{} }
func (m *UnBlockUserResp) String() string { return proto.CompactTextString(m) } func (m *UnBlockUserResp) String() string { return proto.CompactTextString(m) }
func (*UnBlockUserResp) ProtoMessage() {} func (*UnBlockUserResp) ProtoMessage() {}
func (*UnBlockUserResp) Descriptor() ([]byte, []int) { func (*UnBlockUserResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{40} return fileDescriptor_user_f1112695e0d68005, []int{42}
} }
func (m *UnBlockUserResp) XXX_Unmarshal(b []byte) error { func (m *UnBlockUserResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UnBlockUserResp.Unmarshal(m, b) return xxx_messageInfo_UnBlockUserResp.Unmarshal(m, b)
@ -2258,7 +2341,7 @@ func (m *GetBlockUsersReq) Reset() { *m = GetBlockUsersReq{} }
func (m *GetBlockUsersReq) String() string { return proto.CompactTextString(m) } func (m *GetBlockUsersReq) String() string { return proto.CompactTextString(m) }
func (*GetBlockUsersReq) ProtoMessage() {} func (*GetBlockUsersReq) ProtoMessage() {}
func (*GetBlockUsersReq) Descriptor() ([]byte, []int) { func (*GetBlockUsersReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{41} return fileDescriptor_user_f1112695e0d68005, []int{43}
} }
func (m *GetBlockUsersReq) XXX_Unmarshal(b []byte) error { func (m *GetBlockUsersReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetBlockUsersReq.Unmarshal(m, b) return xxx_messageInfo_GetBlockUsersReq.Unmarshal(m, b)
@ -2312,7 +2395,7 @@ func (m *BlockUser) Reset() { *m = BlockUser{} }
func (m *BlockUser) String() string { return proto.CompactTextString(m) } func (m *BlockUser) String() string { return proto.CompactTextString(m) }
func (*BlockUser) ProtoMessage() {} func (*BlockUser) ProtoMessage() {}
func (*BlockUser) Descriptor() ([]byte, []int) { func (*BlockUser) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{42} return fileDescriptor_user_f1112695e0d68005, []int{44}
} }
func (m *BlockUser) XXX_Unmarshal(b []byte) error { func (m *BlockUser) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BlockUser.Unmarshal(m, b) return xxx_messageInfo_BlockUser.Unmarshal(m, b)
@ -2367,7 +2450,7 @@ func (m *GetBlockUsersResp) Reset() { *m = GetBlockUsersResp{} }
func (m *GetBlockUsersResp) String() string { return proto.CompactTextString(m) } func (m *GetBlockUsersResp) String() string { return proto.CompactTextString(m) }
func (*GetBlockUsersResp) ProtoMessage() {} func (*GetBlockUsersResp) ProtoMessage() {}
func (*GetBlockUsersResp) Descriptor() ([]byte, []int) { func (*GetBlockUsersResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{43} return fileDescriptor_user_f1112695e0d68005, []int{45}
} }
func (m *GetBlockUsersResp) XXX_Unmarshal(b []byte) error { func (m *GetBlockUsersResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetBlockUsersResp.Unmarshal(m, b) return xxx_messageInfo_GetBlockUsersResp.Unmarshal(m, b)
@ -2427,7 +2510,7 @@ func (m *GetBlockUserByIdReq) Reset() { *m = GetBlockUserByIdReq{} }
func (m *GetBlockUserByIdReq) String() string { return proto.CompactTextString(m) } func (m *GetBlockUserByIdReq) String() string { return proto.CompactTextString(m) }
func (*GetBlockUserByIdReq) ProtoMessage() {} func (*GetBlockUserByIdReq) ProtoMessage() {}
func (*GetBlockUserByIdReq) Descriptor() ([]byte, []int) { func (*GetBlockUserByIdReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{44} return fileDescriptor_user_f1112695e0d68005, []int{46}
} }
func (m *GetBlockUserByIdReq) XXX_Unmarshal(b []byte) error { func (m *GetBlockUserByIdReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetBlockUserByIdReq.Unmarshal(m, b) return xxx_messageInfo_GetBlockUserByIdReq.Unmarshal(m, b)
@ -2472,7 +2555,7 @@ func (m *GetBlockUserByIdResp) Reset() { *m = GetBlockUserByIdResp{} }
func (m *GetBlockUserByIdResp) String() string { return proto.CompactTextString(m) } func (m *GetBlockUserByIdResp) String() string { return proto.CompactTextString(m) }
func (*GetBlockUserByIdResp) ProtoMessage() {} func (*GetBlockUserByIdResp) ProtoMessage() {}
func (*GetBlockUserByIdResp) Descriptor() ([]byte, []int) { func (*GetBlockUserByIdResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{45} return fileDescriptor_user_f1112695e0d68005, []int{47}
} }
func (m *GetBlockUserByIdResp) XXX_Unmarshal(b []byte) error { func (m *GetBlockUserByIdResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetBlockUserByIdResp.Unmarshal(m, b) return xxx_messageInfo_GetBlockUserByIdResp.Unmarshal(m, b)
@ -2512,7 +2595,7 @@ func (m *DeleteUserReq) Reset() { *m = DeleteUserReq{} }
func (m *DeleteUserReq) String() string { return proto.CompactTextString(m) } func (m *DeleteUserReq) String() string { return proto.CompactTextString(m) }
func (*DeleteUserReq) ProtoMessage() {} func (*DeleteUserReq) ProtoMessage() {}
func (*DeleteUserReq) Descriptor() ([]byte, []int) { func (*DeleteUserReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{46} return fileDescriptor_user_f1112695e0d68005, []int{48}
} }
func (m *DeleteUserReq) XXX_Unmarshal(b []byte) error { func (m *DeleteUserReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteUserReq.Unmarshal(m, b) return xxx_messageInfo_DeleteUserReq.Unmarshal(m, b)
@ -2564,7 +2647,7 @@ func (m *DeleteUserResp) Reset() { *m = DeleteUserResp{} }
func (m *DeleteUserResp) String() string { return proto.CompactTextString(m) } func (m *DeleteUserResp) String() string { return proto.CompactTextString(m) }
func (*DeleteUserResp) ProtoMessage() {} func (*DeleteUserResp) ProtoMessage() {}
func (*DeleteUserResp) Descriptor() ([]byte, []int) { func (*DeleteUserResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_94f030505f068262, []int{47} return fileDescriptor_user_f1112695e0d68005, []int{49}
} }
func (m *DeleteUserResp) XXX_Unmarshal(b []byte) error { func (m *DeleteUserResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteUserResp.Unmarshal(m, b) return xxx_messageInfo_DeleteUserResp.Unmarshal(m, b)
@ -2604,6 +2687,8 @@ func init() {
proto.RegisterType((*GetUserInfoResp)(nil), "user.GetUserInfoResp") proto.RegisterType((*GetUserInfoResp)(nil), "user.GetUserInfoResp")
proto.RegisterType((*UpdateUserInfoReq)(nil), "user.UpdateUserInfoReq") proto.RegisterType((*UpdateUserInfoReq)(nil), "user.UpdateUserInfoReq")
proto.RegisterType((*UpdateUserInfoResp)(nil), "user.UpdateUserInfoResp") proto.RegisterType((*UpdateUserInfoResp)(nil), "user.UpdateUserInfoResp")
proto.RegisterType((*SetGlobalRecvMessageOptReq)(nil), "user.SetGlobalRecvMessageOptReq")
proto.RegisterType((*SetGlobalRecvMessageOptResp)(nil), "user.SetGlobalRecvMessageOptResp")
proto.RegisterType((*Conversation)(nil), "user.Conversation") proto.RegisterType((*Conversation)(nil), "user.Conversation")
proto.RegisterType((*SetConversationReq)(nil), "user.SetConversationReq") proto.RegisterType((*SetConversationReq)(nil), "user.SetConversationReq")
proto.RegisterType((*SetConversationResp)(nil), "user.SetConversationResp") proto.RegisterType((*SetConversationResp)(nil), "user.SetConversationResp")
@ -2656,6 +2741,7 @@ const _ = grpc.SupportPackageIsVersion4
type UserClient interface { type UserClient interface {
GetUserInfo(ctx context.Context, in *GetUserInfoReq, opts ...grpc.CallOption) (*GetUserInfoResp, error) GetUserInfo(ctx context.Context, in *GetUserInfoReq, opts ...grpc.CallOption) (*GetUserInfoResp, error)
UpdateUserInfo(ctx context.Context, in *UpdateUserInfoReq, opts ...grpc.CallOption) (*UpdateUserInfoResp, error) UpdateUserInfo(ctx context.Context, in *UpdateUserInfoReq, opts ...grpc.CallOption) (*UpdateUserInfoResp, error)
SetGlobalRecvMessageOpt(ctx context.Context, in *SetGlobalRecvMessageOptReq, opts ...grpc.CallOption) (*SetGlobalRecvMessageOptResp, error)
DeleteUsers(ctx context.Context, in *DeleteUsersReq, opts ...grpc.CallOption) (*DeleteUsersResp, error) DeleteUsers(ctx context.Context, in *DeleteUsersReq, opts ...grpc.CallOption) (*DeleteUsersResp, error)
GetAllUserID(ctx context.Context, in *GetAllUserIDReq, opts ...grpc.CallOption) (*GetAllUserIDResp, error) GetAllUserID(ctx context.Context, in *GetAllUserIDReq, opts ...grpc.CallOption) (*GetAllUserIDResp, error)
AccountCheck(ctx context.Context, in *AccountCheckReq, opts ...grpc.CallOption) (*AccountCheckResp, error) AccountCheck(ctx context.Context, in *AccountCheckReq, opts ...grpc.CallOption) (*AccountCheckResp, error)
@ -2704,6 +2790,15 @@ func (c *userClient) UpdateUserInfo(ctx context.Context, in *UpdateUserInfoReq,
return out, nil return out, nil
} }
func (c *userClient) SetGlobalRecvMessageOpt(ctx context.Context, in *SetGlobalRecvMessageOptReq, opts ...grpc.CallOption) (*SetGlobalRecvMessageOptResp, error) {
out := new(SetGlobalRecvMessageOptResp)
err := grpc.Invoke(ctx, "/user.user/SetGlobalRecvMessageOpt", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *userClient) DeleteUsers(ctx context.Context, in *DeleteUsersReq, opts ...grpc.CallOption) (*DeleteUsersResp, error) { func (c *userClient) DeleteUsers(ctx context.Context, in *DeleteUsersReq, opts ...grpc.CallOption) (*DeleteUsersResp, error) {
out := new(DeleteUsersResp) out := new(DeleteUsersResp)
err := grpc.Invoke(ctx, "/user.user/DeleteUsers", in, out, c.cc, opts...) err := grpc.Invoke(ctx, "/user.user/DeleteUsers", in, out, c.cc, opts...)
@ -2889,6 +2984,7 @@ func (c *userClient) DeleteUser(ctx context.Context, in *DeleteUserReq, opts ...
type UserServer interface { type UserServer interface {
GetUserInfo(context.Context, *GetUserInfoReq) (*GetUserInfoResp, error) GetUserInfo(context.Context, *GetUserInfoReq) (*GetUserInfoResp, error)
UpdateUserInfo(context.Context, *UpdateUserInfoReq) (*UpdateUserInfoResp, error) UpdateUserInfo(context.Context, *UpdateUserInfoReq) (*UpdateUserInfoResp, error)
SetGlobalRecvMessageOpt(context.Context, *SetGlobalRecvMessageOptReq) (*SetGlobalRecvMessageOptResp, error)
DeleteUsers(context.Context, *DeleteUsersReq) (*DeleteUsersResp, error) DeleteUsers(context.Context, *DeleteUsersReq) (*DeleteUsersResp, error)
GetAllUserID(context.Context, *GetAllUserIDReq) (*GetAllUserIDResp, error) GetAllUserID(context.Context, *GetAllUserIDReq) (*GetAllUserIDResp, error)
AccountCheck(context.Context, *AccountCheckReq) (*AccountCheckResp, error) AccountCheck(context.Context, *AccountCheckReq) (*AccountCheckResp, error)
@ -2951,6 +3047,24 @@ func _User_UpdateUserInfo_Handler(srv interface{}, ctx context.Context, dec func
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _User_SetGlobalRecvMessageOpt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SetGlobalRecvMessageOptReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(UserServer).SetGlobalRecvMessageOpt(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/user.user/SetGlobalRecvMessageOpt",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(UserServer).SetGlobalRecvMessageOpt(ctx, req.(*SetGlobalRecvMessageOptReq))
}
return interceptor(ctx, in, info, handler)
}
func _User_DeleteUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { func _User_DeleteUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteUsersReq) in := new(DeleteUsersReq)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -3323,6 +3437,10 @@ var _User_serviceDesc = grpc.ServiceDesc{
MethodName: "UpdateUserInfo", MethodName: "UpdateUserInfo",
Handler: _User_UpdateUserInfo_Handler, Handler: _User_UpdateUserInfo_Handler,
}, },
{
MethodName: "SetGlobalRecvMessageOpt",
Handler: _User_SetGlobalRecvMessageOpt_Handler,
},
{ {
MethodName: "DeleteUsers", MethodName: "DeleteUsers",
Handler: _User_DeleteUsers_Handler, Handler: _User_DeleteUsers_Handler,
@ -3408,128 +3526,129 @@ var _User_serviceDesc = grpc.ServiceDesc{
Metadata: "user/user.proto", Metadata: "user/user.proto",
} }
func init() { proto.RegisterFile("user/user.proto", fileDescriptor_user_94f030505f068262) } func init() { proto.RegisterFile("user/user.proto", fileDescriptor_user_f1112695e0d68005) }
var fileDescriptor_user_94f030505f068262 = []byte{ var fileDescriptor_user_f1112695e0d68005 = []byte{
// 1906 bytes of a gzipped FileDescriptorProto // 1923 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0xcd, 0x6f, 0x23, 0x49, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0xcd, 0x6f, 0x23, 0x49,
0x15, 0x57, 0xdb, 0xce, 0x24, 0x79, 0x8e, 0x1d, 0xa7, 0x26, 0x3b, 0xe9, 0x6d, 0x60, 0x08, 0xad, 0x15, 0x57, 0xfb, 0x63, 0x92, 0x3c, 0xc7, 0x8e, 0x53, 0x93, 0x9d, 0xf4, 0xf6, 0xc2, 0xe0, 0x6d,
0x65, 0x37, 0x1a, 0x09, 0x07, 0x66, 0x11, 0x83, 0x16, 0xc1, 0x6e, 0xec, 0x64, 0x2c, 0x23, 0x26, 0x2d, 0x4b, 0x34, 0x12, 0x09, 0x0c, 0x88, 0x41, 0x8b, 0x60, 0x37, 0x76, 0x32, 0x96, 0x11, 0x93,
0xb1, 0xda, 0x13, 0x84, 0x10, 0x52, 0xd4, 0xb1, 0x2b, 0x4e, 0x2b, 0x76, 0x77, 0x6f, 0x57, 0x3b, 0x58, 0xed, 0x19, 0x09, 0x21, 0x44, 0xd4, 0x63, 0x57, 0x9c, 0x56, 0xec, 0xee, 0xde, 0xae, 0xf6,
0x33, 0xe1, 0xb2, 0x88, 0x8f, 0x1b, 0x17, 0x4e, 0xbb, 0x70, 0xe0, 0xef, 0xe0, 0x0e, 0x27, 0xae, 0x7c, 0x70, 0x59, 0xb4, 0xc0, 0x05, 0x71, 0xe1, 0xc4, 0xc0, 0x81, 0xbf, 0x83, 0x3b, 0x9c, 0xf8,
0x9c, 0xe0, 0xc2, 0xbf, 0x82, 0xea, 0xa3, 0xbb, 0xab, 0xaa, 0xdb, 0x89, 0xe9, 0x44, 0x73, 0x49, 0x0f, 0xe0, 0xc2, 0x9f, 0xc1, 0x15, 0xd5, 0x47, 0x77, 0x57, 0x55, 0xb7, 0x63, 0x6f, 0x67, 0x34,
0x5c, 0xaf, 0xbe, 0x7e, 0xef, 0xbd, 0xdf, 0x7b, 0xf5, 0xaa, 0x1a, 0x36, 0xe7, 0x04, 0x47, 0xfb, 0x97, 0xc4, 0xf5, 0xea, 0xa3, 0xdf, 0xef, 0xbd, 0xdf, 0x7b, 0xf5, 0xaa, 0x0a, 0x76, 0x16, 0x04,
0xf4, 0x4f, 0x3b, 0x8c, 0x82, 0x38, 0x40, 0x35, 0xfa, 0xdb, 0xfa, 0xd6, 0x49, 0x88, 0xfd, 0xb3, 0x47, 0x47, 0xf4, 0xcf, 0x61, 0x18, 0x05, 0x71, 0x80, 0x6a, 0xf4, 0xb7, 0xf5, 0xe1, 0x79, 0x88,
0xfe, 0xab, 0xfd, 0xf0, 0x6a, 0xb2, 0xcf, 0x3a, 0xf6, 0xc9, 0xf8, 0xea, 0xec, 0x0d, 0xd9, 0x7f, 0xfd, 0x8b, 0xc1, 0x93, 0xa3, 0xf0, 0x7a, 0x7a, 0xc4, 0x3a, 0x8e, 0xc8, 0xe4, 0xfa, 0xe2, 0x25,
0x43, 0xf8, 0x40, 0xeb, 0xa3, 0xc5, 0x43, 0x22, 0x37, 0x0c, 0x71, 0x24, 0x06, 0xda, 0x3f, 0x01, 0x39, 0x7a, 0x49, 0xf8, 0x40, 0xfb, 0x27, 0x00, 0xbd, 0x60, 0x3e, 0x0f, 0x7c, 0x07, 0x93, 0x10,
0xe8, 0x06, 0xb3, 0x59, 0xe0, 0x3b, 0x98, 0x84, 0xc8, 0x84, 0x55, 0x1c, 0x45, 0xdd, 0x60, 0x8c, 0x99, 0xb0, 0x81, 0xa3, 0xa8, 0x17, 0x4c, 0xb0, 0x69, 0x74, 0x8c, 0x83, 0xba, 0x93, 0x34, 0xd1,
0x4d, 0x63, 0xd7, 0xd8, 0x5b, 0x71, 0x92, 0x26, 0x7a, 0x02, 0x8f, 0x70, 0x14, 0xbd, 0x22, 0x13, 0x3d, 0xb8, 0x83, 0xa3, 0xe8, 0x09, 0x99, 0x9a, 0x95, 0x8e, 0x71, 0xb0, 0xe5, 0x88, 0x96, 0xfd,
0xb3, 0xb2, 0x6b, 0xec, 0xad, 0x3b, 0xa2, 0x65, 0xff, 0x1a, 0x9a, 0x87, 0x78, 0x8a, 0x63, 0x7c, 0x6b, 0x68, 0x9d, 0xe0, 0x19, 0x8e, 0xf1, 0x33, 0x82, 0x23, 0xe2, 0xe0, 0xcf, 0xd1, 0x03, 0x68,
0x4a, 0x70, 0x44, 0x1c, 0xfc, 0x39, 0x7a, 0x06, 0xad, 0x4c, 0xd2, 0x3f, 0xfc, 0x99, 0x47, 0x62, 0x67, 0x92, 0xc1, 0xc9, 0xcf, 0x3c, 0x12, 0x9b, 0x95, 0x4e, 0xf5, 0x60, 0xcb, 0xc9, 0xc9, 0x91,
0xb3, 0xb2, 0x5b, 0xdd, 0x5b, 0x77, 0x72, 0x72, 0x64, 0xc1, 0xda, 0x49, 0xc8, 0xdb, 0x66, 0x95, 0x05, 0x9b, 0xe7, 0x21, 0x6f, 0x9b, 0x55, 0xb6, 0x6e, 0xda, 0x46, 0x1d, 0x68, 0x9c, 0x87, 0x38,
0xad, 0x9b, 0xb6, 0xd1, 0x2e, 0xd4, 0x4f, 0x42, 0x1c, 0xb9, 0xb1, 0x17, 0xf8, 0xfd, 0x43, 0xb3, 0x72, 0x63, 0x2f, 0xf0, 0x07, 0x27, 0x66, 0x8d, 0x75, 0xcb, 0x22, 0x3b, 0x80, 0x1d, 0xe5, 0xdb,
0xc6, 0xba, 0x65, 0x91, 0x1d, 0xc0, 0xa6, 0xb2, 0x37, 0x09, 0xd1, 0x77, 0x65, 0x75, 0x98, 0x0e, 0x24, 0x44, 0xdf, 0x91, 0xe1, 0x30, 0x0c, 0x8d, 0x87, 0xed, 0x43, 0x66, 0x98, 0x4c, 0xee, 0xc8,
0xf5, 0xe7, 0xad, 0x36, 0xb3, 0x60, 0x26, 0x77, 0x64, 0x95, 0x9f, 0x41, 0xeb, 0xa5, 0xeb, 0x4d, 0x90, 0x1f, 0x40, 0xfb, 0xb1, 0xeb, 0xcd, 0xf0, 0x24, 0xaf, 0xae, 0x2e, 0xb7, 0xcf, 0x61, 0xa7,
0xf1, 0x38, 0x0f, 0x57, 0x97, 0xdb, 0x27, 0xb0, 0xd9, 0xc3, 0xf1, 0xc1, 0x74, 0xca, 0x65, 0x54, 0x8f, 0xe3, 0xe3, 0xd9, 0x8c, 0xcb, 0x28, 0x5a, 0x0b, 0x36, 0x83, 0x04, 0x81, 0xc1, 0x11, 0x04,
0x5b, 0x0b, 0xd6, 0x82, 0x44, 0x03, 0x83, 0x6b, 0x10, 0x48, 0x1a, 0x04, 0x92, 0x06, 0xdc, 0x70, 0x12, 0x82, 0x40, 0x42, 0xc0, 0x0d, 0x27, 0x8b, 0xec, 0x09, 0xb4, 0xd5, 0x05, 0x4b, 0x41, 0xb8,
0xb2, 0xc8, 0x1e, 0x43, 0x4b, 0x5d, 0xb0, 0x94, 0x0a, 0x4f, 0x01, 0x72, 0xe0, 0x25, 0x89, 0x7d, 0x0f, 0x90, 0x53, 0x5e, 0x92, 0xd8, 0xaf, 0x61, 0xe7, 0x78, 0x3c, 0x0e, 0x16, 0x7e, 0xdc, 0xbb,
0x03, 0x9b, 0x07, 0xa3, 0x51, 0x30, 0xf7, 0xe3, 0xee, 0x25, 0x1e, 0x5d, 0x51, 0xd8, 0x7b, 0xb0, 0xc2, 0xe3, 0x6b, 0xaa, 0xf6, 0x01, 0xec, 0xb0, 0xdf, 0xd2, 0x3c, 0x83, 0xcd, 0xd3, 0xc5, 0x8a,
0xc9, 0x7e, 0x4b, 0xf3, 0x0c, 0x36, 0x4f, 0x17, 0x2b, 0x2e, 0xaa, 0xdc, 0xee, 0xa2, 0x6a, 0xde, 0x8b, 0x2a, 0x37, 0xbb, 0xa8, 0x9a, 0x77, 0xd1, 0x7f, 0x0d, 0x68, 0xab, 0xdf, 0xe6, 0x08, 0xc7,
0x45, 0xff, 0x35, 0xa0, 0xa5, 0xee, 0xcd, 0x35, 0x1c, 0x2d, 0xa1, 0x61, 0x36, 0x06, 0xf5, 0x00, 0x6b, 0x20, 0xcc, 0xc6, 0xa0, 0x3e, 0x80, 0x83, 0xc9, 0x62, 0x16, 0xa7, 0x08, 0x1b, 0x0f, 0xbf,
0x1c, 0x4c, 0xe6, 0xd3, 0x38, 0xd5, 0xb0, 0xfe, 0xfc, 0x23, 0x3e, 0x43, 0x5f, 0xbd, 0x3d, 0xf4, 0xc5, 0x67, 0xe8, 0xab, 0x1f, 0x8e, 0x3c, 0x7f, 0x3a, 0x63, 0x94, 0x18, 0xc5, 0x6e, 0xbc, 0x20,
0xfc, 0xc9, 0x94, 0x51, 0x62, 0x18, 0xbb, 0xf1, 0x9c, 0x38, 0xd2, 0x54, 0x6b, 0x00, 0x2d, 0xbd, 0x8e, 0x34, 0xd5, 0x1a, 0x42, 0x5b, 0xef, 0xa7, 0xd4, 0x5e, 0xc8, 0x0e, 0x14, 0x2d, 0xf4, 0x11,
0x9f, 0x52, 0x7b, 0x2e, 0x3b, 0x50, 0xb4, 0xd0, 0x07, 0xd0, 0x70, 0xf9, 0xe2, 0x7c, 0xa0, 0x50, 0x34, 0x5d, 0xbe, 0x38, 0x1f, 0x28, 0xe0, 0xab, 0x42, 0xdb, 0x87, 0x56, 0x1f, 0xc7, 0xcc, 0x20,
0x5f, 0x15, 0xda, 0x3e, 0x34, 0x7b, 0x38, 0x66, 0x06, 0xf1, 0x2f, 0x02, 0x6a, 0xdb, 0xa7, 0x00, 0xfe, 0x65, 0x40, 0x6d, 0x7b, 0x1f, 0x60, 0xa1, 0x9b, 0x55, 0x92, 0xdc, 0xd2, 0xa2, 0xbf, 0x33,
0x73, 0xdd, 0xac, 0x92, 0xe4, 0x9e, 0x16, 0xfd, 0xbd, 0xc1, 0x48, 0x98, 0x6d, 0x58, 0xca, 0xa0, 0x18, 0x09, 0xb3, 0x0f, 0x96, 0x32, 0xe8, 0xa7, 0xb0, 0x9d, 0xac, 0xc0, 0xb4, 0xac, 0x32, 0x93,
0x9f, 0xc2, 0x46, 0xb2, 0x02, 0x43, 0x59, 0x65, 0x26, 0xfd, 0x5a, 0x9b, 0xe0, 0xe8, 0x1a, 0x47, 0x7e, 0x70, 0x48, 0x70, 0xf4, 0x02, 0x47, 0x17, 0x6e, 0xe8, 0x5d, 0x84, 0x6e, 0xe4, 0xce, 0xc9,
0x67, 0x6e, 0xe8, 0x9d, 0x85, 0x6e, 0xe4, 0xce, 0x48, 0x3b, 0xdd, 0x48, 0x99, 0x60, 0xff, 0xcb, 0x61, 0xfa, 0x21, 0x65, 0x82, 0xfd, 0x07, 0x03, 0x76, 0x9f, 0x85, 0x13, 0x57, 0x84, 0xb3, 0x80,
0x80, 0xad, 0xd3, 0x70, 0xec, 0x8a, 0x70, 0x16, 0xaa, 0xbf, 0x80, 0xb5, 0xa4, 0x29, 0x60, 0xdc, 0xfe, 0x08, 0x36, 0x93, 0xa6, 0x50, 0xe3, 0xc6, 0x25, 0xd3, 0xc1, 0xab, 0x6c, 0x12, 0xe4, 0x6d,
0xba, 0x64, 0x3a, 0xf8, 0x2e, 0x9b, 0x04, 0x79, 0x9b, 0x48, 0x22, 0xd4, 0x83, 0xd6, 0x64, 0x1a, 0x22, 0x87, 0xd1, 0x63, 0x40, 0xba, 0x2e, 0x65, 0xac, 0x62, 0x7f, 0x69, 0x80, 0x35, 0xc2, 0x71,
0x9c, 0xbb, 0x53, 0x07, 0x8f, 0xae, 0x5f, 0x91, 0xc9, 0x49, 0x18, 0xb3, 0x7c, 0x41, 0xb7, 0x9f, 0x7f, 0x16, 0x3c, 0x77, 0x67, 0x0e, 0x1e, 0xbf, 0x78, 0x82, 0x09, 0x71, 0xa7, 0xf8, 0x3c, 0x8c,
0x04, 0xc1, 0x64, 0x8a, 0x79, 0xb6, 0x3b, 0x9f, 0x5f, 0xb4, 0xfb, 0x7e, 0xfc, 0xf1, 0xf3, 0x9f, 0x29, 0xba, 0x65, 0x44, 0x59, 0x19, 0xe7, 0x34, 0xc9, 0x4c, 0xb3, 0x45, 0xc9, 0xf4, 0x3c, 0x8c,
0xbb, 0xd3, 0x39, 0x76, 0x72, 0x93, 0xec, 0x97, 0x80, 0x74, 0xa5, 0xca, 0x98, 0xd7, 0xfe, 0x4f, 0x19, 0x8e, 0xba, 0x93, 0x93, 0xdb, 0xe7, 0xf0, 0xc1, 0x52, 0x1d, 0x4a, 0xa1, 0xfa, 0x4f, 0x15,
0x15, 0x36, 0xba, 0x81, 0x7f, 0x8d, 0x23, 0xc2, 0x30, 0x32, 0xbf, 0xbe, 0xf1, 0x71, 0xa4, 0x64, 0xb6, 0x7b, 0x81, 0xff, 0x02, 0x47, 0x84, 0xe9, 0xc3, 0x48, 0xf6, 0xd2, 0xc7, 0x91, 0x92, 0xb6,
0x0a, 0x59, 0x84, 0x3e, 0x84, 0xa6, 0x3c, 0x23, 0xb5, 0x83, 0x26, 0xa5, 0xec, 0x92, 0xb4, 0xac, 0x64, 0x11, 0xfa, 0x18, 0x5a, 0xf2, 0x8c, 0x14, 0x94, 0x26, 0xa5, 0x54, 0xcf, 0x21, 0x92, 0x24,
0xb2, 0x2c, 0x2d, 0x49, 0x68, 0x3e, 0x93, 0x67, 0xbc, 0xbe, 0x09, 0x31, 0xb3, 0xc5, 0x8a, 0x93, 0x14, 0xb7, 0x3c, 0xe3, 0xe9, 0xeb, 0x10, 0xb3, 0x44, 0x5e, 0x77, 0x72, 0x72, 0x6a, 0x5d, 0xa1,
0x93, 0x53, 0xe6, 0x0b, 0x40, 0x2b, 0x9c, 0xf9, 0x02, 0x8b, 0x09, 0xab, 0xbd, 0x28, 0x98, 0x87, 0x50, 0x9d, 0x5b, 0x57, 0xe8, 0x62, 0xc2, 0x46, 0x3f, 0x0a, 0x16, 0xe1, 0xe0, 0xc4, 0xbc, 0xc3,
0xfd, 0x43, 0xf3, 0x11, 0xeb, 0x48, 0x9a, 0x54, 0x8f, 0x53, 0x3f, 0xc2, 0xee, 0xb8, 0x4b, 0x43, 0x3a, 0x92, 0x26, 0xc5, 0xf1, 0xcc, 0x8f, 0xb0, 0x3b, 0xe9, 0xd1, 0x78, 0x34, 0x37, 0xd8, 0xc2,
0xc0, 0x5c, 0x65, 0x0b, 0xcb, 0x22, 0x1a, 0x35, 0x87, 0x91, 0x7b, 0x11, 0xbf, 0xc6, 0x6f, 0xe3, 0xb2, 0x88, 0x86, 0xf0, 0x49, 0xe4, 0x5e, 0xc6, 0x4f, 0xf1, 0xab, 0xf8, 0xa9, 0x37, 0xc7, 0xe6,
0xd7, 0xde, 0x0c, 0x9b, 0x6b, 0xbb, 0xc6, 0x5e, 0xd5, 0x51, 0x85, 0xd4, 0xdf, 0x7d, 0x32, 0xf0, 0x66, 0xc7, 0x38, 0xa8, 0x3a, 0xaa, 0x90, 0x92, 0x6f, 0x40, 0x86, 0x9e, 0xef, 0xe3, 0x89, 0xb9,
0x7c, 0x1f, 0x8f, 0xcd, 0xf5, 0x5d, 0x63, 0x6f, 0xcd, 0x49, 0xdb, 0xc8, 0x86, 0x8d, 0x83, 0x38, 0xd5, 0x31, 0x0e, 0x36, 0x9d, 0xb4, 0x8d, 0x6c, 0xd8, 0x3e, 0x8e, 0x63, 0x77, 0x7c, 0x85, 0x27,
0x76, 0x47, 0x97, 0x78, 0xcc, 0x88, 0x04, 0x0c, 0x82, 0x22, 0xa3, 0xbb, 0xf4, 0xc9, 0x20, 0xf2, 0x8c, 0xd5, 0xc0, 0x54, 0x50, 0x64, 0xf4, 0x2b, 0x03, 0x32, 0x8c, 0xbc, 0x17, 0x6e, 0x8c, 0x7b,
0xae, 0xdd, 0x18, 0x77, 0x2f, 0xdd, 0xd8, 0xac, 0xb3, 0x45, 0x54, 0x21, 0x45, 0xcb, 0x80, 0x1f, 0x57, 0x6e, 0x6c, 0x36, 0xd8, 0x22, 0xaa, 0x90, 0x6a, 0xcb, 0x14, 0x3f, 0x8e, 0x99, 0x19, 0xb6,
0xc4, 0xcc, 0x0c, 0x1b, 0x1c, 0xad, 0x24, 0xa2, 0x7b, 0xf5, 0xc9, 0x71, 0x10, 0xf7, 0x7d, 0x26, 0xb9, 0xb6, 0x92, 0x88, 0x7e, 0x6b, 0x40, 0xce, 0x82, 0x78, 0xe0, 0x33, 0xa9, 0xd9, 0x64, 0xcb,
0x35, 0x1b, 0x6c, 0x19, 0x45, 0x86, 0x9a, 0x50, 0x39, 0x7a, 0x6b, 0x36, 0x19, 0x8a, 0xca, 0xd1, 0x28, 0x32, 0xd4, 0x82, 0xca, 0xe9, 0x2b, 0xb3, 0xc5, 0xb4, 0xa8, 0x9c, 0xbe, 0xb2, 0xff, 0x6a,
0x5b, 0xfb, 0x2f, 0x06, 0xa0, 0x21, 0x8e, 0x65, 0x6b, 0x52, 0xee, 0xff, 0x40, 0x75, 0xb9, 0xe0, 0x00, 0x1a, 0xe1, 0x58, 0xb6, 0x26, 0xa5, 0xea, 0x0f, 0x54, 0x97, 0x0b, 0x9e, 0xa0, 0x84, 0x27,
0x09, 0x4a, 0x78, 0x22, 0x0d, 0x56, 0xa9, 0xf1, 0x0c, 0x5a, 0x7e, 0x10, 0x7b, 0x17, 0xde, 0x28, 0xd2, 0x60, 0x95, 0x1a, 0x0f, 0xa0, 0xed, 0x07, 0xb1, 0x77, 0xe9, 0x8d, 0x33, 0x87, 0x55, 0xb8,
0x73, 0x58, 0x85, 0x3b, 0x4c, 0x97, 0x2f, 0x91, 0x1e, 0x7a, 0xf0, 0x38, 0x87, 0xad, 0x14, 0x85, 0xc3, 0x74, 0xf9, 0x1a, 0xb9, 0xaa, 0x0f, 0x77, 0x73, 0xba, 0x95, 0xa2, 0xf0, 0xbf, 0x0c, 0x68,
0xff, 0x69, 0x40, 0x6b, 0x88, 0xe3, 0x8c, 0x59, 0x54, 0xc7, 0x77, 0x4a, 0xe3, 0x9c, 0x55, 0x6a, 0x8f, 0x70, 0x9c, 0x31, 0x8b, 0x62, 0x7c, 0xa7, 0x34, 0xce, 0x59, 0xa5, 0xb6, 0x9e, 0x55, 0xea,
0xcb, 0x59, 0x65, 0x25, 0x6f, 0x95, 0x23, 0xd8, 0xd2, 0x74, 0x29, 0x65, 0x93, 0xdf, 0x18, 0x80, 0x79, 0xab, 0x9c, 0xc2, 0xae, 0x86, 0xa5, 0x94, 0x4d, 0x7e, 0x63, 0x00, 0xea, 0xe7, 0x3d, 0x9f,
0x7a, 0x79, 0xcf, 0xe7, 0x75, 0x36, 0x0a, 0x75, 0xd6, 0xac, 0x57, 0xc9, 0x5b, 0xef, 0x6e, 0xff, 0xc7, 0x6c, 0x14, 0x62, 0xd6, 0xac, 0x57, 0xc9, 0x5b, 0x6f, 0xb5, 0x7f, 0xbf, 0x80, 0xbb, 0xfd,
0x7e, 0x01, 0x8f, 0x7b, 0x0f, 0xe1, 0xdf, 0x1c, 0x5d, 0x2b, 0xcb, 0xd1, 0xd5, 0xfe, 0x9d, 0x91, 0xb7, 0xe1, 0xdf, 0x1c, 0x5d, 0x2b, 0xeb, 0xd1, 0xd5, 0xfe, 0xad, 0x91, 0xd3, 0x80, 0xac, 0x47,
0x43, 0x40, 0x96, 0xa3, 0x06, 0xad, 0x39, 0x14, 0x83, 0x10, 0x51, 0xab, 0xe8, 0xe2, 0x25, 0xcc, 0x0d, 0x5a, 0x00, 0x29, 0x06, 0x21, 0xa2, 0x70, 0xd2, 0xc5, 0x6b, 0x98, 0xe1, 0x4b, 0x03, 0xf6,
0xf0, 0x5b, 0x03, 0xb6, 0xf3, 0x28, 0x4a, 0x19, 0xe2, 0x87, 0xd0, 0x50, 0x96, 0x11, 0xe5, 0x45, 0xf2, 0x5a, 0x94, 0x32, 0xc4, 0x0f, 0xa1, 0xa9, 0x2c, 0x23, 0x6a, 0x9d, 0x22, 0x4b, 0xa8, 0x03,
0x91, 0x25, 0xd4, 0x81, 0xf6, 0xaf, 0xe0, 0x09, 0xaf, 0xde, 0x4a, 0x18, 0x43, 0x53, 0xb1, 0x92, 0xed, 0x5f, 0xc2, 0x3d, 0x5e, 0x4a, 0x96, 0x30, 0x86, 0x06, 0xb1, 0x92, 0x87, 0xf8, 0x7b, 0x03,
0x57, 0xf1, 0x0f, 0x06, 0xec, 0x14, 0x2e, 0xff, 0x8e, 0xb5, 0xfc, 0x87, 0x01, 0x66, 0xc7, 0x8d, 0xf6, 0x0b, 0x97, 0x7f, 0xc7, 0x28, 0xff, 0x69, 0x80, 0xd9, 0x75, 0xe3, 0xf1, 0xd5, 0xa8, 0xc0,
0x47, 0x97, 0xc3, 0x02, 0xaf, 0xe7, 0x96, 0x35, 0x96, 0x5c, 0x76, 0x89, 0x60, 0x28, 0x4a, 0x01, 0xeb, 0xb9, 0x65, 0x8d, 0x35, 0x97, 0x5d, 0x23, 0x18, 0x8a, 0x52, 0x40, 0x75, 0xbd, 0x14, 0x50,
0xd5, 0xe5, 0x52, 0x40, 0xad, 0x28, 0x70, 0xde, 0x5f, 0xa0, 0x45, 0x29, 0x7b, 0x9a, 0xb0, 0x3a, 0x2b, 0x0a, 0x9c, 0xf7, 0x97, 0xa0, 0x28, 0x65, 0x4f, 0x13, 0x36, 0x46, 0x8b, 0xf1, 0x18, 0x93,
0x9c, 0x8f, 0x46, 0x98, 0x24, 0x24, 0x4e, 0x9a, 0xf4, 0x50, 0xe5, 0x17, 0x07, 0x56, 0x54, 0xad, 0x84, 0xc4, 0x49, 0x93, 0x6e, 0xaa, 0xfc, 0x14, 0xc3, 0x2a, 0xbc, 0x2d, 0x47, 0xb4, 0xec, 0x01,
0x3b, 0xa2, 0x65, 0xf7, 0xa1, 0xe1, 0x60, 0xe2, 0x4d, 0x7c, 0xaa, 0x1e, 0xb5, 0x5d, 0x72, 0xfa, 0x34, 0x1d, 0x4c, 0xbc, 0xa9, 0x4f, 0xe1, 0x89, 0xda, 0x86, 0x21, 0x9d, 0x24, 0xb5, 0x0d, 0x6f,
0x8e, 0x93, 0xba, 0x93, 0xb7, 0x96, 0xa0, 0x46, 0x07, 0x9a, 0xf2, 0x52, 0xa5, 0x72, 0xd9, 0x4f, 0xad, 0x41, 0x8d, 0x2e, 0xb4, 0xe4, 0xa5, 0x4a, 0xe5, 0xb2, 0x9f, 0xa6, 0x45, 0x74, 0xf7, 0xf5,
0xd3, 0xba, 0xb5, 0x73, 0xd3, 0x1f, 0xdf, 0x0f, 0xcf, 0x57, 0x06, 0xd4, 0xe8, 0x60, 0x7a, 0x9c, 0x60, 0x72, 0x3b, 0x7d, 0xde, 0x18, 0x50, 0xa3, 0x83, 0xe9, 0x76, 0x3a, 0x8c, 0x82, 0x4b, 0x6f,
0x0e, 0xa2, 0xe0, 0xc2, 0x9b, 0xe2, 0xc1, 0x65, 0x10, 0x07, 0x62, 0x21, 0x45, 0x46, 0x8f, 0xfe, 0x86, 0x87, 0x57, 0x41, 0x1c, 0x88, 0x85, 0x14, 0x19, 0xdd, 0xfa, 0xcf, 0xbc, 0xf1, 0xb5, 0xef,
0x63, 0x6f, 0x74, 0xe5, 0xbb, 0x33, 0x9c, 0x94, 0x7a, 0x49, 0x5b, 0x82, 0x50, 0x55, 0x20, 0x3c, 0xce, 0x71, 0x52, 0x77, 0x26, 0x6d, 0x49, 0x85, 0xaa, 0xa2, 0xc2, 0x7d, 0x80, 0x5e, 0x84, 0xdd,
0x05, 0xe8, 0x46, 0xd8, 0x8d, 0x31, 0xab, 0x28, 0xb8, 0x77, 0x25, 0x09, 0xf5, 0x46, 0x9f, 0x74, 0x18, 0xb3, 0x8a, 0x82, 0x7b, 0x57, 0x92, 0x50, 0x6f, 0x0c, 0x48, 0x77, 0x16, 0x8c, 0xaf, 0x59,
0xa6, 0xc1, 0xe8, 0x8a, 0x65, 0xff, 0x35, 0x27, 0x69, 0xda, 0xa3, 0xb4, 0x5a, 0xe6, 0x6a, 0x96, 0xf6, 0xdf, 0x74, 0x92, 0xa6, 0x3d, 0x4e, 0x4b, 0x77, 0x0e, 0xb3, 0xe4, 0x69, 0x8f, 0x1d, 0xee,
0xbc, 0x60, 0xb1, 0x8b, 0xb7, 0xc8, 0x91, 0xc0, 0xc7, 0x32, 0xdb, 0x33, 0xb9, 0xfd, 0xa5, 0x01, 0x45, 0x8e, 0x04, 0x3e, 0x96, 0xd9, 0x9e, 0xc9, 0xed, 0x3f, 0x1b, 0xb0, 0x2b, 0xbe, 0x42, 0xba,
0x5b, 0x62, 0x17, 0xd2, 0xb9, 0x39, 0x76, 0x67, 0x58, 0x5c, 0x0d, 0xa9, 0x84, 0x36, 0x93, 0xab, 0xaf, 0xcf, 0xdc, 0x39, 0x16, 0xe7, 0x54, 0x2a, 0xa1, 0xcd, 0xe4, 0x9c, 0x9a, 0xb4, 0xd1, 0x09,
0x61, 0xd2, 0x46, 0x87, 0x00, 0x03, 0x77, 0xe2, 0xf9, 0x72, 0xee, 0xfd, 0xa0, 0xa0, 0x54, 0x76, 0xc0, 0xd0, 0x9d, 0x7a, 0xbe, 0x9c, 0x7b, 0x3f, 0x2a, 0xa8, 0xdb, 0x1d, 0xfc, 0xf9, 0x02, 0x93,
0xf0, 0xe7, 0x73, 0x4c, 0xe2, 0x6c, 0xac, 0x23, 0xcd, 0x5b, 0x22, 0x4f, 0xfe, 0x99, 0x9f, 0x58, 0x38, 0x1b, 0xeb, 0x48, 0xf3, 0xd6, 0xc8, 0x93, 0x7f, 0xe1, 0x3b, 0x96, 0xa2, 0x19, 0x09, 0x51,
0x0a, 0x32, 0x12, 0xa2, 0x5d, 0x58, 0xa1, 0xc0, 0x93, 0x70, 0x95, 0x35, 0xe2, 0x1d, 0xe8, 0xa8, 0x07, 0xea, 0x54, 0xf1, 0x24, 0x5c, 0x65, 0x44, 0xbc, 0x03, 0x9d, 0x16, 0x28, 0xf8, 0xcd, 0x42,
0x00, 0xe0, 0xb7, 0x0b, 0x01, 0x92, 0x30, 0xf0, 0x09, 0x5e, 0x80, 0x30, 0xb1, 0xc1, 0x7c, 0x46, 0x05, 0x49, 0x18, 0xf8, 0x04, 0x2f, 0xd1, 0x30, 0xb1, 0xc1, 0x62, 0x4e, 0x44, 0xec, 0xa6, 0x6d,
0x44, 0xec, 0xa6, 0x6d, 0xfb, 0x6f, 0x06, 0x6c, 0x1c, 0x4c, 0x63, 0x1e, 0xef, 0xf7, 0x22, 0x20, 0xfb, 0xef, 0x06, 0x6c, 0x1f, 0xcf, 0x62, 0x1e, 0xef, 0xb7, 0x22, 0x20, 0x1d, 0x31, 0xbc, 0x0a,
0x1d, 0x31, 0xb8, 0x0c, 0x7c, 0x7c, 0x3c, 0x9f, 0x9d, 0xe3, 0x88, 0xed, 0x54, 0x75, 0x64, 0x91, 0x7c, 0x7c, 0xb6, 0x98, 0x3f, 0xc7, 0x11, 0xfb, 0x52, 0xd5, 0x91, 0x45, 0x0a, 0xeb, 0x6a, 0x1a,
0xc2, 0xba, 0x9a, 0xc6, 0xba, 0x6d, 0x58, 0x39, 0x9a, 0xb9, 0xde, 0x54, 0x54, 0x0e, 0xbc, 0x21, 0xeb, 0xf6, 0xa0, 0x7e, 0x3a, 0x77, 0xbd, 0x99, 0xa8, 0x1c, 0x78, 0x43, 0x3a, 0x1f, 0x4d, 0x44,
0x5d, 0x49, 0xc6, 0xa2, 0x0a, 0x4e, 0xdb, 0xf6, 0x01, 0x34, 0x24, 0xe4, 0x65, 0x38, 0x65, 0xff, 0x15, 0x9c, 0xb6, 0xed, 0x63, 0x68, 0x4a, 0x9a, 0x97, 0xe1, 0x94, 0xfd, 0x27, 0x03, 0x1a, 0x89,
0xc9, 0x80, 0x7a, 0xe2, 0x99, 0xe4, 0xc8, 0x90, 0x94, 0x34, 0xf2, 0x4a, 0x3e, 0x0c, 0x67, 0x64, 0x67, 0x92, 0x2d, 0x43, 0x02, 0x69, 0xe4, 0x41, 0xbe, 0x1d, 0xce, 0xc8, 0xac, 0xac, 0xaa, 0xac,
0x56, 0x56, 0x55, 0x56, 0xda, 0x7f, 0x37, 0x60, 0x23, 0xc3, 0x74, 0xcf, 0x50, 0xa9, 0x16, 0x85, 0xb4, 0xff, 0x61, 0xc0, 0x76, 0xa6, 0xd3, 0x2d, 0x43, 0xa5, 0x5a, 0x14, 0x2a, 0x1a, 0xaf, 0xaa,
0x8a, 0xc6, 0xab, 0xea, 0x43, 0xf0, 0xaa, 0xa6, 0xf1, 0xea, 0x2b, 0x03, 0xe0, 0x60, 0x3c, 0x4e, 0x6f, 0x83, 0x57, 0x35, 0x8d, 0x57, 0x6f, 0x0c, 0x80, 0xe3, 0xc9, 0x24, 0x61, 0xd5, 0x6a, 0xc3,
0x58, 0x75, 0xb7, 0x61, 0x35, 0xf6, 0x08, 0x7e, 0xc9, 0xec, 0x59, 0x94, 0x97, 0x10, 0xd4, 0x24, 0x6a, 0xec, 0x11, 0xfc, 0x92, 0xd9, 0xb3, 0x2c, 0x2f, 0x21, 0xa8, 0x49, 0x8c, 0x62, 0xbf, 0x15,
0x46, 0xb1, 0xdf, 0x0a, 0x6f, 0x56, 0x34, 0xde, 0x7c, 0x0a, 0xf5, 0x14, 0x59, 0x29, 0xd6, 0xfc, 0xde, 0xd4, 0x35, 0xde, 0x7c, 0x0a, 0x8d, 0x54, 0xb3, 0x52, 0xac, 0xf9, 0xa3, 0x01, 0xdb, 0x2c,
0xd1, 0x80, 0x0d, 0x96, 0xd8, 0xee, 0x8a, 0x99, 0x0f, 0xa1, 0x79, 0xe4, 0x8f, 0x0f, 0x3d, 0xe2, 0xb1, 0xad, 0x8a, 0x99, 0x8f, 0xa1, 0x75, 0xea, 0x4f, 0x4e, 0x3c, 0xe2, 0x3e, 0x9f, 0xf1, 0xac,
0x9e, 0x4f, 0x79, 0xd6, 0x14, 0x75, 0xb8, 0x2a, 0xbd, 0x3b, 0x85, 0x28, 0xfa, 0xd4, 0xf2, 0x71, 0x29, 0xea, 0x70, 0x55, 0xba, 0x3a, 0x85, 0x28, 0x78, 0x6a, 0xf9, 0x38, 0x90, 0xb4, 0x29, 0x85,
0x20, 0xa1, 0x29, 0xa5, 0xd1, 0x05, 0x34, 0x4f, 0xfd, 0xa5, 0x54, 0xba, 0x3b, 0x0d, 0xc8, 0x50, 0xe8, 0x12, 0x5a, 0xcf, 0xfc, 0xb5, 0x20, 0xad, 0x4e, 0x03, 0xb2, 0xaa, 0x55, 0x4d, 0xd5, 0x1e,
0xab, 0x1a, 0xd4, 0x2e, 0x6c, 0x2a, 0xfb, 0x94, 0x02, 0xfb, 0x57, 0x83, 0x3d, 0xd8, 0xa5, 0xcb, 0xec, 0x28, 0xdf, 0x29, 0xa5, 0xec, 0xdf, 0x0c, 0x76, 0x7b, 0x98, 0x2e, 0xc3, 0x22, 0x57, 0x8d,
0xb0, 0xc8, 0x55, 0xe3, 0xd2, 0x78, 0x98, 0x5c, 0x5e, 0xa0, 0x9d, 0x2d, 0xb9, 0xfe, 0x78, 0x3e, 0x4b, 0xe3, 0xed, 0xe4, 0xf2, 0x02, 0x74, 0xb6, 0xe4, 0xfa, 0xb3, 0xc5, 0x5c, 0xe4, 0x53, 0x45,
0x13, 0xf9, 0x54, 0x91, 0xd9, 0x5f, 0xc0, 0x7a, 0xda, 0xa6, 0xb1, 0x48, 0xff, 0x0b, 0x48, 0x4a, 0x66, 0x7f, 0x01, 0x5b, 0x69, 0x9b, 0xc6, 0x22, 0xfd, 0x2f, 0x54, 0x52, 0x62, 0x91, 0xf5, 0x3f,
0x2c, 0xb2, 0xfe, 0x67, 0xd0, 0xea, 0xe0, 0x89, 0xe7, 0xe7, 0x59, 0x92, 0x93, 0x17, 0xf0, 0xa9, 0x80, 0x76, 0x17, 0x4f, 0x3d, 0x3f, 0xcf, 0x92, 0x9c, 0xbc, 0x80, 0x4f, 0xd5, 0x22, 0x3e, 0xd9,
0x5a, 0xc4, 0x27, 0xfb, 0xdf, 0xfc, 0x28, 0x94, 0x2d, 0x54, 0x2a, 0x8f, 0xec, 0x03, 0x64, 0x6b, 0xff, 0xe6, 0x5b, 0xa1, 0x6c, 0xa1, 0x52, 0x79, 0xe4, 0x08, 0x20, 0x5b, 0x43, 0x64, 0x93, 0x1d,
0x88, 0x6c, 0xb2, 0xc9, 0x67, 0x64, 0x4e, 0x94, 0x86, 0xbc, 0x8b, 0xc4, 0x32, 0x60, 0x37, 0x9f, 0x3e, 0x23, 0x73, 0xa2, 0x34, 0xe4, 0x5d, 0x24, 0x96, 0x21, 0x3b, 0xf9, 0xa4, 0xdf, 0x4c, 0xea,
0x74, 0xcf, 0xa4, 0x6e, 0xda, 0x81, 0x55, 0xda, 0x3c, 0xf3, 0xfe, 0xff, 0xc2, 0xe9, 0x88, 0xdd, 0xa6, 0x7d, 0xd8, 0xa0, 0xcd, 0x0b, 0xef, 0xab, 0x17, 0x4e, 0xa7, 0xec, 0x14, 0xa3, 0xad, 0x48,
0x62, 0xb4, 0x15, 0x49, 0x88, 0xbe, 0x23, 0xb9, 0x51, 0x64, 0xfa, 0x9c, 0xf2, 0xd9, 0x08, 0xfb, 0x42, 0xf4, 0x6d, 0xc9, 0x8d, 0x22, 0xd3, 0xe7, 0xc0, 0x67, 0x23, 0xec, 0x4b, 0x68, 0x66, 0xb7,
0x02, 0x1a, 0xd9, 0x43, 0xf8, 0xfd, 0x20, 0xdd, 0x1a, 0x43, 0x1d, 0xf9, 0xb1, 0xbf, 0x9c, 0x63, 0xf2, 0xb7, 0x53, 0xe9, 0xc6, 0x18, 0xea, 0xca, 0x2f, 0x0f, 0xe5, 0x1c, 0xfb, 0xf0, 0x7f, 0x0d,
0x9f, 0x7f, 0x59, 0xe7, 0x27, 0x04, 0xfa, 0x24, 0x3d, 0xff, 0xd8, 0x8b, 0xce, 0x36, 0x9f, 0xa5, 0xbe, 0x43, 0xa0, 0x4f, 0xd2, 0xfd, 0x8f, 0xdd, 0xe8, 0xec, 0xf1, 0x59, 0xea, 0xc5, 0xae, 0xf5,
0xbe, 0xa5, 0x5a, 0xef, 0x15, 0x48, 0x49, 0x88, 0xba, 0xd0, 0x54, 0xdf, 0xe9, 0xd0, 0x8e, 0x60, 0x5e, 0x81, 0x94, 0x84, 0xa8, 0x07, 0x2d, 0xf5, 0xf6, 0x11, 0xed, 0x0b, 0x76, 0xeb, 0xf7, 0xa3,
0xb7, 0xfe, 0x24, 0x69, 0x99, 0xc5, 0x1d, 0x24, 0xa4, 0x00, 0xa4, 0xcf, 0x07, 0x09, 0x00, 0xf5, 0x96, 0x59, 0xdc, 0x41, 0x42, 0xf4, 0x2b, 0xd8, 0x5f, 0x72, 0xeb, 0x87, 0x3a, 0x7c, 0xd2, 0xf2,
0x6b, 0x46, 0x02, 0x40, 0xff, 0xce, 0xf0, 0x63, 0x76, 0x50, 0xa6, 0x0f, 0xf7, 0x28, 0xc3, 0x29, 0x8b, 0x49, 0xeb, 0xc3, 0x15, 0x23, 0x48, 0x48, 0x01, 0x4a, 0x6f, 0x25, 0x09, 0x40, 0xf5, 0xe9,
0x7f, 0x1d, 0xb0, 0x9e, 0x14, 0x89, 0xf9, 0x74, 0xf9, 0xdd, 0x3a, 0x99, 0xae, 0xbd, 0xd2, 0x27, 0x26, 0x01, 0xa8, 0x3f, 0xaa, 0xfc, 0x98, 0x6d, 0xc4, 0xe9, 0x2b, 0x05, 0xca, 0xec, 0x20, 0x3f,
0xd3, 0x73, 0x0f, 0xe8, 0x2f, 0x59, 0x51, 0xab, 0xbc, 0x22, 0x99, 0xe9, 0x4e, 0xda, 0xeb, 0x84, 0x85, 0x58, 0xf7, 0x8a, 0xc4, 0x7c, 0xba, 0x7c, 0x49, 0x9f, 0x4c, 0xd7, 0x9e, 0x24, 0x92, 0xe9,
0xf5, 0xfe, 0x82, 0x1e, 0x12, 0x22, 0x87, 0x11, 0x5a, 0xbf, 0x61, 0xa2, 0xaf, 0xcb, 0xa8, 0xf5, 0xb9, 0xd7, 0x82, 0xc7, 0xac, 0x68, 0x56, 0x6e, 0xa9, 0xcc, 0xf4, 0x4b, 0xda, 0xed, 0x87, 0xf5,
0x2b, 0x9f, 0xf5, 0x8d, 0x5b, 0x7a, 0x49, 0x88, 0xfa, 0x2c, 0x43, 0xaa, 0x0b, 0x16, 0x43, 0x60, 0xfe, 0x92, 0x1e, 0x12, 0x22, 0x87, 0x05, 0x8c, 0x7e, 0x82, 0x45, 0x5f, 0x93, 0xb5, 0xd6, 0x8f,
0xab, 0x59, 0x8b, 0xba, 0x48, 0x88, 0x7e, 0x01, 0xef, 0x15, 0x5e, 0xd9, 0xd0, 0x53, 0x11, 0x0b, 0x94, 0xd6, 0xd7, 0x6f, 0xe8, 0x25, 0x21, 0x1a, 0xb0, 0x0c, 0xac, 0x2e, 0x58, 0xac, 0x02, 0x5b,
0x0b, 0x6e, 0xa5, 0xd6, 0x37, 0x6f, 0xed, 0xe7, 0x06, 0x1c, 0x16, 0x1b, 0x70, 0xb8, 0xd0, 0x80, 0xcd, 0x5a, 0xd6, 0x45, 0x42, 0xf4, 0x73, 0x78, 0xaf, 0xf0, 0x48, 0x88, 0xee, 0x8b, 0x58, 0x5b,
0x45, 0xcf, 0x6a, 0x9f, 0x41, 0x43, 0x79, 0x57, 0x42, 0x4f, 0xd2, 0xb1, 0xca, 0xc3, 0x99, 0xb5, 0x72, 0xea, 0xb5, 0xbe, 0x71, 0x63, 0x3f, 0x37, 0xe0, 0xa8, 0xd8, 0x80, 0xa3, 0xa5, 0x06, 0x2c,
0x53, 0x28, 0xe7, 0x24, 0x94, 0xee, 0x27, 0x5a, 0x14, 0x88, 0x0c, 0xa3, 0x45, 0x41, 0x9a, 0x25, 0xba, 0xb6, 0xfb, 0x0c, 0x9a, 0xca, 0xbd, 0x15, 0xba, 0x97, 0x8e, 0x55, 0x2e, 0xe6, 0xac, 0xfd,
0xba, 0xe9, 0x15, 0x4e, 0xd4, 0xf6, 0x49, 0x14, 0xe4, 0xee, 0x22, 0x96, 0x59, 0xdc, 0x41, 0x42, 0x42, 0x39, 0x27, 0xa1, 0x74, 0xfe, 0xd1, 0xa2, 0x4c, 0x64, 0x30, 0x2d, 0xca, 0xd2, 0x2c, 0xd4,
0xf4, 0x82, 0x7d, 0x5a, 0x11, 0x77, 0x49, 0xf4, 0x98, 0x8f, 0x53, 0x2e, 0xaa, 0xd6, 0x76, 0x5e, 0x4b, 0x8f, 0x88, 0xe2, 0xec, 0x90, 0x44, 0x59, 0xee, 0xac, 0x63, 0x99, 0xc5, 0x1d, 0x24, 0x44,
0x48, 0x42, 0xf4, 0x7d, 0x58, 0x4f, 0x6b, 0x60, 0x24, 0x2e, 0xfc, 0x72, 0x39, 0x6f, 0x3d, 0xce, 0x8f, 0xd8, 0x3b, 0x92, 0x38, 0xab, 0xa2, 0xbb, 0x7c, 0x9c, 0x72, 0x10, 0xb6, 0xf6, 0xf2, 0x42,
0xc9, 0x48, 0x88, 0xbe, 0x07, 0x6b, 0x09, 0x08, 0xb4, 0xa5, 0x82, 0xa2, 0x73, 0x90, 0x2e, 0x22, 0x12, 0xa2, 0xef, 0xc3, 0x56, 0x5a, 0x63, 0x23, 0x71, 0xa1, 0x20, 0x1f, 0x17, 0xac, 0xbb, 0x39,
0x21, 0x6a, 0xc3, 0xaa, 0x28, 0x9a, 0x90, 0x48, 0x2d, 0x59, 0x75, 0x67, 0x6d, 0x69, 0x12, 0x0e, 0x19, 0x09, 0xd1, 0x77, 0x61, 0x33, 0x51, 0x02, 0xed, 0xaa, 0x4a, 0xd1, 0x39, 0x48, 0x17, 0x91,
0x2c, 0x3b, 0x03, 0x91, 0x9e, 0x36, 0x33, 0x60, 0x6a, 0x31, 0xf0, 0x09, 0xd4, 0xa5, 0xfa, 0x20, 0x10, 0x1d, 0xc2, 0x86, 0x28, 0xca, 0x90, 0x48, 0x5d, 0x59, 0xf5, 0x68, 0xed, 0x6a, 0x12, 0xae,
0x71, 0x84, 0x5a, 0x9a, 0x24, 0x8e, 0xd0, 0x0b, 0x89, 0xcf, 0xa0, 0xa1, 0x9c, 0x79, 0x28, 0x8b, 0x58, 0xb6, 0xc7, 0x22, 0x3d, 0x2d, 0x67, 0x8a, 0xa9, 0xc5, 0xc6, 0x27, 0xd0, 0x90, 0xea, 0x8f,
0x7b, 0xa5, 0x54, 0xb0, 0x76, 0x0a, 0xe5, 0x69, 0xd4, 0x28, 0x07, 0x81, 0x14, 0x35, 0xfa, 0x91, 0xc4, 0x11, 0x6a, 0xe9, 0x93, 0x38, 0x42, 0x2f, 0x54, 0x3e, 0x83, 0xa6, 0xb2, 0xa7, 0xa2, 0x2c,
0x23, 0x45, 0x4d, 0xfe, 0xec, 0x78, 0x01, 0x90, 0x65, 0xab, 0xc4, 0xa1, 0xca, 0xf1, 0x60, 0x6d, 0xee, 0x95, 0x52, 0xc4, 0xda, 0x2f, 0x94, 0xa7, 0x51, 0xa3, 0x6c, 0x34, 0x52, 0xd4, 0xe8, 0x5b,
0xe7, 0x85, 0x24, 0xec, 0x34, 0x7e, 0x59, 0x6f, 0xb3, 0x8f, 0xcd, 0x3f, 0xa2, 0x7f, 0xce, 0x1f, 0x9a, 0x14, 0x35, 0xf9, 0xbd, 0xe9, 0x11, 0x40, 0x96, 0xad, 0x12, 0x87, 0x2a, 0xdb, 0x8f, 0xb5,
0xb1, 0x4f, 0x26, 0x1f, 0xff, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x3a, 0x5b, 0xa4, 0x32, 0x85, 0x1e, 0x97, 0x17, 0x92, 0xb0, 0xdb, 0xfc, 0x45, 0xe3, 0x90, 0x3d, 0x98, 0xff, 0x88, 0xfe, 0x79, 0x7e,
0x00, 0x00, 0x87, 0xbd, 0x86, 0x7f, 0xef, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x32, 0x71, 0xc8, 0xa6, 0x49,
0x1f, 0x00, 0x00,
} }

View File

@ -1,6 +1,5 @@
syntax = "proto3"; syntax = "proto3";
import "Open_IM/pkg/proto/sdk_ws/ws.proto"; import "Open_IM/pkg/proto/sdk_ws/ws.proto";
import "Open_IM/pkg/proto/sdk_ws/wrappers.proto";
option go_package = "./user;user"; option go_package = "./user;user";
package user; package user;
@ -63,11 +62,18 @@ message UpdateUserInfoReq{
server_api_params.UserInfo UserInfo = 1; server_api_params.UserInfo UserInfo = 1;
string OpUserID = 2; string OpUserID = 2;
string operationID = 3; string operationID = 3;
google.protobuf.Int32Value globalRecvMsgOpt = 4;
} }
message UpdateUserInfoResp{ message UpdateUserInfoResp{
CommonResp commonResp = 1; CommonResp commonResp = 1;
} }
message SetGlobalRecvMessageOptReq{
string userID = 1;
string operationID = 2;
int32 globalRecvMsgOpt = 3;
}
message SetGlobalRecvMessageOptResp{
CommonResp commonResp = 1;
}
message Conversation{ message Conversation{
string OwnerUserID = 1; string OwnerUserID = 1;
@ -295,6 +301,7 @@ message DeleteUserResp {
service user { service user {
rpc GetUserInfo(GetUserInfoReq) returns(GetUserInfoResp); rpc GetUserInfo(GetUserInfoReq) returns(GetUserInfoResp);
rpc UpdateUserInfo(UpdateUserInfoReq) returns(UpdateUserInfoResp); rpc UpdateUserInfo(UpdateUserInfoReq) returns(UpdateUserInfoResp);
rpc SetGlobalRecvMessageOpt(SetGlobalRecvMessageOptReq) returns(SetGlobalRecvMessageOptResp);
rpc DeleteUsers(DeleteUsersReq)returns(DeleteUsersResp); rpc DeleteUsers(DeleteUsersReq)returns(DeleteUsersResp);
rpc GetAllUserID(GetAllUserIDReq)returns(GetAllUserIDResp); rpc GetAllUserID(GetAllUserIDReq)returns(GetAllUserIDResp);

View File

@ -5,10 +5,10 @@
#fixme Put the shell script name here #fixme Put the shell script name here
need_to_start_server_shell=( need_to_start_server_shell=(
start_rpc_service.sh start_rpc_service.sh
msg_gateway_start.sh
push_start.sh push_start.sh
msg_transfer_start.sh msg_transfer_start.sh
sdk_svr_start.sh sdk_svr_start.sh
msg_gateway_start.sh
demo_svr_start.sh demo_svr_start.sh
) )
time=`date +"%Y-%m-%d %H:%M:%S"` time=`date +"%Y-%m-%d %H:%M:%S"`