From 3ba5a5024e4deb8f1194f50c11035a7940f668a7 Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Thu, 25 Dec 2014 13:05:22 +0000 Subject: [PATCH] refactor: Peer no longer needs Router Hooray! --- router/connection.go | 2 +- router/peer.go | 10 +++------- router/peers.go | 2 +- router/types.go | 2 +- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/router/connection.go b/router/connection.go index 56a048e4..d096922f 100644 --- a/router/connection.go +++ b/router/connection.go @@ -406,7 +406,7 @@ func (conn *LocalConnection) handshake(acceptNewPeer bool) error { conn.Decryptor = NewNonDecryptor(conn) } - toPeer := NewPeer(name, uid, 0, conn.Router) + toPeer := NewPeer(name, uid, 0) toPeer = conn.Router.Peers.FetchWithDefault(toPeer) if toPeer == nil { return fmt.Errorf("Connection appears to be with different version of a peer we already know of") diff --git a/router/peer.go b/router/peer.go index 3fe0ec66..1552626a 100644 --- a/router/peer.go +++ b/router/peer.go @@ -7,7 +7,7 @@ import ( "sort" ) -func NewPeer(name PeerName, uid uint64, version uint64, router *Router) *Peer { +func NewPeer(name PeerName, uid uint64, version uint64) *Peer { if uid == 0 { uid = randUint64() } @@ -16,8 +16,7 @@ func NewPeer(name PeerName, uid uint64, version uint64, router *Router) *Peer { NameByte: name.Bin(), connections: make(map[PeerName]Connection), version: version, - UID: uid, - Router: router} + UID: uid} } func (peer *Peer) String() string { @@ -139,9 +138,6 @@ func (peer *Peer) Routes(stopAt *Peer, symmetric bool) (bool, map[PeerName]PeerN } func (peer *Peer) SetVersionAndConnections(version uint64, connections map[PeerName]Connection) { - if peer == peer.Router.Ourself.Peer { - log.Fatal("Attempt to set version and connections on the local peer", peer.Name) - } peer.Lock() defer peer.Unlock() peer.version = version @@ -149,7 +145,7 @@ func (peer *Peer) SetVersionAndConnections(version uint64, connections map[PeerN } func StartLocalPeer(name PeerName, router *Router) *LocalPeer { - peer := &LocalPeer{Peer: NewPeer(name, 0, 0, router)} + peer := &LocalPeer{Peer: NewPeer(name, 0, 0), Router: router} queryChan := make(chan *PeerInteraction, ChannelSize) peer.queryChan = queryChan go peer.queryLoop(queryChan) diff --git a/router/peers.go b/router/peers.go index 706c5164..22c2f104 100644 --- a/router/peers.go +++ b/router/peers.go @@ -169,7 +169,7 @@ func (peers *Peers) decodeUpdate(update []byte, router *Router) (newPeers map[Pe return } name := PeerNameFromBin(nameByte) - newPeer := NewPeer(name, uid, version, router) + newPeer := NewPeer(name, uid, version) decodedUpdate = append(decodedUpdate, newPeer) decodedConns = append(decodedConns, connsBuf) existingPeer, found := peers.table[name] diff --git a/router/types.go b/router/types.go index 5f7fbde2..524ac316 100644 --- a/router/types.go +++ b/router/types.go @@ -32,12 +32,12 @@ type Peer struct { connections map[PeerName]Connection version uint64 UID uint64 - Router *Router localRefCount uint64 } type LocalPeer struct { *Peer + Router *Router queryChan chan<- *PeerInteraction }