refactor: extract some helpers useful for testing
This commit is contained in:
1 parent
c7701a20b5
commit
1a31748e40
1 file changed
+26
-17
+26
-17
@@ -210,9 +210,7 @@ func (peer *LocalPeer) handleAddConnection(conn *LocalConnection) {
|
||||
conn.CheckFatal(err)
|
||||
return
|
||||
}
|
||||
peer.Lock()
|
||||
peer.connections[toName] = conn
|
||||
peer.Unlock()
|
||||
peer.addConnection(conn)
|
||||
conn.log("connection added")
|
||||
}
|
||||
|
||||
@@ -227,21 +225,12 @@ func (peer *LocalPeer) handleDeleteConnection(conn *LocalConnection) {
|
||||
if connFound, found := peer.connections[toName]; !found || connFound != conn {
|
||||
return
|
||||
}
|
||||
peer.Lock()
|
||||
delete(peer.connections, toName)
|
||||
peer.Unlock()
|
||||
peer.deleteConnection(conn)
|
||||
conn.log("connection deleted")
|
||||
broadcast := false
|
||||
if conn.Established() {
|
||||
peer.Lock()
|
||||
peer.version += 1
|
||||
peer.Unlock()
|
||||
broadcast = true
|
||||
}
|
||||
// Must do garbage collection first to ensure we don't send out an
|
||||
// update with unreachable peers (can cause looping)
|
||||
peer.Router.Peers.GarbageCollect()
|
||||
if broadcast {
|
||||
if conn.Established() {
|
||||
peer.broadcastPeerUpdate()
|
||||
}
|
||||
}
|
||||
@@ -254,9 +243,7 @@ func (peer *LocalPeer) handleConnectionEstablished(conn *LocalConnection) {
|
||||
conn.CheckFatal(fmt.Errorf("Cannot set unknown connection active"))
|
||||
return
|
||||
}
|
||||
peer.Lock()
|
||||
peer.version += 1
|
||||
peer.Unlock()
|
||||
peer.connectionEstablished(conn)
|
||||
conn.log("connection fully established")
|
||||
peer.broadcastPeerUpdate(conn.Remote())
|
||||
}
|
||||
@@ -267,6 +254,28 @@ func (peer *LocalPeer) handleBroadcastTCP(msg []byte) {
|
||||
})
|
||||
}
|
||||
|
||||
func (peer *LocalPeer) addConnection(conn Connection) {
|
||||
peer.Lock()
|
||||
peer.connections[conn.Remote().Name] = conn
|
||||
peer.Unlock()
|
||||
}
|
||||
|
||||
func (peer *LocalPeer) deleteConnection(conn Connection) {
|
||||
established := conn.Established()
|
||||
peer.Lock()
|
||||
delete(peer.connections, conn.Remote().Name)
|
||||
if established {
|
||||
peer.version += 1
|
||||
}
|
||||
peer.Unlock()
|
||||
}
|
||||
|
||||
func (peer *LocalPeer) connectionEstablished(conn Connection) {
|
||||
peer.Lock()
|
||||
peer.version += 1
|
||||
peer.Unlock()
|
||||
}
|
||||
|
||||
func (peer *LocalPeer) broadcastPeerUpdate(peers ...*Peer) {
|
||||
peer.Router.Routes.Recalculate()
|
||||
peer.handleBroadcastTCP(Concat(ProtocolUpdateByte, EncodePeers(append(peers, peer.Peer)...)))
|
||||
|
||||
Reference in new issue
Block a user