forked from Qortal/qortal
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:
parent
0738dbd613
commit
8e59aa2885
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
@ -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++;
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user