Peer getter methods renamed to include "immutable", for consistency with underlying lists and also to make it clearer to the callers.

This commit is contained in:
CalDescent 2022-03-11 13:00:47 +00:00
parent 0738dbd613
commit 8e59aa2885
10 changed files with 34 additions and 35 deletions

View File

@ -26,7 +26,7 @@ public class NodeStatus {
this.syncPercent = Synchronizer.getInstance().getSyncPercent(); this.syncPercent = Synchronizer.getInstance().getSyncPercent();
this.isSynchronizing = this.syncPercent != null; this.isSynchronizing = this.syncPercent != null;
this.numberOfConnections = Network.getInstance().getHandshakedPeers().size(); this.numberOfConnections = Network.getInstance().getImmutableHandshakedPeers().size();
this.height = Controller.getInstance().getChainHeight(); this.height = Controller.getInstance().getChainHeight();
} }

View File

@ -35,7 +35,6 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.RollingFileAppender; import org.apache.logging.log4j.core.appender.RollingFileAppender;
import org.checkerframework.checker.units.qual.A;
import org.qortal.account.Account; import org.qortal.account.Account;
import org.qortal.account.PrivateKeyAccount; import org.qortal.account.PrivateKeyAccount;
import org.qortal.api.*; import org.qortal.api.*;
@ -514,7 +513,7 @@ public class AdminResource {
PeerAddress peerAddress = PeerAddress.fromString(targetPeerAddress); PeerAddress peerAddress = PeerAddress.fromString(targetPeerAddress);
InetSocketAddress resolvedAddress = peerAddress.toSocketAddress(); InetSocketAddress resolvedAddress = peerAddress.toSocketAddress();
List<Peer> peers = Network.getInstance().getHandshakedPeers(); List<Peer> peers = Network.getInstance().getImmutableHandshakedPeers();
Peer targetPeer = peers.stream().filter(peer -> peer.getResolvedAddress().equals(resolvedAddress)).findFirst().orElse(null); Peer targetPeer = peers.stream().filter(peer -> peer.getResolvedAddress().equals(resolvedAddress)).findFirst().orElse(null);
if (targetPeer == null) if (targetPeer == null)

View File

@ -61,7 +61,7 @@ public class PeersResource {
} }
) )
public List<ConnectedPeer> getPeers() { public List<ConnectedPeer> getPeers() {
return Network.getInstance().getConnectedPeers().stream().map(ConnectedPeer::new).collect(Collectors.toList()); return Network.getInstance().getImmutableConnectedPeers().stream().map(ConnectedPeer::new).collect(Collectors.toList());
} }
@GET @GET
@ -304,7 +304,7 @@ public class PeersResource {
PeerAddress peerAddress = PeerAddress.fromString(targetPeerAddress); PeerAddress peerAddress = PeerAddress.fromString(targetPeerAddress);
InetSocketAddress resolvedAddress = peerAddress.toSocketAddress(); InetSocketAddress resolvedAddress = peerAddress.toSocketAddress();
List<Peer> peers = Network.getInstance().getHandshakedPeers(); List<Peer> peers = Network.getInstance().getImmutableHandshakedPeers();
Peer targetPeer = peers.stream().filter(peer -> peer.getResolvedAddress().equals(resolvedAddress)).findFirst().orElse(null); Peer targetPeer = peers.stream().filter(peer -> peer.getResolvedAddress().equals(resolvedAddress)).findFirst().orElse(null);
if (targetPeer == null) if (targetPeer == null)
@ -352,7 +352,7 @@ public class PeersResource {
public PeersSummary peersSummary() { public PeersSummary peersSummary() {
PeersSummary peersSummary = new PeersSummary(); PeersSummary peersSummary = new PeersSummary();
List<Peer> connectedPeers = Network.getInstance().getConnectedPeers().stream().collect(Collectors.toList()); List<Peer> connectedPeers = Network.getInstance().getImmutableConnectedPeers().stream().collect(Collectors.toList());
for (Peer peer : connectedPeers) { for (Peer peer : connectedPeers) {
if (!peer.isOutbound()) { if (!peer.isOutbound()) {
peersSummary.inboundConnections++; peersSummary.inboundConnections++;

View File

@ -149,7 +149,7 @@ public class BlockMinter extends Thread {
} }
// Needs a mutable copy of the unmodifiableList // Needs a mutable copy of the unmodifiableList
List<Peer> peers = new ArrayList<>(Network.getInstance().getHandshakedPeers()); List<Peer> peers = new ArrayList<>(Network.getInstance().getImmutableHandshakedPeers());
BlockData lastBlockData = blockRepository.getLastBlock(); BlockData lastBlockData = blockRepository.getLastBlock();
// Disregard peers that have "misbehaved" recently // Disregard peers that have "misbehaved" recently
@ -545,7 +545,7 @@ public class BlockMinter extends Thread {
} }
NumberFormat formatter = new DecimalFormat("0.###E0"); NumberFormat formatter = new DecimalFormat("0.###E0");
List<Peer> peers = Network.getInstance().getHandshakedPeers(); List<Peer> peers = Network.getInstance().getImmutableHandshakedPeers();
// Loop through handshaked peers and check for any new block candidates // Loop through handshaked peers and check for any new block candidates
for (Peer peer : peers) { for (Peer peer : peers) {
if (peer.getCommonBlockData() != null && peer.getCommonBlockData().getCommonBlockSummary() != null) { if (peer.getCommonBlockData() != null && peer.getCommonBlockData().getCommonBlockSummary() != null) {

View File

@ -717,7 +717,7 @@ public class Controller extends Thread {
return; return;
} }
final int numberOfPeers = Network.getInstance().getHandshakedPeers().size(); final int numberOfPeers = Network.getInstance().getImmutableHandshakedPeers().size();
final int height = getChainHeight(); final int height = getChainHeight();
@ -1447,7 +1447,7 @@ public class Controller extends Thread {
return null; return null;
// Needs a mutable copy of the unmodifiableList // Needs a mutable copy of the unmodifiableList
List<Peer> peers = new ArrayList<>(Network.getInstance().getHandshakedPeers()); List<Peer> peers = new ArrayList<>(Network.getInstance().getImmutableHandshakedPeers());
// Filter out unsuitable peers // Filter out unsuitable peers
Iterator<Peer> iterator = peers.iterator(); Iterator<Peer> iterator = peers.iterator();
@ -1497,7 +1497,7 @@ public class Controller extends Thread {
return false; return false;
// Needs a mutable copy of the unmodifiableList // Needs a mutable copy of the unmodifiableList
List<Peer> peers = new ArrayList<>(Network.getInstance().getHandshakedPeers()); List<Peer> peers = new ArrayList<>(Network.getInstance().getImmutableHandshakedPeers());
if (peers == null) if (peers == null)
return false; return false;

View File

@ -196,7 +196,7 @@ public class Synchronizer extends Thread {
return true; return true;
// Needs a mutable copy of the unmodifiableList // Needs a mutable copy of the unmodifiableList
List<Peer> peers = new ArrayList<>(Network.getInstance().getHandshakedPeers()); List<Peer> peers = new ArrayList<>(Network.getInstance().getImmutableHandshakedPeers());
// Disregard peers that have "misbehaved" recently // Disregard peers that have "misbehaved" recently
peers.removeIf(Controller.hasMisbehaved); peers.removeIf(Controller.hasMisbehaved);
@ -213,7 +213,7 @@ public class Synchronizer extends Thread {
checkRecoveryModeForPeers(peers); checkRecoveryModeForPeers(peers);
if (recoveryMode) { if (recoveryMode) {
// Needs a mutable copy of the unmodifiableList // Needs a mutable copy of the unmodifiableList
peers = new ArrayList<>(Network.getInstance().getHandshakedPeers()); peers = new ArrayList<>(Network.getInstance().getImmutableHandshakedPeers());
peers.removeIf(Controller.hasOnlyGenesisBlock); peers.removeIf(Controller.hasOnlyGenesisBlock);
peers.removeIf(Controller.hasMisbehaved); peers.removeIf(Controller.hasMisbehaved);
peers.removeIf(Controller.hasOldVersion); peers.removeIf(Controller.hasOldVersion);
@ -372,7 +372,7 @@ public class Synchronizer extends Thread {
} }
private boolean checkRecoveryModeForPeers(List<Peer> qualifiedPeers) { private boolean checkRecoveryModeForPeers(List<Peer> qualifiedPeers) {
List<Peer> handshakedPeers = Network.getInstance().getHandshakedPeers(); List<Peer> handshakedPeers = Network.getInstance().getImmutableHandshakedPeers();
if (handshakedPeers.size() > 0) { if (handshakedPeers.size() > 0) {
// There is at least one handshaked peer // There is at least one handshaked peer

View File

@ -268,7 +268,7 @@ public class ArbitraryDataFileListManager {
} }
this.addToSignatureRequests(signature58, true, false); this.addToSignatureRequests(signature58, true, false);
List<Peer> handshakedPeers = Network.getInstance().getHandshakedPeers(); List<Peer> handshakedPeers = Network.getInstance().getImmutableHandshakedPeers();
List<byte[]> missingHashes = null; List<byte[]> missingHashes = null;
// Find hashes that we are missing // Find hashes that we are missing

View File

@ -111,7 +111,7 @@ public class ArbitraryDataManager extends Thread {
} }
// Needs a mutable copy of the unmodifiableList // Needs a mutable copy of the unmodifiableList
List<Peer> peers = new ArrayList<>(Network.getInstance().getHandshakedPeers()); List<Peer> peers = new ArrayList<>(Network.getInstance().getImmutableHandshakedPeers());
// Disregard peers that have "misbehaved" recently // Disregard peers that have "misbehaved" recently
peers.removeIf(Controller.hasMisbehaved); peers.removeIf(Controller.hasMisbehaved);

View File

@ -139,7 +139,7 @@ public class ArbitraryMetadataManager {
} }
this.addToSignatureRequests(signature58, true, false); this.addToSignatureRequests(signature58, true, false);
List<Peer> handshakedPeers = Network.getInstance().getHandshakedPeers(); List<Peer> handshakedPeers = Network.getInstance().getImmutableHandshakedPeers();
LOGGER.debug(String.format("Sending metadata request for signature %s to %d peers...", signature58, handshakedPeers.size())); LOGGER.debug(String.format("Sending metadata request for signature %s to %d peers...", signature58, handshakedPeers.size()));
// Build request // Build request

View File

@ -253,7 +253,7 @@ public class Network {
} }
} }
public List<Peer> getConnectedPeers() { public List<Peer> getImmutableConnectedPeers() {
return this.immutableConnectedPeers; return this.immutableConnectedPeers;
} }
@ -302,14 +302,14 @@ public class Network {
} }
// Check if we're already connected to and handshaked with this peer // Check if we're already connected to and handshaked with this peer
Peer connectedPeer = this.getConnectedPeers().stream() Peer connectedPeer = this.getImmutableConnectedPeers().stream()
.filter(p -> p.getPeerData().getAddress().equals(peerAddress)) .filter(p -> p.getPeerData().getAddress().equals(peerAddress))
.findFirst() .findFirst()
.orElse(null); .orElse(null);
boolean isConnected = (connectedPeer != null); boolean isConnected = (connectedPeer != null);
boolean isHandshaked = this.getHandshakedPeers().stream() boolean isHandshaked = this.getImmutableHandshakedPeers().stream()
.anyMatch(p -> p.getPeerData().getAddress().equals(peerAddress)); .anyMatch(p -> p.getPeerData().getAddress().equals(peerAddress));
if (isConnected && isHandshaked) { if (isConnected && isHandshaked) {
@ -353,7 +353,7 @@ public class Network {
/** /**
* Returns list of connected peers that have completed handshaking. * Returns list of connected peers that have completed handshaking.
*/ */
public List<Peer> getHandshakedPeers() { public List<Peer> getImmutableHandshakedPeers() {
return this.immutableHandshakedPeers; return this.immutableHandshakedPeers;
} }
@ -380,7 +380,7 @@ public class Network {
/** /**
* Returns list of peers we connected to that have completed handshaking. * Returns list of peers we connected to that have completed handshaking.
*/ */
public List<Peer> getOutboundHandshakedPeers() { public List<Peer> getImmutableOutboundHandshakedPeers() {
return this.immutableOutboundHandshakedPeers; return this.immutableOutboundHandshakedPeers;
} }
@ -404,7 +404,7 @@ public class Network {
* Returns first peer that has completed handshaking and has matching public key. * Returns first peer that has completed handshaking and has matching public key.
*/ */
public Peer getHandshakedPeerWithPublicKey(byte[] publicKey) { public Peer getHandshakedPeerWithPublicKey(byte[] publicKey) {
return this.getConnectedPeers().stream() return this.getImmutableConnectedPeers().stream()
.filter(peer -> peer.getHandshakeStatus() == Handshake.COMPLETED .filter(peer -> peer.getHandshakeStatus() == Handshake.COMPLETED
&& Arrays.equals(peer.getPeersPublicKey(), publicKey)) && Arrays.equals(peer.getPeersPublicKey(), publicKey))
.findFirst().orElse(null); .findFirst().orElse(null);
@ -422,13 +422,13 @@ public class Network {
private final Predicate<PeerData> isConnectedPeer = peerData -> { private final Predicate<PeerData> isConnectedPeer = peerData -> {
PeerAddress peerAddress = peerData.getAddress(); PeerAddress peerAddress = peerData.getAddress();
return this.getConnectedPeers().stream().anyMatch(peer -> peer.getPeerData().getAddress().equals(peerAddress)); return this.getImmutableConnectedPeers().stream().anyMatch(peer -> peer.getPeerData().getAddress().equals(peerAddress));
}; };
private final Predicate<PeerData> isResolvedAsConnectedPeer = peerData -> { private final Predicate<PeerData> isResolvedAsConnectedPeer = peerData -> {
try { try {
InetSocketAddress resolvedSocketAddress = peerData.getAddress().toSocketAddress(); InetSocketAddress resolvedSocketAddress = peerData.getAddress().toSocketAddress();
return this.getConnectedPeers().stream() return this.getImmutableConnectedPeers().stream()
.anyMatch(peer -> peer.getResolvedAddress().equals(resolvedSocketAddress)); .anyMatch(peer -> peer.getResolvedAddress().equals(resolvedSocketAddress));
} catch (UnknownHostException e) { } catch (UnknownHostException e) {
// Can't resolve - no point even trying to connect // Can't resolve - no point even trying to connect
@ -494,7 +494,7 @@ public class Network {
} }
private Task maybeProducePeerMessageTask() { private Task maybeProducePeerMessageTask() {
for (Peer peer : getConnectedPeers()) { for (Peer peer : getImmutableConnectedPeers()) {
Task peerTask = peer.getMessageTask(); Task peerTask = peer.getMessageTask();
if (peerTask != null) { if (peerTask != null) {
return peerTask; return peerTask;
@ -506,7 +506,7 @@ public class Network {
private Task maybeProducePeerPingTask(Long now) { private Task maybeProducePeerPingTask(Long now) {
// Ask connected peers whether they need a ping // Ask connected peers whether they need a ping
for (Peer peer : getHandshakedPeers()) { for (Peer peer : getImmutableHandshakedPeers()) {
Task peerTask = peer.getPingTask(now); Task peerTask = peer.getPingTask(now);
if (peerTask != null) { if (peerTask != null) {
return peerTask; return peerTask;
@ -534,7 +534,7 @@ public class Network {
return null; return null;
} }
if (getOutboundHandshakedPeers().size() >= minOutboundPeers) { if (getImmutableOutboundHandshakedPeers().size() >= minOutboundPeers) {
return null; return null;
} }
@ -798,7 +798,7 @@ public class Network {
} }
private Peer getPeerFromChannel(SocketChannel socketChannel) { private Peer getPeerFromChannel(SocketChannel socketChannel) {
for (Peer peer : this.getConnectedPeers()) { for (Peer peer : this.getImmutableConnectedPeers()) {
if (peer.getSocketChannel() == socketChannel) { if (peer.getSocketChannel() == socketChannel) {
return peer; return peer;
} }
@ -813,7 +813,7 @@ public class Network {
} }
// Find peers that have reached their maximum connection age, and disconnect them // Find peers that have reached their maximum connection age, and disconnect them
List<Peer> peersToDisconnect = this.getConnectedPeers().stream() List<Peer> peersToDisconnect = this.getImmutableConnectedPeers().stream()
.filter(peer -> !peer.isSyncInProgress()) .filter(peer -> !peer.isSyncInProgress())
.filter(peer -> peer.hasReachedMaxConnectionAge()) .filter(peer -> peer.hasReachedMaxConnectionAge())
.collect(Collectors.toList()); .collect(Collectors.toList());
@ -1290,7 +1290,7 @@ public class Network {
} }
} }
for (Peer peer : this.getConnectedPeers()) { for (Peer peer : this.getImmutableConnectedPeers()) {
peer.disconnect("to be forgotten"); peer.disconnect("to be forgotten");
} }
@ -1302,7 +1302,7 @@ public class Network {
try { try {
InetSocketAddress knownAddress = peerAddress.toSocketAddress(); InetSocketAddress knownAddress = peerAddress.toSocketAddress();
List<Peer> peers = this.getConnectedPeers(); List<Peer> peers = this.getImmutableConnectedPeers();
peers.removeIf(peer -> !Peer.addressEquals(knownAddress, peer.getResolvedAddress())); peers.removeIf(peer -> !Peer.addressEquals(knownAddress, peer.getResolvedAddress()));
for (Peer peer : peers) { for (Peer peer : peers) {
@ -1323,7 +1323,7 @@ public class Network {
// Disconnect peers that are stuck during handshake // Disconnect peers that are stuck during handshake
// Needs a mutable copy of the unmodifiableList // Needs a mutable copy of the unmodifiableList
List<Peer> handshakePeers = new ArrayList<>(this.getConnectedPeers()); List<Peer> handshakePeers = new ArrayList<>(this.getImmutableConnectedPeers());
// Disregard peers that have completed handshake or only connected recently // Disregard peers that have completed handshake or only connected recently
handshakePeers.removeIf(peer -> peer.getHandshakeStatus() == Handshake.COMPLETED handshakePeers.removeIf(peer -> peer.getHandshakeStatus() == Handshake.COMPLETED
@ -1500,7 +1500,7 @@ public class Network {
} }
try { try {
broadcastExecutor.execute(new Broadcaster(this.getHandshakedPeers(), peerMessageBuilder)); broadcastExecutor.execute(new Broadcaster(this.getImmutableHandshakedPeers(), peerMessageBuilder));
} catch (RejectedExecutionException e) { } catch (RejectedExecutionException e) {
// Can't execute - probably because we're shutting down, so ignore // Can't execute - probably because we're shutting down, so ignore
} }
@ -1538,7 +1538,7 @@ public class Network {
} }
// Close all peer connections // Close all peer connections
for (Peer peer : this.getConnectedPeers()) { for (Peer peer : this.getImmutableConnectedPeers()) {
peer.shutdown(); peer.shutdown();
} }
} }