1
1
package event_emitter
2
2
3
3
import (
4
- "hash/maphash"
5
4
"sync"
6
5
"sync/atomic"
7
6
)
@@ -28,7 +27,6 @@ func (c *Config) init() {
28
27
29
28
type EventEmitter [T Subscriber [T ]] struct {
30
29
conf Config
31
- seed maphash.Seed
32
30
serial atomic.Int64
33
31
buckets []* bucket [T ]
34
32
}
@@ -52,7 +50,6 @@ func New[T Subscriber[T]](conf *Config) *EventEmitter[T] {
52
50
53
51
return & EventEmitter [T ]{
54
52
conf : * conf ,
55
- seed : maphash .MakeSeed (),
56
53
buckets : buckets ,
57
54
}
58
55
}
@@ -64,7 +61,7 @@ func (c *EventEmitter[T]) NewSubscriber() Int64Subscriber {
64
61
}
65
62
66
63
func (c * EventEmitter [T ]) getBucket (suber T ) * bucket [T ] {
67
- i := suber .GetSubscribeID () & (c .conf .BucketNum - 1 )
64
+ i := suber .GetSubscriberID () & (c .conf .BucketNum - 1 )
68
65
return c .buckets [i ]
69
66
}
70
67
@@ -82,13 +79,13 @@ func (c *EventEmitter[T]) Subscribe(suber T, topic string, f func(subscriber T,
82
79
c .getBucket (suber ).subscribe (suber , topic , f )
83
80
}
84
81
85
- // UnSubscribe 取消一个订阅主题
82
+ // UnSubscribe 取消订阅一个主题
86
83
// Cancel a subscribed topic
87
84
func (c * EventEmitter [T ]) UnSubscribe (suber T , topic string ) {
88
85
c .getBucket (suber ).unSubscribe (suber , topic )
89
86
}
90
87
91
- // UnSubscribeAll 取消所有订阅主题
88
+ // UnSubscribeAll 取消订阅所有主题
92
89
// Cancel all subscribed topics
93
90
func (c * EventEmitter [T ]) UnSubscribeAll (suber T ) {
94
91
c .getBucket (suber ).unSubscribeAll (suber )
@@ -122,7 +119,7 @@ func (c *bucket[T]) subscribe(suber T, topic string, f eventCallback[T]) {
122
119
defer c .Unlock ()
123
120
124
121
// 更新订阅
125
- subId := suber .GetSubscribeID ()
122
+ subId := suber .GetSubscriberID ()
126
123
sub , ok := c .Subscribers [subId ]
127
124
if ! ok {
128
125
sub = & subscriberField [T ]{topics : make (map [string ]eventCallback [T ])}
@@ -134,9 +131,9 @@ func (c *bucket[T]) subscribe(suber T, topic string, f eventCallback[T]) {
134
131
// 更新主题
135
132
t , ok := c .Topics [topic ]
136
133
if ! ok {
137
- t = & topicField [T ]{subs : make (map [int64 ]* subscriberField [T ])}
134
+ t = & topicField [T ]{subers : make (map [int64 ]* subscriberField [T ])}
138
135
}
139
- t .subs [subId ] = sub
136
+ t .subers [subId ] = sub
140
137
c .Topics [topic ] = t
141
138
}
142
139
@@ -148,7 +145,7 @@ func (c *bucket[T]) publish(topic string, msg any) {
148
145
if ! ok {
149
146
return
150
147
}
151
- for _ , v := range s .subs {
148
+ for _ , v := range s .subers {
152
149
if cb , exist := v .topics [topic ]; exist {
153
150
cb (v .suber , msg )
154
151
}
@@ -160,7 +157,7 @@ func (c *bucket[T]) unSubscribe(suber T, topic string) {
160
157
c .Lock ()
161
158
defer c .Unlock ()
162
159
163
- subId := suber .GetSubscribeID ()
160
+ subId := suber .GetSubscriberID ()
164
161
v1 , ok1 := c .Subscribers [subId ]
165
162
if ok1 {
166
163
delete (v1 .topics , topic )
@@ -169,7 +166,7 @@ func (c *bucket[T]) unSubscribe(suber T, topic string) {
169
166
}
170
167
171
168
if v2 , ok2 := c .Topics [topic ]; ok2 {
172
- delete (v2 .subs , subId )
169
+ delete (v2 .subers , subId )
173
170
}
174
171
}
175
172
}
@@ -179,12 +176,12 @@ func (c *bucket[T]) unSubscribeAll(suber T) {
179
176
c .Lock ()
180
177
defer c .Unlock ()
181
178
182
- subId := suber .GetSubscribeID ()
179
+ subId := suber .GetSubscriberID ()
183
180
v1 , ok1 := c .Subscribers [subId ]
184
181
if ok1 {
185
182
for topic , _ := range v1 .topics {
186
183
if v2 , ok2 := c .Topics [topic ]; ok2 {
187
- delete (v2 .subs , subId )
184
+ delete (v2 .subers , subId )
188
185
}
189
186
}
190
187
delete (c .Subscribers , subId )
@@ -195,7 +192,7 @@ func (c *bucket[T]) getSubscriberTopics(suber T) []string {
195
192
c .Lock ()
196
193
defer c .Unlock ()
197
194
198
- v , exists := c .Subscribers [suber .GetSubscribeID ()]
195
+ v , exists := c .Subscribers [suber .GetSubscriberID ()]
199
196
if ! exists {
200
197
return nil
201
198
}
@@ -214,7 +211,7 @@ func (c *bucket[T]) countTopicSubscriber(topic string) int {
214
211
if ! exists {
215
212
return 0
216
213
}
217
- return len (v .subs )
214
+ return len (v .subers )
218
215
}
219
216
220
217
func toBinaryNumber (n int64 ) int64 {
0 commit comments