mirror of
https://github.com/Qortal/qortal.git
synced 2025-04-01 17:55:54 +00:00
Merge 421a1a704c51310d57f192e002b67325cf78c701 into 8ffb0625a1edcf0b3d1ec2498b15a31ec38ade3c
This commit is contained in:
commit
4b012a86bd
@ -14,31 +14,51 @@ public class PingTask implements Task {
|
|||||||
|
|
||||||
private final Peer peer;
|
private final Peer peer;
|
||||||
private final Long now;
|
private final Long now;
|
||||||
private final String name;
|
private String name; // Lazy initialization
|
||||||
|
|
||||||
public PingTask(Peer peer, Long now) {
|
public PingTask(Peer peer, Long now) {
|
||||||
this.peer = peer;
|
this.peer = peer;
|
||||||
this.now = now;
|
this.now = now;
|
||||||
this.name = "PingTask::" + peer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
if (name == null) {
|
||||||
|
name = "PingTask::" + peer;
|
||||||
|
}
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void perform() throws InterruptedException {
|
public void perform() throws InterruptedException {
|
||||||
PingMessage pingMessage = new PingMessage();
|
try {
|
||||||
Message message = peer.getResponse(pingMessage);
|
// Create a PingMessage
|
||||||
|
PingMessage pingMessage = new PingMessage();
|
||||||
|
Message responseMessage = peer.getResponse(pingMessage);
|
||||||
|
|
||||||
if (message == null || message.getType() != MessageType.PING) {
|
// Validate the response
|
||||||
LOGGER.debug("[{}] Didn't receive reply from {} for PING ID {}",
|
if (responseMessage == null || responseMessage.getType() != MessageType.PING) {
|
||||||
peer.getPeerConnectionId(), peer, pingMessage.getId());
|
LOGGER.debug("[{}] No PING response received from {} for PING ID {}",
|
||||||
peer.disconnect("no ping received");
|
peer.getPeerConnectionId(), peer, pingMessage.getId());
|
||||||
return;
|
peer.disconnect("No PING response received");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate round-trip time and update peer
|
||||||
|
long currentTime = NTP.getTime();
|
||||||
|
if (currentTime == null) {
|
||||||
|
LOGGER.warn("NTP time unavailable during PING task for peer {}", peer);
|
||||||
|
peer.disconnect("NTP time unavailable");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
peer.setLastPing(currentTime - now);
|
||||||
|
LOGGER.debug("[{}] PING successful with {} (round-trip time: {} ms)",
|
||||||
|
peer.getPeerConnectionId(), peer, currentTime - now);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
LOGGER.error("Error during PING task for peer {}: {}", peer, e.getMessage(), e);
|
||||||
|
peer.disconnect("Error during PING task");
|
||||||
}
|
}
|
||||||
|
|
||||||
peer.setLastPing(NTP.getTime() - now);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user