mirror of
https://github.com/cwinfo/yggdrasil-go.git
synced 2024-11-22 15:20:30 +00:00
remove old switch lookup functions
This commit is contained in:
parent
0f28862e99
commit
c83b070c69
@ -611,38 +611,6 @@ func (t *lookupTable) _insert(elem *tableElem) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is called via a sync.Once to update the atomically readable subset of switch information that gets used for routing decisions.
|
|
||||||
func (t *switchTable) old_updateTable() {
|
|
||||||
// WARNING this should only be called from within t.data.updater.Do()
|
|
||||||
// It relies on the sync.Once for synchronization with messages and lookups
|
|
||||||
// TODO use a pre-computed faster lookup table
|
|
||||||
// Instead of checking distance for every destination every time
|
|
||||||
// Array of structs, indexed by first coord that differs from self
|
|
||||||
// Each struct has stores the best port to forward to, and a next coord map
|
|
||||||
// Move to struct, then iterate over coord maps until you dead end
|
|
||||||
// The last port before the dead end should be the closest
|
|
||||||
newTable := lookupTable{
|
|
||||||
self: t.data.locator.clone(),
|
|
||||||
elems: make(map[switchPort]tableElem, len(t.data.peers)),
|
|
||||||
}
|
|
||||||
for _, pinfo := range t.data.peers {
|
|
||||||
//if !pinfo.forward { continue }
|
|
||||||
if pinfo.locator.root != newTable.self.root {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
loc := pinfo.locator.clone()
|
|
||||||
loc.coords = loc.coords[:len(loc.coords)-1] // Remove the them->self link
|
|
||||||
newTable.elems[pinfo.port] = tableElem{
|
|
||||||
locator: loc,
|
|
||||||
port: pinfo.port,
|
|
||||||
time: pinfo.time,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
newTable._msg = *t._getMsg()
|
|
||||||
t.core.peers.updateTables(t, &newTable)
|
|
||||||
t.core.router.updateTable(t, &newTable)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Starts the switch worker
|
// Starts the switch worker
|
||||||
func (t *switchTable) start() error {
|
func (t *switchTable) start() error {
|
||||||
t.core.log.Infoln("Starting switch")
|
t.core.log.Infoln("Starting switch")
|
||||||
@ -664,40 +632,3 @@ func (t *lookupTable) lookup(coords []byte) switchPort {
|
|||||||
}
|
}
|
||||||
return here.port
|
return here.port
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find the best port to forward to for a given set of coords
|
|
||||||
func (t *lookupTable) old_lookup(coords []byte) switchPort {
|
|
||||||
var bestPort switchPort
|
|
||||||
myDist := t.self.dist(coords)
|
|
||||||
bestDist := myDist
|
|
||||||
var bestElem tableElem
|
|
||||||
for _, info := range t.elems {
|
|
||||||
dist := info.locator.dist(coords)
|
|
||||||
if dist >= myDist {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
var update bool
|
|
||||||
switch {
|
|
||||||
case dist < bestDist:
|
|
||||||
// Closer to destination
|
|
||||||
update = true
|
|
||||||
case dist > bestDist:
|
|
||||||
// Further from destination
|
|
||||||
case info.locator.tstamp > bestElem.locator.tstamp:
|
|
||||||
// Newer root update
|
|
||||||
update = true
|
|
||||||
case info.locator.tstamp < bestElem.locator.tstamp:
|
|
||||||
// Older root update
|
|
||||||
case info.time.Before(bestElem.time):
|
|
||||||
// Received root update via this peer sooner
|
|
||||||
update = true
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
if update {
|
|
||||||
bestPort = info.port
|
|
||||||
bestDist = dist
|
|
||||||
bestElem = info
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return bestPort
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user