diff --git a/gui/src/main/java/io/bitsquare/gui/main/settings/network/P2pNetworkListItem.java b/gui/src/main/java/io/bitsquare/gui/main/settings/network/P2pNetworkListItem.java index 47372515c5..d5ab8b80b6 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/settings/network/P2pNetworkListItem.java +++ b/gui/src/main/java/io/bitsquare/gui/main/settings/network/P2pNetworkListItem.java @@ -44,8 +44,6 @@ public class P2pNetworkListItem { private final StringProperty receivedBytes = new SimpleStringProperty(); private final StringProperty peerType = new SimpleStringProperty(); private final StringProperty connectionType = new SimpleStringProperty(); - - private final StringProperty roundTripTime = new SimpleStringProperty(); private final StringProperty onionAddress = new SimpleStringProperty(); private final Clock.Listener listener; @@ -63,7 +61,7 @@ public class P2pNetworkListItem { onionAddressSubscription = EasyBind.subscribe(connection.peersNodeAddressProperty(), nodeAddress -> onionAddress.set(nodeAddress != null ? nodeAddress.getFullAddress() : "Not known yet")); roundTripTimeSubscription = EasyBind.subscribe(statistic.roundTripTimeProperty(), - roundTripTime -> this.roundTripTime.set(DurationFormatUtils.formatDuration((long) roundTripTime, "ss.SSS"))); + roundTripTime -> this.roundTripTime.set((int) roundTripTime == 0 ? "-" : roundTripTime + " ms")); listener = new Clock.Listener() { @Override diff --git a/network/src/main/java/io/bitsquare/p2p/network/Statistic.java b/network/src/main/java/io/bitsquare/p2p/network/Statistic.java index 927127aad4..ac22e6f898 100644 --- a/network/src/main/java/io/bitsquare/p2p/network/Statistic.java +++ b/network/src/main/java/io/bitsquare/p2p/network/Statistic.java @@ -3,9 +3,7 @@ package io.bitsquare.p2p.network; import io.bitsquare.common.UserThread; import io.bitsquare.p2p.Message; import javafx.beans.property.IntegerProperty; -import javafx.beans.property.LongProperty; import javafx.beans.property.SimpleIntegerProperty; -import javafx.beans.property.SimpleLongProperty; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -51,7 +49,7 @@ public class Statistic { private final IntegerProperty receivedBytes = new SimpleIntegerProperty(0); private final Map receivedMessages = new ConcurrentHashMap<>(); private final Map sentMessages = new ConcurrentHashMap<>(); - private final LongProperty roundTripTime = new SimpleLongProperty(0); + private final IntegerProperty roundTripTime = new SimpleIntegerProperty(0); /////////////////////////////////////////////////////////////////////////////////////////// @@ -103,7 +101,7 @@ public class Statistic { sentMessages.put(messageClassName, counter); } - public void setRoundTripTime(long roundTripTime) { + public void setRoundTripTime(int roundTripTime) { this.roundTripTime.set(roundTripTime); } @@ -139,7 +137,7 @@ public class Statistic { return creationDate; } - public LongProperty roundTripTimeProperty() { + public IntegerProperty roundTripTimeProperty() { return roundTripTime; } diff --git a/network/src/main/java/io/bitsquare/p2p/peers/keepalive/KeepAliveHandler.java b/network/src/main/java/io/bitsquare/p2p/peers/keepalive/KeepAliveHandler.java index 8b26f5a1d9..5aef9d1ccb 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/keepalive/KeepAliveHandler.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/keepalive/KeepAliveHandler.java @@ -79,7 +79,7 @@ class KeepAliveHandler implements MessageListener { private void sendPing(Connection connection) { Log.traceCall("connection=" + connection + " / this=" + this); if (!stopped) { - Ping ping = new Ping(nonce); + Ping ping = new Ping(nonce, connection.getStatistic().roundTripTimeProperty().get()); sendTs = System.currentTimeMillis(); SettableFuture future = networkNode.sendMessage(connection, ping); Futures.addCallback(future, new FutureCallback() { @@ -127,7 +127,7 @@ class KeepAliveHandler implements MessageListener { if (!stopped) { Pong pong = (Pong) message; if (pong.requestNonce == nonce) { - long roundTripTime = System.currentTimeMillis() - sendTs; + int roundTripTime = (int) (System.currentTimeMillis() - sendTs); log.trace("roundTripTime=" + roundTripTime + "\n\tconnection=" + connection); connection.getStatistic().setRoundTripTime(roundTripTime); cleanup(); diff --git a/network/src/main/java/io/bitsquare/p2p/peers/keepalive/KeepAliveManager.java b/network/src/main/java/io/bitsquare/p2p/peers/keepalive/KeepAliveManager.java index 6d0d071844..75a5afd070 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/keepalive/KeepAliveManager.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/keepalive/KeepAliveManager.java @@ -79,6 +79,10 @@ public class KeepAliveManager implements MessageListener, ConnectionListener, Pe Log.traceCall(message.toString() + "\n\tconnection=" + connection); if (!stopped) { Ping ping = (Ping) message; + + // We get from peer last measured rrt + connection.getStatistic().setRoundTripTime(ping.lastRoundTripTime); + Pong pong = new Pong(ping.nonce); SettableFuture future = networkNode.sendMessage(connection, pong); Futures.addCallback(future, new FutureCallback() { diff --git a/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/Ping.java b/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/Ping.java index c36dd17f96..a8d45ee2e0 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/Ping.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/Ping.java @@ -7,9 +7,11 @@ public final class Ping extends KeepAliveMessage { private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; public final int nonce; + public final int lastRoundTripTime; - public Ping(int nonce) { + public Ping(int nonce, int lastRoundTripTime) { this.nonce = nonce; + this.lastRoundTripTime = lastRoundTripTime; } @Override