refactor: reduce dependency on peer.Router

now the only code depending on it is Peer itself
This commit is contained in:
Matthias Radestock committed 2014-12-24 20:12:48 +00:00
1 parent 945a5cf7fe
commit 2d4baa8dba
1 file changed
+4 -4
+4 -4
View File
@@ -70,7 +70,7 @@ func (peers *Peers) ApplyUpdate(update []byte, router *Router) ([]byte, error) {
// Now apply the updates
newUpdate := peers.applyUpdate(decodedUpdate, decodedConns, router)
for _, peerRemoved := range peers.garbageCollect(router.Ourself) {
for _, peerRemoved := range peers.garbageCollect(router.Ourself, router.Macs) {
delete(newUpdate, peerRemoved.Name)
}
@@ -102,7 +102,7 @@ func EncodePeers(peers ...*Peer) []byte {
func (peers *Peers) GarbageCollect(router *Router) []*Peer {
peers.Lock()
defer peers.Unlock()
return peers.garbageCollect(router.Ourself)
return peers.garbageCollect(router.Ourself, router.Macs)
}
func (peers *Peers) String() string {
@@ -128,14 +128,14 @@ func (peers *Peers) fetchAlias(peer *Peer) (*Peer, bool) {
return nil, false
}
func (peers *Peers) garbageCollect(ourself *Peer) []*Peer {
func (peers *Peers) garbageCollect(ourself *Peer, macs *MacCache) []*Peer {
removed := []*Peer{}
for name, peer := range peers.table {
found, _ := ourself.Routes(peer, false)
if !found && !peer.IsLocallyReferenced() {
peers.onGC(peer)
delete(peers.table, name)
ourself.Router.Macs.Delete(peer)
macs.Delete(peer)
removed = append(removed, peer)
}
}