Skip to content

Commit a3fddf4

Browse files
committed
Adjusting config manager to support a Sync method. Also, renaming activate-->start and some other terms
1 parent 996a18d commit a3fddf4

File tree

1 file changed

+25
-27
lines changed

1 file changed

+25
-27
lines changed

optimizely/config/polling_manager.go

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -53,42 +53,40 @@ type PollingProjectConfigManager struct {
5353
exeCtx utils.ExecutionCtx // context used for execution control
5454
}
5555

56-
func (cm *PollingProjectConfigManager) activate(initialPayload []byte, init bool) {
57-
58-
update := func() {
59-
var e error
60-
var code int
61-
var payload []byte
62-
if init && len(initialPayload) > 0 {
63-
payload = initialPayload
64-
} else {
65-
payload, code, e = cm.requester.Get()
66-
67-
if e != nil {
68-
cmLogger.Error(fmt.Sprintf("request returned with http code=%d", code), e)
69-
}
70-
}
71-
72-
projectConfig, err := datafileprojectconfig.NewDatafileProjectConfig(payload)
73-
if err != nil {
74-
cmLogger.Error("failed to create project config", err)
56+
func (cm *PollingProjectConfigManager) Sync(datafile []byte) {
57+
var e error
58+
var code int
59+
if len(datafile) == 0 {
60+
datafile, code, e = cm.requester.Get()
61+
62+
if e != nil {
63+
cmLogger.Error(fmt.Sprintf("request returned with http code=%d", code), e)
7564
}
65+
}
7666

77-
cm.configLock.Lock()
78-
cm.projectConfig = projectConfig
79-
cm.err = err
80-
cm.configLock.Unlock()
67+
projectConfig, err := datafileprojectconfig.NewDatafileProjectConfig(datafile)
68+
if err != nil {
69+
cmLogger.Error("failed to create project config", err)
8170
}
8271

72+
cm.configLock.Lock()
73+
cm.projectConfig = projectConfig
74+
cm.err = err
75+
cm.configLock.Unlock()
76+
}
77+
78+
func (cm *PollingProjectConfigManager) start(initialDatafile []byte, init bool) {
79+
8380
if init {
84-
update()
81+
cm.Sync(initialDatafile)
8582
return
8683
}
84+
8785
t := time.NewTicker(cm.pollingInterval)
8886
for {
8987
select {
9088
case <-t.C:
91-
update()
89+
cm.Sync([]byte{})
9290
case <-cm.exeCtx.GetContext().Done():
9391
cmLogger.Debug("Polling Config Manager Stopped")
9492
return
@@ -114,10 +112,10 @@ func NewPollingProjectConfigManagerWithOptions(exeCtx utils.ExecutionCtx, sdkKey
114112

115113
pollingProjectConfigManager := PollingProjectConfigManager{requester: requester, pollingInterval: pollingInterval, exeCtx: exeCtx}
116114

117-
pollingProjectConfigManager.activate(options.Datafile, true) // initial poll
115+
pollingProjectConfigManager.start(options.Datafile, true) // initial poll
118116

119117
cmLogger.Debug("Polling Config Manager Initiated")
120-
go pollingProjectConfigManager.activate([]byte{}, false)
118+
go pollingProjectConfigManager.start([]byte{}, false)
121119
return &pollingProjectConfigManager
122120
}
123121

0 commit comments

Comments
 (0)