mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +08:00
more debug.
This commit is contained in:
parent
2c22d99708
commit
a23475a1ed
@ -122,6 +122,7 @@ func NewClientMd5(uin int64, passwordMd5 [16]byte) *QQClient {
|
||||
"OnlinePush.PbPushTransMsg": decodeOnlinePushTransPacket,
|
||||
"ConfigPushSvc.PushReq": decodePushReqPacket,
|
||||
"MessageSvc.PbGetMsg": decodeMessageSvcPacket,
|
||||
"MessageSvc.PbSendMsg": decodeMsgSendResponse,
|
||||
"MessageSvc.PushForceOffline": decodeForceOfflinePacket,
|
||||
"friendlist.getFriendGroupList": decodeFriendGroupListResponse,
|
||||
"friendlist.GetTroopListReqV2": decodeGroupListResponse,
|
||||
@ -812,6 +813,7 @@ func (c *QQClient) connect() error {
|
||||
c.server = servers[rand.Intn(len(servers))]
|
||||
}
|
||||
}
|
||||
c.Info("connect to server: %v", c.server.String())
|
||||
conn, err := net.DialTCP("tcp", nil, c.server)
|
||||
if err != nil {
|
||||
return err
|
||||
@ -884,8 +886,9 @@ func (c *QQClient) sendAndWait(seq uint16, pkt []byte) (interface{}, error) {
|
||||
continue
|
||||
}
|
||||
c.handlers.Delete(seq)
|
||||
println("Packet Timed out")
|
||||
return nil, errors.New("time out")
|
||||
c.Error("packet timed out, seq: %v", seq)
|
||||
//println("Packet Timed out")
|
||||
return nil, errors.New("timeout")
|
||||
}
|
||||
}
|
||||
return nil, nil
|
||||
@ -915,7 +918,8 @@ func (c *QQClient) netLoop() {
|
||||
data, err := reader.ReadBytes(int(l) - 4)
|
||||
pkt, err := packets.ParseIncomingPacket(data, c.sigInfo.d2Key)
|
||||
if err != nil {
|
||||
log.Println("parse incoming packet error: " + err.Error())
|
||||
c.Error("parse incoming packer error: %v", err)
|
||||
//log.Println("parse incoming packet error: " + err.Error())
|
||||
continue
|
||||
}
|
||||
payload := pkt.Payload
|
||||
@ -926,11 +930,12 @@ func (c *QQClient) netLoop() {
|
||||
}
|
||||
}
|
||||
retry = 0
|
||||
//fmt.Println(pkt.CommandName, pkt.SequenceId)
|
||||
c.Debug("rev pkt: %v seq: %v", pkt.CommandName, pkt.SequenceId)
|
||||
go func() {
|
||||
defer func() {
|
||||
if pan := recover(); pan != nil {
|
||||
fmt.Println("panic on decoder:", pan)
|
||||
c.Error("panic on decoder: %v", pan)
|
||||
//fmt.Println("panic on decoder:", pan)
|
||||
}
|
||||
}()
|
||||
decoder, ok := c.decoders[pkt.CommandName]
|
||||
|
@ -298,6 +298,17 @@ func decodeGroupMessagePacket(c *QQClient, _ uint16, payload []byte) (interface{
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func decodeMsgSendResponse(c *QQClient, _ uint16, payload []byte) (interface{}, error) {
|
||||
rsp := msg.SendMessageResponse{}
|
||||
if err := proto.Unmarshal(payload, &rsp); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if rsp.Result != 0 {
|
||||
c.Error("send msg error: %v %v", rsp.Result, rsp.ErrMsg)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func decodeSvcNotify(c *QQClient, _ uint16, _ []byte) (interface{}, error) {
|
||||
c.msgSvcLock.Lock()
|
||||
defer c.msgSvcLock.Unlock()
|
||||
|
@ -149,6 +149,11 @@ type (
|
||||
client *QQClient
|
||||
}
|
||||
|
||||
LogEvent struct {
|
||||
Type string
|
||||
Message string
|
||||
}
|
||||
|
||||
NewFriendEvent struct {
|
||||
Friend *FriendInfo
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ type eventHandlers struct {
|
||||
friendRequestHandlers []func(*QQClient, *NewFriendRequest)
|
||||
newFriendHandlers []func(*QQClient, *NewFriendEvent)
|
||||
disconnectHandlers []func(*QQClient, *ClientDisconnectedEvent)
|
||||
logHandlers []func(*QQClient, *LogEvent)
|
||||
groupMessageReceiptHandlers sync.Map
|
||||
}
|
||||
|
||||
@ -98,6 +99,10 @@ func (c *QQClient) OnDisconnected(f func(*QQClient, *ClientDisconnectedEvent)) {
|
||||
c.eventHandlers.disconnectHandlers = append(c.eventHandlers.disconnectHandlers, f)
|
||||
}
|
||||
|
||||
func (c *QQClient) OnLog(f func(*QQClient, *LogEvent)) {
|
||||
c.eventHandlers.logHandlers = append(c.eventHandlers.logHandlers, f)
|
||||
}
|
||||
|
||||
func NewUinFilterPrivate(uin int64) func(*message.PrivateMessage) bool {
|
||||
return func(msg *message.PrivateMessage) bool {
|
||||
return msg.Sender.Uin == uin
|
||||
@ -295,6 +300,17 @@ func (c *QQClient) dispatchDisconnectEvent(e *ClientDisconnectedEvent) {
|
||||
}
|
||||
}
|
||||
|
||||
func (c *QQClient) dispatchLogEvent(e *LogEvent) {
|
||||
if e == nil {
|
||||
return
|
||||
}
|
||||
for _, f := range c.eventHandlers.logHandlers {
|
||||
cover(func() {
|
||||
f(c, e)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func cover(f func()) {
|
||||
defer func() {
|
||||
if pan := recover(); pan != nil {
|
||||
|
@ -340,3 +340,24 @@ func genLongTemplate(resId, brief string, ts int64) *message.SendingMessage {
|
||||
},
|
||||
}}
|
||||
}
|
||||
|
||||
func (c *QQClient) Info(msg string, args ...interface{}) {
|
||||
c.dispatchLogEvent(&LogEvent{
|
||||
Type: "INFO",
|
||||
Message: fmt.Sprintf(msg, args),
|
||||
})
|
||||
}
|
||||
|
||||
func (c *QQClient) Error(msg string, args ...interface{}) {
|
||||
c.dispatchLogEvent(&LogEvent{
|
||||
Type: "ERROR",
|
||||
Message: fmt.Sprintf(msg, args),
|
||||
})
|
||||
}
|
||||
|
||||
func (c *QQClient) Debug(msg string, args ...interface{}) {
|
||||
c.dispatchLogEvent(&LogEvent{
|
||||
Type: "DEBUG",
|
||||
Message: fmt.Sprintf(msg, args),
|
||||
})
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -32,7 +32,11 @@ message SendMessageRequest {
|
||||
MsgCtrl msgCtrl = 12;
|
||||
//ImReceipt.ReceiptReq? receiptReq = 13;
|
||||
int32 multiSendSeq = 14;
|
||||
}
|
||||
|
||||
message SendMessageResponse {
|
||||
int32 result = 1;
|
||||
string errMsg = 2;
|
||||
}
|
||||
|
||||
message MsgWithDrawReq {
|
||||
|
Loading…
x
Reference in New Issue
Block a user