Skip to content

Commit bbf4140

Browse files
committed
feat: add any subscriber
1 parent 6729d2c commit bbf4140

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

manager_internal.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,16 +171,24 @@ func (m *manager) Fire(event Event) {
171171
m.fire(event)
172172
}
173173

174+
var anyType = typeOf(any(nil))
175+
174176
func (m *manager) fire(event Event) {
175177
eventType := typeOf(event)
178+
176179
m.mu.RLock()
177180
list := m.subscribers[eventType]
181+
anyList := m.subscribers[anyType]
178182
m.mu.RUnlock()
179183

184+
m.fireSubscribers(event, anyList)
185+
m.fireSubscribers(event, list)
186+
}
187+
188+
func (m *manager) fireSubscribers(event Event, list *subscriberList) {
180189
if list == nil {
181190
return
182191
}
183-
184192
list.wg.Add(1)
185193
defer list.wg.Done()
186194

manager_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,15 @@ func TestPriorityAndCorrectType(t *testing.T) {
4242
noPtr = true
4343
})
4444

45+
var calledAny int
46+
m.Subscribe(any(nil), 10, func(e Event) {
47+
calledAny++
48+
})
49+
4550
e := &myEvent{s: "_"}
4651
m.Fire(e)
4752
require.False(t, noPtr)
4853
require.Equal(t, "_abc", e.s)
4954
require.True(t, m.HasSubscriber(&myEvent{}))
55+
require.Equal(t, calledAny, 1)
5056
}

0 commit comments

Comments
 (0)