Updated ProtoHandler
I will refactor this soon, don't worry.
This commit is contained in:
parent
a9d14ec3bc
commit
f07ba741c5
1 changed files with 47 additions and 20 deletions
|
|
@ -8,16 +8,15 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func createConnection() *grpc.ClientConn{
|
func createConnection(address string) *grpc.ClientConn{
|
||||||
|
|
||||||
logger := Lotus.DetailedLogger("ProtoHandler", "createConnection")
|
logger := Lotus.DetailedLogger("ProtoHandler", "createConnection")
|
||||||
|
|
||||||
//TODO Remove Hardcoded addr
|
//TODO Remove Hardcoded addr
|
||||||
conn, err := grpc.Dial("localhost:9090", grpc.WithInsecure())
|
conn, err := grpc.Dial(address, grpc.WithInsecure())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatal(err)
|
logger.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return conn
|
return conn
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -29,25 +28,53 @@ func createRegistryClient(conn *grpc.ClientConn) (proto.LpmRegistryClient, conte
|
||||||
return lrc, ctx, cancel
|
return lrc, ctx, cancel
|
||||||
}
|
}
|
||||||
|
|
||||||
func SearchPackages(platform string, architecture []string, query string) []PackageMetadata {
|
|
||||||
logger := Lotus.DetailedLogger("ProtoHandler", "sendSearchRequest")
|
|
||||||
|
|
||||||
conn := createConnection()
|
func parsePackages(res *proto.SearchResponse, reg Lotus.Registry) []Package{
|
||||||
defer conn.Close()
|
var packages []Package
|
||||||
|
for _, pkg := range res.GetPackages(){
|
||||||
|
var tmpMeta PackageMetadata
|
||||||
|
tmpMeta.FillMetadata(pkg)
|
||||||
|
packages = append(packages, Package{
|
||||||
|
PackageMetadata: tmpMeta,
|
||||||
|
Register: Lotus.Registry{
|
||||||
|
Register: reg.Register,
|
||||||
|
Address: reg.Address,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return packages
|
||||||
|
}
|
||||||
|
|
||||||
|
func fetchPackages(platform string, architecture []string, query string) []Package{
|
||||||
|
logger := Lotus.DetailedLogger("ProtoHandler", "receiveSearchResponse")
|
||||||
|
|
||||||
|
regisitries := Lotus.GetRegistries()
|
||||||
|
|
||||||
|
var packages []Package
|
||||||
|
|
||||||
|
for _, reg := range regisitries{
|
||||||
|
conn := createConnection(reg.Address)
|
||||||
|
|
||||||
client, ctx, cancel := createRegistryClient(conn)
|
client, ctx, cancel := createRegistryClient(conn)
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
res, connErr := client.Search(ctx, &proto.SearchRequest{Platform: platform, Architecture: architecture, Query: query})
|
res, connErr := client.Search(ctx, &proto.SearchRequest{Platform: platform, Architecture: architecture, Query: query})
|
||||||
if connErr != nil{
|
if connErr != nil{
|
||||||
logger.Fatal(connErr)
|
logger.Fatal(connErr)
|
||||||
}
|
}
|
||||||
|
|
||||||
packages := make([]PackageMetadata, len(res.GetPackages()))
|
for _, pkg := range parsePackages(res, reg){
|
||||||
|
packages = append(packages, pkg)
|
||||||
|
}
|
||||||
|
|
||||||
for i, pkg := range res.GetPackages() {
|
cancel()
|
||||||
packages[i].FillMetadata(pkg)
|
conn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
return packages
|
return packages
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SearchPackages(platform string, architecture []string, query string) []Package {
|
||||||
|
|
||||||
|
return fetchPackages(platform, architecture, query)
|
||||||
|
}
|
||||||
|
|
|
||||||
Reference in a new issue