Skip to content

Commit 703c3ef

Browse files
authored
refactor: use stdlib packages to get map values (#381)
Signed-off-by: Sahid Velji <[email protected]>
1 parent 1d5ed74 commit 703c3ef

File tree

2 files changed

+6
-13
lines changed

2 files changed

+6
-13
lines changed

openfeature/event_executor.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package openfeature
33
import (
44
"fmt"
55
"log/slog"
6+
"maps"
67
"slices"
78
"sync"
89
"time"
@@ -229,7 +230,6 @@ func (e *eventExecutor) registerNamedEventingProvider(associatedClient string, p
229230
// startListeningAndShutdownOld is a helper to start concurrent listening to new provider events and invoke shutdown
230231
// hook of the old provider if it's not bound by another subscription
231232
func (e *eventExecutor) startListeningAndShutdownOld(newProvider providerReference, oldReference providerReference) error {
232-
233233
// check if this provider already actively handled - 1:N binding capability
234234
if !isRunning(newProvider, e.activeSubscriptions) {
235235
e.activeSubscriptions = append(e.activeSubscriptions, newProvider)
@@ -258,7 +258,7 @@ func (e *eventExecutor) startListeningAndShutdownOld(newProvider providerReferen
258258
// shutdown old provider handling
259259

260260
// check if this provider is still bound - 1:N binding capability
261-
if isBound(oldReference, e.defaultProviderReference, mapValues(e.namedProviderReference)) {
261+
if isBound(oldReference, e.defaultProviderReference, slices.Collect(maps.Values(e.namedProviderReference))) {
262262
return nil
263263
}
264264

@@ -335,7 +335,6 @@ func (e *eventExecutor) triggerEvent(event Event, handler FeatureProvider) {
335335
e.executeHandler(*c, event)
336336
}
337337
}
338-
339338
}
340339

341340
// executeHandler is a helper which performs the actual invocation of the callback
@@ -358,15 +357,6 @@ func (e *eventExecutor) executeHandler(f func(details EventDetails), event Event
358357
}()
359358
}
360359

361-
// mapValues is a helper until we bump to a go version with maps.Values and slices.Collect
362-
func mapValues[K comparable, V any](m map[K]V) []V {
363-
var values []V
364-
for _, value := range m {
365-
values = append(values, value)
366-
}
367-
return values
368-
}
369-
370360
// isRunning is a helper to check if the given provider is in the given list of providers
371361
func isRunning(provider providerReference, activeProviders []providerReference) bool {
372362
return slices.ContainsFunc(activeProviders, provider.equals)

openfeature/openfeature_api.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package openfeature
33
import (
44
"errors"
55
"fmt"
6+
"maps"
67
"slices"
78
"sync"
89

@@ -232,8 +233,10 @@ func (api *evaluationAPI) initNewAndShutdownOld(clientName string, newProvider F
232233
return nil
233234
}
234235

236+
namedProviders := slices.Collect(maps.Values(api.namedProviders))
237+
235238
// check for multiple bindings
236-
if oldProvider == api.defaultProvider || slices.Contains(mapValues(api.namedProviders), oldProvider) {
239+
if oldProvider == api.defaultProvider || slices.Contains(namedProviders, oldProvider) {
237240
return nil
238241
}
239242

0 commit comments

Comments
 (0)