...
1 package datasource
2
3 import (
4 "time"
5
6 "github.com/launchdarkly/go-server-sdk/v6/interfaces"
7 "github.com/launchdarkly/go-server-sdk/v6/internal"
8 )
9
10
11
12 type dataSourceStatusProviderImpl struct {
13 broadcaster *internal.Broadcaster[interfaces.DataSourceStatus]
14 dataSourceUpdates *DataSourceUpdateSinkImpl
15 }
16
17
18 func NewDataSourceStatusProviderImpl(
19 broadcaster *internal.Broadcaster[interfaces.DataSourceStatus],
20 dataSourceUpdates *DataSourceUpdateSinkImpl,
21 ) interfaces.DataSourceStatusProvider {
22 return &dataSourceStatusProviderImpl{broadcaster, dataSourceUpdates}
23 }
24
25 func (d *dataSourceStatusProviderImpl) GetStatus() interfaces.DataSourceStatus {
26 return d.dataSourceUpdates.GetLastStatus()
27 }
28
29 func (d *dataSourceStatusProviderImpl) AddStatusListener() <-chan interfaces.DataSourceStatus {
30 return d.broadcaster.AddListener()
31 }
32
33 func (d *dataSourceStatusProviderImpl) RemoveStatusListener(listener <-chan interfaces.DataSourceStatus) {
34 d.broadcaster.RemoveListener(listener)
35 }
36
37 func (d *dataSourceStatusProviderImpl) WaitFor(desiredState interfaces.DataSourceState, timeout time.Duration) bool {
38 return d.dataSourceUpdates.waitFor(desiredState, timeout)
39 }
40
View as plain text