@@ -2,12 +2,10 @@ package openfeature
22
33import (
44 "fmt"
5+ "log/slog"
6+ "slices"
57 "sync"
68 "time"
7-
8- "log/slog"
9-
10- "golang.org/x/exp/maps"
119)
1210
1311const defaultDomain = ""
@@ -260,7 +258,7 @@ func (e *eventExecutor) startListeningAndShutdownOld(newProvider providerReferen
260258 // shutdown old provider handling
261259
262260 // check if this provider is still bound - 1:N binding capability
263- if isBound (oldReference , e .defaultProviderReference , maps . Values (e .namedProviderReference )) {
261+ if isBound (oldReference , e .defaultProviderReference , mapValues (e .namedProviderReference )) {
264262 return nil
265263 }
266264
@@ -360,26 +358,22 @@ func (e *eventExecutor) executeHandler(f func(details EventDetails), event Event
360358 }()
361359}
362360
363- // isRunning is a helper till we bump to the latest go version with slices.contains support
364- func isRunning (provider providerReference , activeProviders []providerReference ) bool {
365- for _ , activeProvider := range activeProviders {
366- if activeProvider .equals (provider ) {
367- return true
368- }
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 )
369366 }
370- return false
367+ return values
371368}
372369
373- // isRunning is a helper to check if given provider is already in use
374- func isBound (provider providerReference , defaultProvider providerReference , namedProviders []providerReference ) bool {
375- if provider .equals (defaultProvider ) {
376- return true
377- }
370+ // isRunning is a helper to check if the given provider is in the given list of providers
371+ func isRunning (provider providerReference , activeProviders []providerReference ) bool {
372+ return slices .ContainsFunc (activeProviders , provider .equals )
373+ }
378374
379- for _ , namedProvider := range namedProviders {
380- if provider .equals (namedProvider ) {
381- return true
382- }
383- }
384- return false
375+ // isBound is a helper to check if given provider is in the given provider or list of providers
376+ func isBound (provider providerReference , defaultProvider providerReference , namedProviders []providerReference ) bool {
377+ return provider .equals (defaultProvider ) ||
378+ slices .ContainsFunc (namedProviders , provider .equals )
385379}
0 commit comments