diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/InternalSocketRunner.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/InternalSocketRunner.java index 5e3eefd4f..d6f4dcc39 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/InternalSocketRunner.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/InternalSocketRunner.java @@ -12,6 +12,7 @@ import net.i2p.util.Log; * Listen for in-JVM connections on the internal "socket" * * @author zzz + * @since 0.7.9 */ class InternalSocketRunner implements Runnable { private I2PTunnelClientBase client; diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/Messages.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/Messages.java index 78f9a4d30..071123a2e 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/Messages.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/Messages.java @@ -5,6 +5,7 @@ import net.i2p.util.Translate; /** * Translate strings for this package. + * @since 0.7.9 */ public class Messages { private static final String BUNDLE_NAME = "net.i2p.i2ptunnel.web.messages"; diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java index 23f297031..89922dec8 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java @@ -126,6 +126,13 @@ public class SummaryBarRenderer { .append(_("Textual router performance statistics")) .append("\">") .append(_("Stats")) + .append("\n" + + + "") + .append(_("I2PTunnel")) + .append("\n"); out.write(buf.toString()); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java index f9d276c8d..d1e8cb7fd 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java @@ -358,52 +358,58 @@ public class SummaryHelper extends HelperBase { } /** - * How many client destinations are connected locally. + * Client destinations connected locally. * * @return html section summary */ public String getDestinations() { - // covert the set to a list so we can sort by name and not lose duplicates - List clients = new ArrayList(_context.clientManager().listClients()); - Collections.sort(clients, new AlphaComparator()); + // convert the set to a list so we can sort by name and not lose duplicates + List clients = new ArrayList(_context.clientManager().listClients()); StringBuilder buf = new StringBuilder(512); - buf.append("

").append(_("Local Destinations")).append("


"); - - for (Iterator iter = clients.iterator(); iter.hasNext(); ) { - Destination client = (Destination)iter.next(); - String name = getName(client); - Hash h = client.calculateHash(); + buf.append("

").append(_("Local Destinations")).append("


"); + if (clients.size() > 0) { + Collections.sort(clients, new AlphaComparator()); + buf.append("
"); - buf.append("\n"); - LeaseSet ls = _context.netDb().lookupLeaseSetLocally(h); - if (ls != null) { - long timeToExpire = ls.getEarliestLeaseDate() - _context.clock().now(); - if (timeToExpire < 0) { - // red or yellow light - buf.append("\n"); + for (Iterator iter = clients.iterator(); iter.hasNext(); ) { + Destination client = iter.next(); + String name = getName(client); + Hash h = client.calculateHash(); + + buf.append("\n"); + LeaseSet ls = _context.netDb().lookupLeaseSetLocally(h); + if (ls != null) { + long timeToExpire = ls.getEarliestLeaseDate() - _context.clock().now(); + if (timeToExpire < 0) { + // red or yellow light + buf.append("\n"); + } else { + // green light + buf.append("\n"); + } } else { - // green light - buf.append("\n"); + // yellow light + buf.append("\n"); } - } else { - // yellow light - buf.append("\n"); } + buf.append("
\"Server\""); - else - buf.append("client.png\" alt=\"Client\" title=\"" + _("Client") + "\">"); - buf.append(""); - if (name.length() < 16) - buf.append(name); - else - buf.append(name.substring(0,15)).append("…"); - buf.append("\"").append(_("Rebuilding")).append("…\"
\"Server\""); + else + buf.append("client.png\" alt=\"Client\" title=\"" + _("Client") + "\">"); + buf.append(""); + if (name.length() < 16) + buf.append(name); + else + buf.append(name.substring(0,15)).append("…"); + buf.append("\"").append(_("Rebuilding")).append("…\"
\"Ready\"
\"Ready\"
\"").append(_("Building")).append("…\"
\"").append(_("Building")).append("…\"
"); + } else { + buf.append("
").append(_("none")).append("
"); } - buf.append("

\n"); + buf.append("
\n"); return buf.toString(); } diff --git a/apps/susidns/src/java/src/i2p/susi/dns/Messages.java b/apps/susidns/src/java/src/i2p/susi/dns/Messages.java index dd04c6289..b596a3be9 100644 --- a/apps/susidns/src/java/src/i2p/susi/dns/Messages.java +++ b/apps/susidns/src/java/src/i2p/susi/dns/Messages.java @@ -5,6 +5,7 @@ import net.i2p.util.Translate; /** * Translate strings for this package. + * @since 0.7.9 */ public class Messages { private static final String BUNDLE_NAME = "i2p.susi.dns.messages"; diff --git a/core/java/src/net/i2p/client/naming/EepGetAndAddNamingService.java b/core/java/src/net/i2p/client/naming/EepGetAndAddNamingService.java index cf282f719..085fe1729 100644 --- a/core/java/src/net/i2p/client/naming/EepGetAndAddNamingService.java +++ b/core/java/src/net/i2p/client/naming/EepGetAndAddNamingService.java @@ -30,6 +30,7 @@ import net.i2p.data.Destination; * i2p.naming.eepget.list=http://stats.i2p/cgi-bin/hostquery.cgi?a=,http://i2host.i2p/cgi-bin/i2hostquery? * * @author zzz + * @since 0.7.9 */ public class EepGetAndAddNamingService extends EepGetNamingService { diff --git a/core/java/src/net/i2p/util/InternalServerSocket.java b/core/java/src/net/i2p/util/InternalServerSocket.java index bc9a19ff7..1aa794241 100644 --- a/core/java/src/net/i2p/util/InternalServerSocket.java +++ b/core/java/src/net/i2p/util/InternalServerSocket.java @@ -26,6 +26,7 @@ import net.i2p.I2PAppContext; * that may vanish. If you do use multipe writers, * you may get intermittent 'write end dead' or 'pipe broken' IOExceptions on the reader side. * See http://techtavern.wordpress.com/2008/07/16/whats-this-ioexception-write-end-dead/ + * @since 0.7.9 */ public class InternalServerSocket extends ServerSocket { private static final ConcurrentHashMap _sockets = new ConcurrentHashMap(4); diff --git a/core/java/src/net/i2p/util/InternalSocket.java b/core/java/src/net/i2p/util/InternalSocket.java index 24d743423..1d94d9694 100644 --- a/core/java/src/net/i2p/util/InternalSocket.java +++ b/core/java/src/net/i2p/util/InternalSocket.java @@ -12,6 +12,7 @@ import java.nio.channels.SocketChannel; * A simple in-JVM Socket using Piped Streams. * We use port numbers just like regular sockets. * Can only connect to InternalServerSocket. + * @since 0.7.9 */ public class InternalSocket extends Socket { private InputStream _is; diff --git a/core/java/src/net/i2p/util/Translate.java b/core/java/src/net/i2p/util/Translate.java index 324b3a241..4ff97437d 100644 --- a/core/java/src/net/i2p/util/Translate.java +++ b/core/java/src/net/i2p/util/Translate.java @@ -18,6 +18,7 @@ import net.i2p.util.ConcurrentHashSet; * Support real-time language changing with the routerconsole.lang property. * * @author zzz, from a base generated by eclipse. + * @since 0.7.9 */ public abstract class Translate { public static final String PROP_LANG = "routerconsole.lang"; diff --git a/history.txt b/history.txt index f91e5da20..1408fa149 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2010-01-06 zzz + * Summary bar tweaks + 2010-01-02 sponge * Fix one last stupid mistake in build.xml, my fault. diff --git a/router/java/src/net/i2p/data/i2np/BuildResponseRecord.java b/router/java/src/net/i2p/data/i2np/BuildResponseRecord.java index 3b17e01b3..d8726fb29 100644 --- a/router/java/src/net/i2p/data/i2np/BuildResponseRecord.java +++ b/router/java/src/net/i2p/data/i2np/BuildResponseRecord.java @@ -20,8 +20,8 @@ public class BuildResponseRecord { * Create a new encrypted response * * @param status the response - * @param responseMessageID unused except for debugging - * @param a 528-byte response record + * @param responseMessageId unused except for debugging + * @return a 528-byte response record */ public static byte[] create(I2PAppContext ctx, int status, SessionKey replyKey, byte replyIV[], long responseMessageId) { //Log log = ctx.logManager().getLog(BuildResponseRecord.class); diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index ac1036698..32a2083be 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 16; + public final static long BUILD = 17; /** for example "-test" */ public final static String EXTRA = ""; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; diff --git a/router/java/src/net/i2p/router/client/InternalClientListenerRunner.java b/router/java/src/net/i2p/router/client/InternalClientListenerRunner.java index 2105f7691..995c69400 100644 --- a/router/java/src/net/i2p/router/client/InternalClientListenerRunner.java +++ b/router/java/src/net/i2p/router/client/InternalClientListenerRunner.java @@ -19,6 +19,7 @@ import net.i2p.util.InternalServerSocket; * Listen for in-JVM connections on the internal "socket" * * @author zzz + * @since 0.7.9 */ public class InternalClientListenerRunner extends ClientListenerRunner { diff --git a/router/java/src/net/i2p/router/transport/Addresses.java b/router/java/src/net/i2p/router/transport/Addresses.java index c8c2b6518..5f2641b64 100644 --- a/router/java/src/net/i2p/router/transport/Addresses.java +++ b/router/java/src/net/i2p/router/transport/Addresses.java @@ -22,7 +22,7 @@ import java.util.Set; */ public class Addresses { - /** return the first non-local address it finds, or null */ + /** @return the first non-local address it finds, or null */ public static String getAnyAddress() { String[] a = getAddresses(); if (a.length > 0) @@ -31,7 +31,7 @@ public class Addresses { } /** - * Return an array of all addresses, excluding + * @return an array of all addresses, excluding * IPv6, local, broadcast, multicast, etc. */ public static String[] getAddresses() { 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 171260044..42e205671 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java @@ -602,8 +602,8 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { OutNetMessage msg = null; synchronized (_outbound) { if (_currentOutbound != null) { - if (_log.shouldLog(Log.WARN)) - _log.warn("attempt for multiple outbound messages with " + System.identityHashCode(_currentOutbound) + " already waiting and " + _outbound.size() + " queued"); + if (_log.shouldLog(Log.INFO)) + _log.info("attempt for multiple outbound messages with " + System.identityHashCode(_currentOutbound) + " already waiting and " + _outbound.size() + " queued"); return; } //throw new RuntimeException("We should not be preparing a write while we still have one pending"); diff --git a/router/java/src/net/i2p/router/tunnel/ThrottledPumpedTunnelGateway.java b/router/java/src/net/i2p/router/tunnel/ThrottledPumpedTunnelGateway.java index 5f415b9c3..20e86b10f 100644 --- a/router/java/src/net/i2p/router/tunnel/ThrottledPumpedTunnelGateway.java +++ b/router/java/src/net/i2p/router/tunnel/ThrottledPumpedTunnelGateway.java @@ -12,6 +12,7 @@ import net.i2p.router.RouterContext; * Same as PTG, but check to see if a message should be dropped before queueing it. * Used for IBGWs. * + * @since 0.7.9 */ public class ThrottledPumpedTunnelGateway extends PumpedTunnelGateway { /** saved so we can note messages that get dropped */