gjei9ohf
This commit is contained in:
parent
1742b26f0b
commit
305f316250
1 changed files with 24 additions and 6 deletions
|
|
@ -1,26 +1,44 @@
|
|||
package resolver
|
||||
|
||||
import "sync"
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"sync"
|
||||
)
|
||||
|
||||
var (
|
||||
globalResolver *FastResolver
|
||||
resolverOnce sync.Once
|
||||
resolverErr error
|
||||
)
|
||||
|
||||
// GetGlobalResolver returns singleton resolver instance
|
||||
// GetGlobalResolver returns a singleton FastResolver instance.
|
||||
// Sources.xz will only be parsed once per process.
|
||||
func GetGlobalResolver(cacheDir, mirror, suite, component string) (*FastResolver, error) {
|
||||
var err error
|
||||
|
||||
resolverOnce.Do(func() {
|
||||
|
||||
log.Println("[resolver] Initializing global resolver (loading package index)")
|
||||
|
||||
r := NewFastResolver(cacheDir)
|
||||
|
||||
err = r.LoadIndex(mirror, suite, component)
|
||||
if err != nil {
|
||||
if err := r.LoadIndex(mirror, suite, component); err != nil {
|
||||
resolverErr = fmt.Errorf("failed to load package index: %w", err)
|
||||
return
|
||||
}
|
||||
|
||||
globalResolver = r
|
||||
|
||||
log.Println("[resolver] Global resolver initialized successfully")
|
||||
})
|
||||
|
||||
return globalResolver, err
|
||||
if resolverErr != nil {
|
||||
return nil, resolverErr
|
||||
}
|
||||
|
||||
if globalResolver == nil {
|
||||
return nil, fmt.Errorf("resolver initialization failed")
|
||||
}
|
||||
|
||||
return globalResolver, nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue