Skip to content

Commit

Permalink
Feature(provider): support go1.23 range (#128)
Browse files Browse the repository at this point in the history
  • Loading branch information
xjasonlyu authored Oct 3, 2024
1 parent c8909f0 commit 77bf9a8
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
8 changes: 4 additions & 4 deletions engine/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ func (e *Engine) initAllProviderPriorities() {
func (e *Engine) initActorProviders() {
e.actorProviders = make(map[string]mt.ActorProvider)
e.actorHostProviders = make(map[string][]mt.ActorProvider)
mt.RangeActorFactory(func(name string, factory mt.ActorFactory) {
for name, factory := range mt.RangeActorFactory {
provider := factory()
if s, ok := provider.(mt.RequestTimeoutSetter); ok {
s.SetRequestTimeout(e.timeout)
Expand All @@ -75,14 +75,14 @@ func (e *Engine) initActorProviders() {
// Add actor provider by host.
host := provider.URL().Hostname()
e.actorHostProviders[host] = append(e.actorHostProviders[host], provider)
})
}
}

// initMovieProviders initializes movie providers.
func (e *Engine) initMovieProviders() {
e.movieProviders = make(map[string]mt.MovieProvider)
e.movieHostProviders = make(map[string][]mt.MovieProvider)
mt.RangeMovieFactory(func(name string, factory mt.MovieFactory) {
for name, factory := range mt.RangeMovieFactory {
provider := factory()
if s, ok := provider.(mt.RequestTimeoutSetter); ok {
s.SetRequestTimeout(e.timeout)
Expand All @@ -92,5 +92,5 @@ func (e *Engine) initMovieProviders() {
// Add movie provider by host.
host := provider.URL().Hostname()
e.movieHostProviders[host] = append(e.movieHostProviders[host], provider)
})
}
}
12 changes: 8 additions & 4 deletions provider/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,18 +40,22 @@ func Register[T Provider](name string, factory func() T) {
}
}

func RangeMovieFactory(f func(string, MovieFactory)) {
func RangeMovieFactory(f func(string, MovieFactory) bool) {
factoryMu.RLock()
for name, factory := range movieFactories {
f(name, factory)
if !f(name, factory) {
return
}
}
factoryMu.RUnlock()
}

func RangeActorFactory(f func(string, ActorFactory)) {
func RangeActorFactory(f func(string, ActorFactory) bool) {
factoryMu.RLock()
for name, factory := range actorFactories {
f(name, factory)
if !f(name, factory) {
return
}
}
factoryMu.RUnlock()
}

0 comments on commit 77bf9a8

Please sign in to comment.