70 lines
1.4 KiB
Go
70 lines
1.4 KiB
Go
package grpc
|
|
|
|
import (
|
|
"github.com/golang/protobuf/proto"
|
|
comet "gitlab.33.cn/chat/im/api/comet/grpc"
|
|
xproto "gitlab.33.cn/chat/imparse/proto"
|
|
)
|
|
|
|
func noticeMsgData(channelType int32, from, target string, seq string, data []byte) ([]byte, error) {
|
|
var p comet.Proto
|
|
var err error
|
|
p.Op = int32(comet.Op_SendMsg)
|
|
p.Ver = 1
|
|
p.Seq = 0
|
|
|
|
eventProto := &xproto.Proto{
|
|
EventType: xproto.Proto_common,
|
|
}
|
|
comm := &xproto.Common{
|
|
ChannelType: xproto.Channel(channelType),
|
|
Seq: seq,
|
|
From: from,
|
|
Target: target,
|
|
MsgType: xproto.MsgType_Notice,
|
|
Msg: data,
|
|
}
|
|
eventProto.Body, err = proto.Marshal(comm)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
p.Body, err = proto.Marshal(eventProto)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
bytes, err := proto.Marshal(&p)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return bytes, nil
|
|
}
|
|
|
|
func signalBody(target string, tp xproto.SignalType, actionData []byte) ([]byte, error) {
|
|
var p comet.Proto
|
|
var err error
|
|
p.Op = int32(comet.Op_SendMsg)
|
|
p.Ver = 1
|
|
p.Seq = 0
|
|
|
|
eventProto := &xproto.Proto{
|
|
EventType: xproto.Proto_Signal,
|
|
}
|
|
noticeProto := &xproto.Signal{
|
|
Type: tp,
|
|
}
|
|
noticeProto.Body = actionData
|
|
eventProto.Body, err = proto.Marshal(noticeProto)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
p.Body, err = proto.Marshal(eventProto)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
bytes, err := proto.Marshal(&p)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return bytes, nil
|
|
}
|