refactor: eliminate dependency of Peers on MacCache

This commit is contained in:
Matthias Radestock committed 2015-01-23 16:24:41 +00:00
1 parent 86c5e22fa8
commit 4cb306e714
2 files changed
+5 -7

No files matched your search

+2 -5
View File
@@ -11,7 +11,6 @@ import (
type Peers struct {
sync.RWMutex
ourself *Peer
macs *MacCache
table map[PeerName]*Peer
onGC func(*Peer)
}
@@ -23,10 +22,9 @@ type NameCollisionError struct {
Name PeerName
}
func NewPeers(ourself *Peer, macs *MacCache, onGC func(*Peer)) *Peers {
func NewPeers(ourself *Peer, onGC func(*Peer)) *Peers {
return &Peers{
ourself: ourself,
macs: macs,
table: make(map[PeerName]*Peer),
onGC: onGC}
}
@@ -156,9 +154,8 @@ func (peers *Peers) garbageCollect() []*Peer {
for name, peer := range peers.table {
found, _ := peers.ourself.Routes(peer, false)
if !found && !peer.IsLocallyReferenced() {
peers.onGC(peer)
delete(peers.table, name)
peers.macs.Delete(peer)
peers.onGC(peer)
removed = append(removed, peer)
}
}
+3 -2
View File
@@ -57,11 +57,12 @@ func NewRouter(iface *net.Interface, name PeerName, password []byte, connLimit i
log.Println("Expired MAC", mac, "at", peer.Name)
}
onPeerGC := func(peer *Peer) {
log.Println("Removing unreachable", peer)
router.Macs.Delete(peer)
log.Println("Removed unreachable", peer)
}
router.Ourself = NewLocalPeer(name, router)
router.Macs = NewMacCache(macMaxAge, onMacExpiry)
router.Peers = NewPeers(router.Ourself.Peer, router.Macs, onPeerGC)
router.Peers = NewPeers(router.Ourself.Peer, onPeerGC)
router.Peers.FetchWithDefault(router.Ourself.Peer)
router.Routes = NewRoutes(router.Ourself.Peer, router.Peers)
router.ConnectionMaker = NewConnectionMaker(router.Ourself, router.Peers)