other: 优化 server 包消息分发 cancel 处理逻辑
This commit is contained in:
parent
82ecb98397
commit
e60017c0eb
|
@ -702,28 +702,31 @@ func (slf *Server) dispatchMessage(dispatcher *dispatcher, msg *Message) {
|
||||||
}
|
}
|
||||||
|
|
||||||
present := time.Now()
|
present := time.Now()
|
||||||
if msg.t != MessageTypeAsync && msg.t != MessageTypeUniqueAsync && msg.t != MessageTypeShuntAsync && msg.t != MessageTypeUniqueShuntAsync {
|
defer func(msg *Message) {
|
||||||
defer func(msg *Message) {
|
super.Handle(cancel)
|
||||||
|
if msg.t != MessageTypeAsync && msg.t != MessageTypeUniqueAsync && msg.t != MessageTypeShuntAsync && msg.t != MessageTypeUniqueShuntAsync {
|
||||||
if err := recover(); err != nil {
|
if err := recover(); err != nil {
|
||||||
stack := string(debug.Stack())
|
stack := string(debug.Stack())
|
||||||
log.Error("Server", log.String("MessageType", messageNames[msg.t]), log.String("Info", msg.String()), log.Any("error", err), log.String("stack", stack))
|
log.Error("Server", log.String("MessageType", messageNames[msg.t]), log.String("Info", msg.String()), log.Any("error", err), log.String("stack", stack))
|
||||||
fmt.Println(stack)
|
fmt.Println(stack)
|
||||||
slf.OnMessageErrorEvent(msg, fmt.Errorf("%v", err))
|
e, ok := err.(error)
|
||||||
|
if !ok {
|
||||||
|
e = fmt.Errorf("%v", err)
|
||||||
|
}
|
||||||
|
slf.OnMessageErrorEvent(msg, e)
|
||||||
}
|
}
|
||||||
if msg.t == MessageTypeUniqueAsyncCallback || msg.t == MessageTypeUniqueShuntAsyncCallback {
|
if msg.t == MessageTypeUniqueAsyncCallback || msg.t == MessageTypeUniqueShuntAsyncCallback {
|
||||||
dispatcher.antiUnique(msg.name)
|
dispatcher.antiUnique(msg.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
super.Handle(cancel)
|
|
||||||
slf.low(msg, present, time.Millisecond*100)
|
slf.low(msg, present, time.Millisecond*100)
|
||||||
slf.messageCounter.Add(-1)
|
slf.messageCounter.Add(-1)
|
||||||
|
|
||||||
if !slf.isShutdown.Load() {
|
if !slf.isShutdown.Load() {
|
||||||
slf.messagePool.Release(msg)
|
slf.messagePool.Release(msg)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}(msg)
|
}(msg)
|
||||||
}
|
|
||||||
|
|
||||||
switch msg.t {
|
switch msg.t {
|
||||||
case MessageTypePacket:
|
case MessageTypePacket:
|
||||||
|
@ -753,9 +756,11 @@ func (slf *Server) dispatchMessage(dispatcher *dispatcher, msg *Message) {
|
||||||
stack := string(debug.Stack())
|
stack := string(debug.Stack())
|
||||||
log.Error("Server", log.String("MessageType", messageNames[msg.t]), log.Any("error", err), log.String("stack", stack))
|
log.Error("Server", log.String("MessageType", messageNames[msg.t]), log.Any("error", err), log.String("stack", stack))
|
||||||
fmt.Println(stack)
|
fmt.Println(stack)
|
||||||
if e, ok := err.(error); ok {
|
e, ok := err.(error)
|
||||||
slf.OnMessageErrorEvent(msg, e)
|
if !ok {
|
||||||
|
e = fmt.Errorf("%v", err)
|
||||||
}
|
}
|
||||||
|
slf.OnMessageErrorEvent(msg, e)
|
||||||
}
|
}
|
||||||
super.Handle(cancel)
|
super.Handle(cancel)
|
||||||
slf.low(msg, present, time.Second)
|
slf.low(msg, present, time.Second)
|
||||||
|
|
Loading…
Reference in New Issue