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  }