]> 127.0.0.1 Git - part/.git/commitdiff
add
authorqydysky <qydysky@foxmail.com>
Sat, 13 May 2023 16:17:13 +0000 (00:17 +0800)
committerqydysky <qydysky@foxmail.com>
Sat, 13 May 2023 16:17:13 +0000 (00:17 +0800)
msgq/Msgq.go
msgq/Msgq_test.go

index cbe8ab3d03ee4db9b7029e89b74b74e91867cabb..739b8b729a0b24412a31b8d265c9a81995809001 100644 (file)
@@ -3,6 +3,7 @@ package part
 import (
        "container/list"
        "context"
+       "fmt"
        "runtime"
        "sync/atomic"
        "time"
@@ -16,6 +17,7 @@ type Msgq struct {
        funcs          *list.List
        someNeedRemove atomic.Int32
        lock           sync.RWMutex
+       runMap         sync.Map
 }
 
 type FuncMap map[string]func(any) (disable bool)
@@ -132,6 +134,11 @@ type Msgq_tag_data struct {
 }
 
 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,
@@ -139,6 +146,11 @@ func (m *Msgq) Push_tag(Tag string, Data any) {
 }
 
 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,
@@ -241,6 +253,11 @@ func NewTypeTo[T any](to ...time.Duration) *MsgType[T] {
 }
 
 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,
@@ -248,6 +265,11 @@ func (m *MsgType[T]) Push_tag(Tag string, Data T) {
 }
 
 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,
index 202bf23aef2fa766df5b795605a22981ed8872e3..655cdb4fcf959bf68969207b78299133797c8428 100644 (file)
@@ -141,7 +141,7 @@ func BenchmarkXxx(b *testing.B) {
 
 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)
                }
        }()