import (
"container/list"
"context"
+ "fmt"
"runtime"
"sync/atomic"
"time"
funcs *list.List
someNeedRemove atomic.Int32
lock sync.RWMutex
+ runMap sync.Map
}
type FuncMap map[string]func(any) (disable bool)
}
func (m *Msgq) Push_tag(Tag string, Data any) {
+ defer func() {
+ if e := recover(); e != nil {
+ panic(fmt.Sprintf("Push_tag(%s,%v) > %v", Tag, Data, e))
+ }
+ }()
m.Push(Msgq_tag_data{
Tag: Tag,
Data: Data,
}
func (m *Msgq) PushLock_tag(Tag string, Data any) {
+ defer func() {
+ if e := recover(); e != nil {
+ panic(fmt.Sprintf("PushLock_tag(%s,%v) > %v", Tag, Data, e))
+ }
+ }()
m.PushLock(Msgq_tag_data{
Tag: Tag,
Data: Data,
}
func (m *MsgType[T]) Push_tag(Tag string, Data T) {
+ defer func() {
+ if e := recover(); e != nil {
+ panic(fmt.Sprintf("Push_tag(%s,%v) > %v", Tag, Data, e))
+ }
+ }()
m.m.Push(Msgq_tag_data{
Tag: Tag,
Data: Data,
}
func (m *MsgType[T]) PushLock_tag(Tag string, Data T) {
+ defer func() {
+ if e := recover(); e != nil {
+ panic(fmt.Sprintf("PushLock_tag(%s,%v) > %v", Tag, Data, e))
+ }
+ }()
m.m.PushLock(Msgq_tag_data{
Tag: Tag,
Data: Data,
func TestPushLock(t *testing.T) {
defer func() {
- if e := recover(); e.(string) != "timeout to wait rlock, rlc:1" {
+ if e := recover(); e.(string) != "Push_tag(test,<nil>) > PushLock_tag(lock,<nil>) > timeout to wait rlock, rlc:1" {
t.Fatal(e)
}
}()