From 0513e4a029943c13ffe0272161b035523cc8613d Mon Sep 17 00:00:00 2001 From: "Kali Kaneko (leap communications)" Date: Thu, 13 Dec 2018 22:10:05 +0100 Subject: return sorted list of gw hosts --- main.go | 64 ++++++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 20 deletions(-) diff --git a/main.go b/main.go index 1cc530b..f40db65 100644 --- a/main.go +++ b/main.go @@ -56,7 +56,7 @@ type geodb struct { db *geoip2.Reader Gateways []gateway GatewayTree *kdtree.KDTree - GatewayMap map[[3]float64]gateway + GatewayMap map[[3]float64][]gateway earth *ellipsoid.Ellipsoid } @@ -66,16 +66,33 @@ func (g *geodb) getPointForLocation(lat float64, lon float64) *EuclideanPoint { return p } -func (g *geodb) getClosestGateway(lat float64, lon float64) gateway { +func (g *geodb) sortGateways(lat float64, lon float64) []string { + ret := make([]string, 0) t := g.getPointForLocation(lat, lon) - nn := g.GatewayTree.KNN(t, 1)[0] - p := [3]float64{nn.GetValue(0), nn.GetValue(1), nn.GetValue(2)} - closestGateway := g.GatewayMap[p] - return closestGateway + nn := g.GatewayTree.KNN(t, len(g.Gateways)) + for i:= 0; i