refactor: eliminate dependency of Peers on MacCache
This commit is contained in:
1 parent
86c5e22fa8
commit
4cb306e714
2 files changed
+5
-7
No files matched your search
+2
-5
@@ -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
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user