...

Source file src/github.com/launchdarkly/go-server-sdk/v6/internal/datasource/data_source_status_provider_impl.go

Documentation: github.com/launchdarkly/go-server-sdk/v6/internal/datasource

     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  // dataSourceStatusProviderImpl is the internal implementation of DataSourceStatusProvider. It's not
    11  // exported because the rest of the SDK code only interacts with the public interface.
    12  type dataSourceStatusProviderImpl struct {
    13  	broadcaster       *internal.Broadcaster[interfaces.DataSourceStatus]
    14  	dataSourceUpdates *DataSourceUpdateSinkImpl
    15  }
    16  
    17  // NewDataSourceStatusProviderImpl creates the internal implementation of DataSourceStatusProvider.
    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