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