...
1 package bigsegments
2
3 import (
4 "github.com/launchdarkly/go-server-sdk/v6/interfaces"
5 "github.com/launchdarkly/go-server-sdk/v6/internal"
6 )
7
8
9
10
11
12
13
14
15 type bigSegmentStoreStatusProviderImpl struct {
16 getStatusFn func() interfaces.BigSegmentStoreStatus
17 broadcaster *internal.Broadcaster[interfaces.BigSegmentStoreStatus]
18 }
19
20
21
22 func NewBigSegmentStoreStatusProviderImpl(
23 getStatusFn func() interfaces.BigSegmentStoreStatus,
24 broadcaster *internal.Broadcaster[interfaces.BigSegmentStoreStatus],
25 ) interfaces.BigSegmentStoreStatusProvider {
26 return &bigSegmentStoreStatusProviderImpl{
27 getStatusFn: getStatusFn,
28 broadcaster: broadcaster,
29 }
30 }
31
32 func (b *bigSegmentStoreStatusProviderImpl) GetStatus() interfaces.BigSegmentStoreStatus {
33 if b.getStatusFn == nil {
34 return interfaces.BigSegmentStoreStatus{Available: false}
35 }
36 return b.getStatusFn()
37 }
38
39 func (b *bigSegmentStoreStatusProviderImpl) AddStatusListener() <-chan interfaces.BigSegmentStoreStatus {
40 return b.broadcaster.AddListener()
41 }
42
43 func (b *bigSegmentStoreStatusProviderImpl) RemoveStatusListener(
44 ch <-chan interfaces.BigSegmentStoreStatus,
45 ) {
46 b.broadcaster.RemoveListener(ch)
47 }
48
View as plain text