From f07ba741c55c4dca0bafc15dd731884f53928b62 Mon Sep 17 00:00:00 2001 From: netbenix Date: Tue, 9 Nov 2021 10:40:41 +0100 Subject: [PATCH] Updated ProtoHandler I will refactor this soon, don't worry. --- ProtoHandler/Handler.go | 67 +++++++++++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 20 deletions(-) diff --git a/ProtoHandler/Handler.go b/ProtoHandler/Handler.go index 5a77117..df74ad7 100644 --- a/ProtoHandler/Handler.go +++ b/ProtoHandler/Handler.go @@ -8,16 +8,15 @@ import ( "time" ) -func createConnection() *grpc.ClientConn{ +func createConnection(address string) *grpc.ClientConn{ logger := Lotus.DetailedLogger("ProtoHandler", "createConnection") //TODO Remove Hardcoded addr - conn, err := grpc.Dial("localhost:9090", grpc.WithInsecure()) + conn, err := grpc.Dial(address, grpc.WithInsecure()) if err != nil { logger.Fatal(err) } - return conn } @@ -29,25 +28,53 @@ func createRegistryClient(conn *grpc.ClientConn) (proto.LpmRegistryClient, conte return lrc, ctx, cancel } -func SearchPackages(platform string, architecture []string, query string) []PackageMetadata { - logger := Lotus.DetailedLogger("ProtoHandler", "sendSearchRequest") - conn := createConnection() - defer conn.Close() - - client, ctx, cancel := createRegistryClient(conn) - defer cancel() - - res, connErr := client.Search(ctx, &proto.SearchRequest{Platform: platform, Architecture: architecture, Query: query}) - if connErr != nil { - logger.Fatal(connErr) - } - - packages := make([]PackageMetadata, len(res.GetPackages())) - - for i, pkg := range res.GetPackages() { - packages[i].FillMetadata(pkg) +func parsePackages(res *proto.SearchResponse, reg Lotus.Registry) []Package{ + 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) + + res, connErr := client.Search(ctx, &proto.SearchRequest{Platform: platform, Architecture: architecture, Query: query}) + if connErr != nil{ + logger.Fatal(connErr) + } + + for _, pkg := range parsePackages(res, reg){ + packages = append(packages, pkg) + } + + cancel() + conn.Close() + } + + return packages +} + +func SearchPackages(platform string, architecture []string, query string) []Package { + + return fetchPackages(platform, architecture, query) +}