-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdynamic_watched_configuration.go
42 lines (37 loc) · 1.2 KB
/
dynamic_watched_configuration.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package manyfaced
import (
"github.com/nienie/manyfaced/configuration"
"github.com/nienie/manyfaced/poll"
"github.com/nienie/manyfaced/property"
"github.com/nienie/manyfaced/source"
)
//DynamicWatchedConfiguration ...
type DynamicWatchedConfiguration struct {
*configuration.MapConfiguration
propertyUpdater *property.DynamicPropertyUpdater
Source source.WatchedConfigurationSource
}
//NewDynamicWatchedConfiguration ...
func NewDynamicWatchedConfiguration(source source.WatchedConfigurationSource) (*DynamicWatchedConfiguration, error) {
cfg := &DynamicWatchedConfiguration{
MapConfiguration: configuration.NewMapConfiguration(nil),
propertyUpdater: &property.DynamicPropertyUpdater{},
Source: source,
}
currentData, err := source.GetCurrentData()
if err != nil {
return nil, err
}
result := poll.NewFullWatchedUpdatedResult(currentData)
cfg.UpdateConfiguration(result)
cfg.Source.AddUpdateListener(cfg)
return cfg, nil
}
//UpdateConfiguration ...
func (c *DynamicWatchedConfiguration) UpdateConfiguration(result *poll.WatchedUpdateResult) {
c.propertyUpdater.UpdateProperties(result, c)
}
//Close ...
func (c *DynamicWatchedConfiguration) Close() {
c.Source.StopWatching()
}