@@ -53,42 +53,40 @@ type PollingProjectConfigManager struct {
53
53
exeCtx utils.ExecutionCtx // context used for execution control
54
54
}
55
55
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 )
75
64
}
65
+ }
76
66
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 )
81
70
}
82
71
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
+
83
80
if init {
84
- update ( )
81
+ cm . Sync ( initialDatafile )
85
82
return
86
83
}
84
+
87
85
t := time .NewTicker (cm .pollingInterval )
88
86
for {
89
87
select {
90
88
case <- t .C :
91
- update ( )
89
+ cm . Sync ([] byte {} )
92
90
case <- cm .exeCtx .GetContext ().Done ():
93
91
cmLogger .Debug ("Polling Config Manager Stopped" )
94
92
return
@@ -114,10 +112,10 @@ func NewPollingProjectConfigManagerWithOptions(exeCtx utils.ExecutionCtx, sdkKey
114
112
115
113
pollingProjectConfigManager := PollingProjectConfigManager {requester : requester , pollingInterval : pollingInterval , exeCtx : exeCtx }
116
114
117
- pollingProjectConfigManager .activate (options .Datafile , true ) // initial poll
115
+ pollingProjectConfigManager .start (options .Datafile , true ) // initial poll
118
116
119
117
cmLogger .Debug ("Polling Config Manager Initiated" )
120
- go pollingProjectConfigManager .activate ([]byte {}, false )
118
+ go pollingProjectConfigManager .start ([]byte {}, false )
121
119
return & pollingProjectConfigManager
122
120
}
123
121
0 commit comments