From 8a0602732d645486c9d32c1baa00e062b91c2cd6 Mon Sep 17 00:00:00 2001 From: zab2 <zab2@mail.i2p> Date: Wed, 19 Dec 2018 10:51:53 +0000 Subject: [PATCH] Get call to system timer out of tight loop when counting connections --- .../src/net/i2p/router/transport/ntcp/NTCPConnection.java | 4 ++++ .../src/net/i2p/router/transport/ntcp/NTCPTransport.java | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) 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 de32aace41..44eaa40c74 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java @@ -415,9 +415,13 @@ public class NTCPConnection implements Closeable { /** @return milliseconds */ public long getTimeSinceSend() { return _context.clock().now()-_lastSendTime; } + + public long getTimeSinceSend(long now) { return now - _lastSendTime; } /** @return milliseconds */ public long getTimeSinceReceive() { return _context.clock().now()-_lastReceiveTime; } + + public long getTimeSinceReceive(long now) { return now - _lastReceiveTime; } /** @return milliseconds */ public long getTimeSinceCreated() { return _context.clock().now()-_created; } 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 a77bccbdb4..1ac28c64f5 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java @@ -707,12 +707,13 @@ 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(); int active = 0; for (NTCPConnection con : _conByIdent.values()) { // con initializes times at construction, // so check message count also - if ((con.getMessagesSent() > 0 && con.getTimeSinceSend() <= 5*60*1000) || - (con.getMessagesReceived() > 0 && con.getTimeSinceReceive() <= 5*60*1000)) { + if ((con.getMessagesSent() > 0 && con.getTimeSinceSend(now) <= 5*60*1000) || + (con.getMessagesReceived() > 0 && con.getTimeSinceReceive(now) <= 5*60*1000)) { active++; } } -- GitLab