diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/PeerHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/PeerHelper.java
index 02297e2e2..ad4ee8d0b 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/PeerHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/PeerHelper.java
@@ -288,6 +288,7 @@ public class PeerHelper extends HelperBase {
" \n");
out.write(buf.toString());
buf.setLength(0);
+ long now = _context.clock().now();
for (NTCPConnection con : peers) {
buf.append("
");
buf.append(_context.commSystem().renderPeerHTML(con.getRemotePeer().calculateHash()));
@@ -306,10 +307,10 @@ public class PeerHelper extends HelperBase {
buf.append("");
buf.append(" | ").append(con.getVersion());
buf.append(" | ");
- buf.append(DataHelper.formatDuration2(con.getTimeSinceReceive()));
- buf.append("").append(THINSP).append("").append(DataHelper.formatDuration2(con.getTimeSinceSend()));
+ buf.append(DataHelper.formatDuration2(con.getTimeSinceReceive(now)));
+ buf.append("").append(THINSP).append("").append(DataHelper.formatDuration2(con.getTimeSinceSend(now)));
buf.append(" | ");
- if (con.getTimeSinceReceive() < 2*60*1000) {
+ if (con.getTimeSinceReceive(now) < 2*60*1000) {
float r = con.getRecvRate();
buf.append(formatRate(r / 1000));
bpsRecv += r;
@@ -317,7 +318,7 @@ public class PeerHelper extends HelperBase {
buf.append(formatRate(0));
}
buf.append("").append(THINSP).append("");
- if (con.getTimeSinceSend() < 2*60*1000) {
+ if (con.getTimeSinceSend(now) < 2*60*1000) {
float r = con.getSendRate();
buf.append(formatRate(r / 1000));
bpsSend += r;
diff --git a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java
index e64011f0d..5c208cd38 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java
@@ -262,7 +262,7 @@ class EventPumper implements Runnable {
*/
if ((!key.isValid()) &&
(!((SocketChannel)key.channel()).isConnectionPending()) &&
- con.getTimeSinceCreated() > 2 * NTCPTransport.ESTABLISH_TIMEOUT) {
+ con.getTimeSinceCreated(now) > 2 * NTCPTransport.ESTABLISH_TIMEOUT) {
if (_log.shouldLog(Log.INFO))
_log.info("Removing invalid key for " + con);
// this will cancel the key, and it will then be removed from the keyset
@@ -293,8 +293,8 @@ class EventPumper implements Runnable {
expire = _expireIdleWriteTime;
}
- if ( con.getTimeSinceSend() > expire &&
- con.getTimeSinceReceive() > expire) {
+ if ( con.getTimeSinceSend(now) > expire &&
+ con.getTimeSinceReceive(now) > expire) {
// we haven't sent or received anything in a really long time, so lets just close 'er up
con.sendTerminationAndClose();
if (_log.shouldInfo())
diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
index 44eaa40c7..f34ad6008 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
@@ -416,16 +416,30 @@ public class NTCPConnection implements Closeable {
/** @return milliseconds */
public long getTimeSinceSend() { return _context.clock().now()-_lastSendTime; }
+ /**
+ * @return milliseconds
+ * @since 0.9.38
+ */
public long getTimeSinceSend(long now) { return now - _lastSendTime; }
/** @return milliseconds */
public long getTimeSinceReceive() { return _context.clock().now()-_lastReceiveTime; }
+ /**
+ * @return milliseconds
+ * @since 0.9.38
+ */
public long getTimeSinceReceive(long now) { return now - _lastReceiveTime; }
/** @return milliseconds */
public long getTimeSinceCreated() { return _context.clock().now()-_created; }
+ /**
+ * @return milliseconds
+ * @since 0.9.38
+ */
+ public long getTimeSinceCreated(long now) { return now -_created; }
+
/**
* @return when this connection was created (not established)
* @since 0.9.20
diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
index 1ac28c64f..e05a935a6 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
@@ -707,7 +707,7 @@ public class NTCPTransport extends TransportImpl {
* As of 0.9.20, actually returns active peer count, not total.
*/
public int countActivePeers() {
- final long now = _context.clock().now();
+ final long now = _context.clock().now();
int active = 0;
for (NTCPConnection con : _conByIdent.values()) {
// con initializes times at construction,
@@ -724,11 +724,12 @@ public class NTCPTransport extends TransportImpl {
* How many peers are we actively sending messages to (this minute)
*/
public int countActiveSendPeers() {
+ final long now = _context.clock().now();
int active = 0;
for (NTCPConnection con : _conByIdent.values()) {
// con initializes times at construction,
// so check message count also
- if (con.getMessagesSent() > 0 && con.getTimeSinceSend() <= 60*1000) {
+ if (con.getMessagesSent() > 0 && con.getTimeSinceSend(now) <= 60*1000) {
active++;
}
}
@@ -1104,12 +1105,13 @@ public class NTCPTransport extends TransportImpl {
*/
void expireTimedOut() {
int expired = 0;
+ final long now = _context.clock().now();
for (Iterator iter = _establishing.iterator(); iter.hasNext(); ) {
NTCPConnection con = iter.next();
if (con.isClosed() || con.isEstablished()) {
iter.remove();
- } else if (con.getTimeSinceCreated() > ESTABLISH_TIMEOUT) {
+ } else if (con.getTimeSinceCreated(now) > ESTABLISH_TIMEOUT) {
iter.remove();
con.close();
expired++;
|