forked from Qortal/qortal
Disregard misbehaved peers before counting to see if we can synchronize.
Also added simple system-tray tooltip update to show number of peers and current height.
This commit is contained in:
parent
915eebb8e5
commit
5b70f0004d
@ -35,6 +35,7 @@ import org.qora.data.transaction.ArbitraryTransactionData;
|
|||||||
import org.qora.data.transaction.ArbitraryTransactionData.DataType;
|
import org.qora.data.transaction.ArbitraryTransactionData.DataType;
|
||||||
import org.qora.data.transaction.TransactionData;
|
import org.qora.data.transaction.TransactionData;
|
||||||
import org.qora.gui.Gui;
|
import org.qora.gui.Gui;
|
||||||
|
import org.qora.gui.SysTray;
|
||||||
import org.qora.network.Network;
|
import org.qora.network.Network;
|
||||||
import org.qora.network.Peer;
|
import org.qora.network.Peer;
|
||||||
import org.qora.network.message.ArbitraryDataMessage;
|
import org.qora.network.message.ArbitraryDataMessage;
|
||||||
@ -304,15 +305,12 @@ public class Controller extends Thread {
|
|||||||
private void potentiallySynchronize() {
|
private void potentiallySynchronize() {
|
||||||
List<Peer> peers = Network.getInstance().getUniqueHandshakedPeers();
|
List<Peer> peers = Network.getInstance().getUniqueHandshakedPeers();
|
||||||
|
|
||||||
// Check we have enough peers to potentially synchronize
|
|
||||||
if (peers.size() < Settings.getInstance().getMinBlockchainPeers())
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Disregard peers that have "misbehaved" recently
|
// Disregard peers that have "misbehaved" recently
|
||||||
peers.removeIf(hasPeerMisbehaved);
|
peers.removeIf(hasPeerMisbehaved);
|
||||||
|
|
||||||
// Remove peers with unknown height, lower height or same height and same block signature (unless we don't have their block signature)
|
// Check we have enough peers to potentially synchronize
|
||||||
// peers.removeIf(hasShorterBlockchain());
|
if (peers.size() < Settings.getInstance().getMinBlockchainPeers())
|
||||||
|
return;
|
||||||
|
|
||||||
// Disregard peers that don't have a recent block
|
// Disregard peers that don't have a recent block
|
||||||
final long minLatestBlockTimestamp = getMinimumLatestBlockTimestamp();
|
final long minLatestBlockTimestamp = getMinimumLatestBlockTimestamp();
|
||||||
@ -361,6 +359,7 @@ public class Controller extends Thread {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case OK:
|
case OK:
|
||||||
|
updateSysTray();
|
||||||
case NOTHING_TO_DO:
|
case NOTHING_TO_DO:
|
||||||
LOGGER.debug(String.format("Synchronized with peer %s (%s)", peer, syncResult.name()));
|
LOGGER.debug(String.format("Synchronized with peer %s (%s)", peer, syncResult.name()));
|
||||||
break;
|
break;
|
||||||
@ -373,6 +372,15 @@ public class Controller extends Thread {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateSysTray() {
|
||||||
|
final int numberOfPeers = Network.getInstance().getUniqueHandshakedPeers().size();
|
||||||
|
|
||||||
|
final int height = getChainHeight();
|
||||||
|
|
||||||
|
String tooltip = String.format("qora-core - %d peer%s - height %d", numberOfPeers, (numberOfPeers != 1 ? "s" : ""), height);
|
||||||
|
SysTray.getInstance().setToolTipText(tooltip);
|
||||||
|
}
|
||||||
|
|
||||||
// Shutdown
|
// Shutdown
|
||||||
|
|
||||||
public void shutdown() {
|
public void shutdown() {
|
||||||
@ -492,6 +500,12 @@ public class Controller extends Thread {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateSysTray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onPeerDisconnect(Peer peer) {
|
||||||
|
updateSysTray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onNetworkMessage(Peer peer, Message message) {
|
public void onNetworkMessage(Peer peer, Message message) {
|
||||||
|
@ -377,6 +377,9 @@ public class Network extends Thread {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onDisconnect(Peer peer) {
|
public void onDisconnect(Peer peer) {
|
||||||
|
// Notify Controller
|
||||||
|
Controller.getInstance().onPeerDisconnect(peer);
|
||||||
|
|
||||||
synchronized (this.connectedPeers) {
|
synchronized (this.connectedPeers) {
|
||||||
this.connectedPeers.remove(peer);
|
this.connectedPeers.remove(peer);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user