mirror of
https://github.com/Jguer/yay
synced 2024-07-22 18:56:44 +00:00
Make aurInfo concurrent
This commit is contained in:
parent
2856a7276c
commit
3f7c731f99
33
query.go
33
query.go
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
|
|
||||||
alpm "github.com/jguer/go-alpm"
|
alpm "github.com/jguer/go-alpm"
|
||||||
rpc "github.com/mikkeloscar/aur"
|
rpc "github.com/mikkeloscar/aur"
|
||||||
|
@ -368,14 +369,36 @@ func min(a, b int) int {
|
||||||
func aurInfo(names []string) ([]rpc.Pkg, error) {
|
func aurInfo(names []string) ([]rpc.Pkg, error) {
|
||||||
info := make([]rpc.Pkg, 0, len(names))
|
info := make([]rpc.Pkg, 0, len(names))
|
||||||
seen := make(map[string]int)
|
seen := make(map[string]int)
|
||||||
|
var mux sync.Mutex
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var err error
|
||||||
|
|
||||||
|
makeRequest := func(n, max int) {
|
||||||
|
tempInfo, requestErr := rpc.Info(names[n:max])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if requestErr != nil {
|
||||||
|
//return info, err
|
||||||
|
err = requestErr
|
||||||
|
return
|
||||||
|
}
|
||||||
|
mux.Lock()
|
||||||
|
info = append(info, tempInfo...)
|
||||||
|
mux.Unlock()
|
||||||
|
wg.Done()
|
||||||
|
}
|
||||||
|
|
||||||
for n := 0; n < len(names); n += config.RequestSplitN {
|
for n := 0; n < len(names); n += config.RequestSplitN {
|
||||||
max := min(len(names), n + config.RequestSplitN)
|
max := min(len(names), n + config.RequestSplitN)
|
||||||
tempInfo, err := rpc.Info(names[n:max])
|
wg.Add(1)
|
||||||
if err != nil {
|
go makeRequest(n, max)
|
||||||
return info, err
|
}
|
||||||
}
|
|
||||||
info = append(info, tempInfo...)
|
wg.Wait()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return info, err
|
||||||
}
|
}
|
||||||
|
|
||||||
for k, pkg := range info {
|
for k, pkg := range info {
|
||||||
|
|
Loading…
Reference in a new issue