Skip to content

Commit 4a76b46

Browse files
author
lixizan
committed
remove unused vars
1 parent 4efbd99 commit 4a76b46

File tree

3 files changed

+50
-23
lines changed

3 files changed

+50
-23
lines changed

README.md

+34-4
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
go get -v github.com/lxzan/event_emitter@latest
1717
```
1818

19-
### Usage
19+
### Quick Start
2020

2121
```go
2222
package main
@@ -34,17 +34,47 @@ func main() {
3434

3535
var suber1 = em.NewSubscriber()
3636
em.Subscribe(suber1, "greet", func(subscriber event_emitter.Int64Subscriber, msg any) {
37-
fmt.Printf("recv0: %v\n", msg)
37+
fmt.Printf("recv: sub_id=%d, msg=%v\n", subscriber.GetSubscriberID(), msg)
3838
})
3939
em.Subscribe(suber1, "greet1", func(subscriber event_emitter.Int64Subscriber, msg any) {
40-
fmt.Printf("recv1: %v\n", msg)
40+
fmt.Printf("recv: sub_id=%d, msg=%v\n", subscriber.GetSubscriberID(), msg)
4141
})
4242

4343
var suber2 = em.NewSubscriber()
4444
em.Subscribe(suber2, "greet1", func(subscriber event_emitter.Int64Subscriber, msg any) {
45-
fmt.Printf("recv2: %v\n", msg)
45+
fmt.Printf("recv: sub_id=%d, msg=%v\n", subscriber.GetSubscriberID(), msg)
4646
})
4747

4848
em.Publish("greet1", "hello!")
4949
}
50+
```
51+
52+
### GWS Broadcast
53+
54+
```go
55+
package main
56+
57+
import (
58+
"github.com/lxzan/event_emitter"
59+
"github.com/lxzan/gws"
60+
)
61+
62+
type Socket struct{ *gws.Conn }
63+
64+
func (c *Socket) GetSubscriberID() int64 {
65+
userId, _ := c.Session().Load("userId")
66+
return userId.(int64)
67+
}
68+
69+
func Sub(em *event_emitter.EventEmitter[*Socket], topic string, socket *Socket) {
70+
em.Subscribe(socket, topic, func(subscriber *Socket, msg any) {
71+
_ = msg.(*gws.Broadcaster).Broadcast(subscriber.Conn)
72+
})
73+
}
74+
75+
func Pub(em *event_emitter.EventEmitter[*Socket], topic string, op gws.Opcode, msg []byte) {
76+
var broadcaster = gws.NewBroadcaster(op, msg)
77+
defer broadcaster.Close()
78+
em.Publish(topic, broadcaster)
79+
}
5080
```

event.go

+13-16
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package event_emitter
22

33
import (
4-
"hash/maphash"
54
"sync"
65
"sync/atomic"
76
)
@@ -28,7 +27,6 @@ func (c *Config) init() {
2827

2928
type EventEmitter[T Subscriber[T]] struct {
3029
conf Config
31-
seed maphash.Seed
3230
serial atomic.Int64
3331
buckets []*bucket[T]
3432
}
@@ -52,7 +50,6 @@ func New[T Subscriber[T]](conf *Config) *EventEmitter[T] {
5250

5351
return &EventEmitter[T]{
5452
conf: *conf,
55-
seed: maphash.MakeSeed(),
5653
buckets: buckets,
5754
}
5855
}
@@ -64,7 +61,7 @@ func (c *EventEmitter[T]) NewSubscriber() Int64Subscriber {
6461
}
6562

6663
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)
6865
return c.buckets[i]
6966
}
7067

@@ -82,13 +79,13 @@ func (c *EventEmitter[T]) Subscribe(suber T, topic string, f func(subscriber T,
8279
c.getBucket(suber).subscribe(suber, topic, f)
8380
}
8481

85-
// UnSubscribe 取消一个订阅主题
82+
// UnSubscribe 取消订阅一个主题
8683
// Cancel a subscribed topic
8784
func (c *EventEmitter[T]) UnSubscribe(suber T, topic string) {
8885
c.getBucket(suber).unSubscribe(suber, topic)
8986
}
9087

91-
// UnSubscribeAll 取消所有订阅主题
88+
// UnSubscribeAll 取消订阅所有主题
9289
// Cancel all subscribed topics
9390
func (c *EventEmitter[T]) UnSubscribeAll(suber T) {
9491
c.getBucket(suber).unSubscribeAll(suber)
@@ -122,7 +119,7 @@ func (c *bucket[T]) subscribe(suber T, topic string, f eventCallback[T]) {
122119
defer c.Unlock()
123120

124121
// 更新订阅
125-
subId := suber.GetSubscribeID()
122+
subId := suber.GetSubscriberID()
126123
sub, ok := c.Subscribers[subId]
127124
if !ok {
128125
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]) {
134131
// 更新主题
135132
t, ok := c.Topics[topic]
136133
if !ok {
137-
t = &topicField[T]{subs: make(map[int64]*subscriberField[T])}
134+
t = &topicField[T]{subers: make(map[int64]*subscriberField[T])}
138135
}
139-
t.subs[subId] = sub
136+
t.subers[subId] = sub
140137
c.Topics[topic] = t
141138
}
142139

@@ -148,7 +145,7 @@ func (c *bucket[T]) publish(topic string, msg any) {
148145
if !ok {
149146
return
150147
}
151-
for _, v := range s.subs {
148+
for _, v := range s.subers {
152149
if cb, exist := v.topics[topic]; exist {
153150
cb(v.suber, msg)
154151
}
@@ -160,7 +157,7 @@ func (c *bucket[T]) unSubscribe(suber T, topic string) {
160157
c.Lock()
161158
defer c.Unlock()
162159

163-
subId := suber.GetSubscribeID()
160+
subId := suber.GetSubscriberID()
164161
v1, ok1 := c.Subscribers[subId]
165162
if ok1 {
166163
delete(v1.topics, topic)
@@ -169,7 +166,7 @@ func (c *bucket[T]) unSubscribe(suber T, topic string) {
169166
}
170167

171168
if v2, ok2 := c.Topics[topic]; ok2 {
172-
delete(v2.subs, subId)
169+
delete(v2.subers, subId)
173170
}
174171
}
175172
}
@@ -179,12 +176,12 @@ func (c *bucket[T]) unSubscribeAll(suber T) {
179176
c.Lock()
180177
defer c.Unlock()
181178

182-
subId := suber.GetSubscribeID()
179+
subId := suber.GetSubscriberID()
183180
v1, ok1 := c.Subscribers[subId]
184181
if ok1 {
185182
for topic, _ := range v1.topics {
186183
if v2, ok2 := c.Topics[topic]; ok2 {
187-
delete(v2.subs, subId)
184+
delete(v2.subers, subId)
188185
}
189186
}
190187
delete(c.Subscribers, subId)
@@ -195,7 +192,7 @@ func (c *bucket[T]) getSubscriberTopics(suber T) []string {
195192
c.Lock()
196193
defer c.Unlock()
197194

198-
v, exists := c.Subscribers[suber.GetSubscribeID()]
195+
v, exists := c.Subscribers[suber.GetSubscriberID()]
199196
if !exists {
200197
return nil
201198
}
@@ -214,7 +211,7 @@ func (c *bucket[T]) countTopicSubscriber(topic string) int {
214211
if !exists {
215212
return 0
216213
}
217-
return len(v.subs)
214+
return len(v.subers)
218215
}
219216

220217
func toBinaryNumber(n int64) int64 {

types.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package event_emitter
33
type eventCallback[T Subscriber[T]] func(suber T, msg any)
44

55
type topicField[T Subscriber[T]] struct {
6-
subs map[int64]*subscriberField[T]
6+
subers map[int64]*subscriberField[T]
77
}
88

99
type subscriberField[T Subscriber[T]] struct {
@@ -12,11 +12,11 @@ type subscriberField[T Subscriber[T]] struct {
1212
}
1313

1414
type Subscriber[T any] interface {
15-
GetSubscribeID() int64
15+
GetSubscriberID() int64 // 获取订阅者唯一ID
1616
}
1717

1818
type Int64Subscriber int64
1919

20-
func (c Int64Subscriber) GetSubscribeID() int64 {
20+
func (c Int64Subscriber) GetSubscriberID() int64 {
2121
return int64(c)
2222
}

0 commit comments

Comments
 (0)