@@ -35,6 +35,7 @@ type OptimizelyFactory struct {
35
35
36
36
configManager pkg.ProjectConfigManager
37
37
decisionService decision.Service
38
+ eventDispatcher event.Dispatcher
38
39
eventProcessor event.Processor
39
40
executionCtx utils.ExecutionCtx
40
41
userProfileService decision.UserProfileService
@@ -70,25 +71,25 @@ func (f OptimizelyFactory) Client(clientOptions ...OptionFunc) (*OptimizelyClien
70
71
appClient .ConfigManager = config .NewPollingProjectConfigManager (
71
72
f .SDKKey ,
72
73
config .WithInitialDatafile (f .Datafile ),
73
- config .WithPollingInterval (config .DefaultPollingInterval ),
74
74
)
75
75
}
76
76
77
77
if f .eventProcessor != nil {
78
78
appClient .EventProcessor = f .eventProcessor
79
79
} else {
80
- appClient .EventProcessor = event .NewBatchEventProcessor (
81
- event .WithBatchSize (event .DefaultBatchSize ),
82
- event .WithQueueSize (event .DefaultEventQueueSize ),
83
- event .WithFlushInterval (event .DefaultEventFlushInterval ),
80
+ var eventProcessorOptions = []event.BPOptionConfig {
84
81
event .WithSDKKey (f .SDKKey ),
85
- )
82
+ }
83
+ if f .eventDispatcher != nil {
84
+ eventProcessorOptions = append (eventProcessorOptions , event .WithEventDispatcher (f .eventDispatcher ))
85
+ }
86
+ appClient .EventProcessor = event .NewBatchEventProcessor (eventProcessorOptions ... )
86
87
}
87
88
88
89
if f .decisionService != nil {
89
90
appClient .DecisionService = f .decisionService
90
91
} else {
91
- experimentServiceOptions := []decision.CESOptionFunc {}
92
+ var experimentServiceOptions []decision.CESOptionFunc
92
93
if f .userProfileService != nil {
93
94
experimentServiceOptions = append (experimentServiceOptions , decision .WithUserProfileService (f .userProfileService ))
94
95
}
@@ -113,35 +114,20 @@ func (f OptimizelyFactory) Client(clientOptions ...OptionFunc) (*OptimizelyClien
113
114
}
114
115
115
116
// WithPollingConfigManager sets polling config manager on a client.
116
- func WithPollingConfigManager (sdkKey string , pollingInterval time.Duration , initDataFile []byte ) OptionFunc {
117
+ func WithPollingConfigManager (pollingInterval time.Duration , initDataFile []byte ) OptionFunc {
117
118
return func (f * OptimizelyFactory ) {
118
- f .configManager = config .NewPollingProjectConfigManager (sdkKey , config .WithInitialDatafile (initDataFile ),
119
+ f .configManager = config .NewPollingProjectConfigManager (f . SDKKey , config .WithInitialDatafile (initDataFile ),
119
120
config .WithPollingInterval (pollingInterval ))
120
121
}
121
122
}
122
123
123
- // WithPollingConfigManagerRequester sets polling config manager on a client.
124
- func WithPollingConfigManagerRequester (requester utils.Requester , pollingInterval time.Duration , initDataFile []byte ) OptionFunc {
125
- return func (f * OptimizelyFactory ) {
126
- f .configManager = config .NewPollingProjectConfigManager ("" , config .WithInitialDatafile (initDataFile ),
127
- config .WithPollingInterval (pollingInterval ), config .WithRequester (requester ))
128
- }
129
- }
130
-
131
124
// WithConfigManager sets polling config manager on a client.
132
125
func WithConfigManager (configManager pkg.ProjectConfigManager ) OptionFunc {
133
126
return func (f * OptimizelyFactory ) {
134
127
f .configManager = configManager
135
128
}
136
129
}
137
130
138
- // WithCompositeDecisionService sets decision service on a client.
139
- func WithCompositeDecisionService (sdkKey string ) OptionFunc {
140
- return func (f * OptimizelyFactory ) {
141
- f .decisionService = decision .NewCompositeService (sdkKey )
142
- }
143
- }
144
-
145
131
// WithDecisionService sets decision service on a client.
146
132
func WithDecisionService (decisionService decision.Service ) OptionFunc {
147
133
return func (f * OptimizelyFactory ) {
@@ -178,6 +164,13 @@ func WithEventProcessor(eventProcessor event.Processor) OptionFunc {
178
164
}
179
165
}
180
166
167
+ // WithEventDispatcher sets event dispatcher on the factory.
168
+ func WithEventDispatcher (eventDispatcher event.Dispatcher ) OptionFunc {
169
+ return func (f * OptimizelyFactory ) {
170
+ f .eventDispatcher = eventDispatcher
171
+ }
172
+ }
173
+
181
174
// WithExecutionContext allows user to pass in their own execution context to override the default one in the client.
182
175
func WithExecutionContext (executionContext utils.ExecutionCtx ) OptionFunc {
183
176
return func (f * OptimizelyFactory ) {
@@ -210,7 +203,6 @@ func (f OptimizelyFactory) StaticClient() (*OptimizelyClient, error) {
210
203
211
204
optlyClient , e := f .Client (
212
205
WithConfigManager (configManager ),
213
- WithCompositeDecisionService (f .SDKKey ),
214
206
WithBatchEventProcessor (event .DefaultBatchSize , event .DefaultEventQueueSize , event .DefaultEventFlushInterval ),
215
207
)
216
208
return optlyClient , e
0 commit comments