-
Notifications
You must be signed in to change notification settings - Fork 13
/
wrap.go
87 lines (69 loc) · 2.34 KB
/
wrap.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package subscription_impl
import "github.com/glide-im/glide/pkg/subscription"
// SubscribeWrap the wrapper for subscription.Subscribe implementation, for convenience.
type SubscribeWrap interface {
Subscribe(ch subscription.ChanID, id subscription.SubscriberID, extra interface{}) error
UnSubscribe(ch subscription.ChanID, id subscription.SubscriberID) error
UpdateSubscriber(ch subscription.ChanID, id subscription.SubscriberID, extra interface{}) error
RemoveChannel(ch subscription.ChanID) error
CreateChannel(ch subscription.ChanID, update *subscription.ChanInfo) error
UpdateChannel(ch subscription.ChanID, update *subscription.ChanInfo) error
Publish(ch subscription.ChanID, msg subscription.Message) error
}
func NewSubscribeWrap(subscribe subscription.Subscribe) SubscribeWrap {
return &wrap{
fac: subscribe,
}
}
var _ SubscribeWrap = (*wrap)(nil)
type wrap struct {
fac subscription.Subscribe
}
func (w *wrap) Subscribe(ch subscription.ChanID, id subscription.SubscriberID, extra interface{}) error {
return w.fac.UpdateSubscriber(ch, []subscription.Update{
{
Flag: subscription.SubscriberSubscribe,
ID: id,
Extra: extra,
},
})
}
func (w *wrap) UnSubscribe(ch subscription.ChanID, id subscription.SubscriberID) error {
return w.fac.UpdateSubscriber(ch, []subscription.Update{
{
Flag: subscription.SubscriberUnsubscribe,
ID: id,
Extra: nil,
},
})
}
func (w *wrap) UpdateSubscriber(ch subscription.ChanID, id subscription.SubscriberID, extra interface{}) error {
return w.fac.UpdateSubscriber(ch, []subscription.Update{
{
Flag: subscription.SubscriberUpdate,
ID: id,
Extra: extra,
},
})
}
func (w *wrap) RemoveChannel(ch subscription.ChanID) error {
return w.fac.UpdateChannel(ch, subscription.ChannelUpdate{
Flag: subscription.ChanDelete,
Extra: nil,
})
}
func (w *wrap) CreateChannel(ch subscription.ChanID, update *subscription.ChanInfo) error {
return w.fac.UpdateChannel(ch, subscription.ChannelUpdate{
Flag: subscription.ChanCreate,
Extra: update,
})
}
func (w *wrap) UpdateChannel(ch subscription.ChanID, update *subscription.ChanInfo) error {
return w.fac.UpdateChannel(ch, subscription.ChannelUpdate{
Flag: subscription.ChanUpdate,
Extra: update,
})
}
func (w *wrap) Publish(ch subscription.ChanID, msg subscription.Message) error {
return w.fac.PublishMessage(ch, msg)
}