Updated ProtoHandler

I will refactor this soon, don't worry.
This commit is contained in:
netbenix 2021-11-09 10:40:41 +01:00
parent a9d14ec3bc
commit f07ba741c5

View file

@ -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)
}