lib/api, lib/model: Fixes around event request tracking (#6774)
This commit is contained in:
@@ -238,6 +238,7 @@ type Event struct {
|
||||
type Subscription interface {
|
||||
C() <-chan Event
|
||||
Poll(timeout time.Duration) (Event, error)
|
||||
Mask() EventType
|
||||
Unsubscribe()
|
||||
}
|
||||
|
||||
@@ -432,6 +433,10 @@ func (s *subscription) C() <-chan Event {
|
||||
return s.events
|
||||
}
|
||||
|
||||
func (s *subscription) Mask() EventType {
|
||||
return s.mask
|
||||
}
|
||||
|
||||
func (s *subscription) Unsubscribe() {
|
||||
select {
|
||||
case s.toUnsubscribe <- s:
|
||||
@@ -450,6 +455,7 @@ type bufferedSubscription struct {
|
||||
|
||||
type BufferedSubscription interface {
|
||||
Since(id int, into []Event, timeout time.Duration) []Event
|
||||
Mask() EventType
|
||||
}
|
||||
|
||||
func NewBufferedSubscription(s Subscription, size int) BufferedSubscription {
|
||||
@@ -505,6 +511,10 @@ func (s *bufferedSubscription) Since(id int, into []Event, timeout time.Duration
|
||||
return into
|
||||
}
|
||||
|
||||
func (s *bufferedSubscription) Mask() EventType {
|
||||
return s.sub.Mask()
|
||||
}
|
||||
|
||||
// Error returns a string pointer suitable for JSON marshalling errors. It
|
||||
// retains the "null on success" semantics, but ensures the error result is a
|
||||
// string regardless of the underlying concrete error type.
|
||||
@@ -540,4 +550,8 @@ func (*noopSubscription) Poll(timeout time.Duration) (Event, error) {
|
||||
return Event{}, errNoop
|
||||
}
|
||||
|
||||
func (s *noopSubscription) Mask() EventType {
|
||||
return 0
|
||||
}
|
||||
|
||||
func (*noopSubscription) Unsubscribe() {}
|
||||
|
||||
Reference in New Issue
Block a user