From 1603db33557bd29ce1c997f7c8057a391f23cd3f Mon Sep 17 00:00:00 2001 From: dev Date: Fri, 22 Jul 2011 13:39:11 +0000 Subject: [PATCH] Moved API to only exist in the Authenticate message. Added new graph trackers for using the new RouterInfo features for more resent bw/part. tunnels stats. Added class handling versions. --- src/net/i2p/itoopie/ItoopieVersion.java | 15 +++++ .../itoopie/gui/component/BandwidthChart.java | 9 ++- .../component/ParticipatingTunnelsChart.java | 5 +- ...cker.java => InboundBandwidthTracker.java} | 24 ++++---- .../chart/OutboundBandwidthTracker.java | 57 +++++++++++++++++++ .../chart/ParticipatingTunnelsTracker.java | 57 +++++++++++++++++++ .../i2pcontrol/InvalidI2PControlAPI.java | 12 ++++ .../itoopie/i2pcontrol/JSONRPC2Interface.java | 1 - .../i2pcontrol/methods/Authenticate.java | 2 + 9 files changed, 160 insertions(+), 22 deletions(-) create mode 100644 src/net/i2p/itoopie/ItoopieVersion.java rename src/net/i2p/itoopie/gui/component/chart/{BandwidthTracker.java => InboundBandwidthTracker.java} (71%) create mode 100644 src/net/i2p/itoopie/gui/component/chart/OutboundBandwidthTracker.java create mode 100644 src/net/i2p/itoopie/gui/component/chart/ParticipatingTunnelsTracker.java create mode 100644 src/net/i2p/itoopie/i2pcontrol/InvalidI2PControlAPI.java diff --git a/src/net/i2p/itoopie/ItoopieVersion.java b/src/net/i2p/itoopie/ItoopieVersion.java new file mode 100644 index 000000000..709f4a39a --- /dev/null +++ b/src/net/i2p/itoopie/ItoopieVersion.java @@ -0,0 +1,15 @@ +package net.i2p.itoopie; + +/** + * Defines version of utilized I2PControl API and version of itoopie. + * @author hottuna + * + */ +public class ItoopieVersion { + + /** Version of itoopie */ + public static final String VERSION = "0.0.1"; + + /** Version of the I2PControl API implemented */ + public static final int I2PCONTROL_API_VERSION = 1; +} diff --git a/src/net/i2p/itoopie/gui/component/BandwidthChart.java b/src/net/i2p/itoopie/gui/component/BandwidthChart.java index ff5080665..8f130fef0 100644 --- a/src/net/i2p/itoopie/gui/component/BandwidthChart.java +++ b/src/net/i2p/itoopie/gui/component/BandwidthChart.java @@ -22,9 +22,8 @@ import java.text.SimpleDateFormat; import javax.swing.JFrame; import net.i2p.itoopie.configuration.ConfigurationManager; -import net.i2p.itoopie.gui.component.chart.BandwidthTracker; -import net.i2p.itoopie.gui.component.chart.DummyDataCollector; -import net.i2p.itoopie.gui.component.chart.RateStatTracker; +import net.i2p.itoopie.gui.component.chart.InboundBandwidthTracker; +import net.i2p.itoopie.gui.component.chart.OutboundBandwidthTracker; import net.i2p.itoopie.gui.component.chart.ObjRecorder2Trace2DAdapter; import net.i2p.itoopie.i18n.Transl; @@ -73,9 +72,9 @@ public class BandwidthChart { // force ranges: chart.getAxisY().setRangePolicy(new RangePolicyMinimumViewport(new Range(0, 5))); - new ObjRecorder2Trace2DAdapter(dataBWOut, new BandwidthTracker("bw.sendRate", 60*1000L), "m_value", updateInterval); + new ObjRecorder2Trace2DAdapter(dataBWOut, new InboundBandwidthTracker(), "m_value", updateInterval); // new ObjRecorder2Trace2DAdapter(dataBWIn, new DummyDataCollector(0.5, 1000), "m_number", updateInterval); - new ObjRecorder2Trace2DAdapter(dataBWIn, new BandwidthTracker("bw.recvRate", 60*1000L), "m_value", updateInterval); + new ObjRecorder2Trace2DAdapter(dataBWIn, new OutboundBandwidthTracker(), "m_value", updateInterval); // new ObjRecorder2Trace2DAdapter(dataBWOut, new DummyDataCollector(0.5, 1000), "m_number", updateInterval); return chart; } diff --git a/src/net/i2p/itoopie/gui/component/ParticipatingTunnelsChart.java b/src/net/i2p/itoopie/gui/component/ParticipatingTunnelsChart.java index 9c315ae55..0e3ef3576 100644 --- a/src/net/i2p/itoopie/gui/component/ParticipatingTunnelsChart.java +++ b/src/net/i2p/itoopie/gui/component/ParticipatingTunnelsChart.java @@ -22,8 +22,7 @@ import java.text.SimpleDateFormat; import javax.swing.JFrame; import net.i2p.itoopie.configuration.ConfigurationManager; -import net.i2p.itoopie.gui.component.chart.DummyDataCollector; -import net.i2p.itoopie.gui.component.chart.RateStatTracker; +import net.i2p.itoopie.gui.component.chart.ParticipatingTunnelsTracker; import net.i2p.itoopie.gui.component.chart.ObjRecorder2Trace2DAdapter; import net.i2p.itoopie.i18n.Transl; @@ -64,7 +63,7 @@ public class ParticipatingTunnelsChart { // force ranges: chart.getAxisY().setRangePolicy(new RangePolicyMinimumViewport(new Range(0, 20))); - new ObjRecorder2Trace2DAdapter(dataPartTunnels, new RateStatTracker("tunnel.participatingTunnels", 60*1000L), "m_value", updateInterval); + new ObjRecorder2Trace2DAdapter(dataPartTunnels, new ParticipatingTunnelsTracker(), "m_value", updateInterval); //new ObjRecorder2Trace2DAdapter(dataPartTunnels, new DummyDataCollector(0.5, 1000), "m_number", updateInterval); return chart; } diff --git a/src/net/i2p/itoopie/gui/component/chart/BandwidthTracker.java b/src/net/i2p/itoopie/gui/component/chart/InboundBandwidthTracker.java similarity index 71% rename from src/net/i2p/itoopie/gui/component/chart/BandwidthTracker.java rename to src/net/i2p/itoopie/gui/component/chart/InboundBandwidthTracker.java index dcf3ca351..82bc55b3e 100644 --- a/src/net/i2p/itoopie/gui/component/chart/BandwidthTracker.java +++ b/src/net/i2p/itoopie/gui/component/chart/InboundBandwidthTracker.java @@ -1,13 +1,18 @@ package net.i2p.itoopie.gui.component.chart; +import java.util.EnumMap; +import java.util.HashMap; + import com.thetransactioncompany.jsonrpc2.client.JSONRPC2SessionException; import net.i2p.itoopie.configuration.ConfigurationManager; import net.i2p.itoopie.i2pcontrol.InvalidParametersException; import net.i2p.itoopie.i2pcontrol.InvalidPasswordException; import net.i2p.itoopie.i2pcontrol.methods.GetRateStat; +import net.i2p.itoopie.i2pcontrol.methods.GetRouterInfo; +import net.i2p.itoopie.i2pcontrol.methods.RouterInfo.ROUTER_INFO; -public class BandwidthTracker extends Thread { +public class InboundBandwidthTracker extends Thread { private static ConfigurationManager _conf = ConfigurationManager.getInstance(); /** Last read bw */ @@ -17,19 +22,11 @@ public class BandwidthTracker extends Thread { private final static int DEFAULT_UPDATE_INTERVAL = 100; // Update every 100th ms private int updateInterval = _conf.getConf("graph.updateinterval", DEFAULT_UPDATE_INTERVAL); - - /** Which RateStat to measure from the router */ - private String rateStat; - - /** Which period of a stat to measure */ - private long period; /** * Start daemon that checks to current inbound bandwidth of the router. */ - public BandwidthTracker(String rateStat, long period) { - this.rateStat = rateStat; - this.period = period; + public InboundBandwidthTracker() { this.setDaemon(true); this.start(); } @@ -39,13 +36,14 @@ public class BandwidthTracker extends Thread { */ @Override public void run() { - + EnumMap em; while (true) { try { - m_value = GetRateStat.execute(rateStat, period) / 1024; //Bytes -> KBytes + em = GetRouterInfo.execute(ROUTER_INFO.BW_INBOUND_1S); + double dbl = (Double) em.get(ROUTER_INFO.BW_INBOUND_1S); + m_value = dbl / 1024; //Bytes -> KBytes } catch (InvalidPasswordException e) { } catch (JSONRPC2SessionException e) { - } catch (InvalidParametersException e) { } try { diff --git a/src/net/i2p/itoopie/gui/component/chart/OutboundBandwidthTracker.java b/src/net/i2p/itoopie/gui/component/chart/OutboundBandwidthTracker.java new file mode 100644 index 000000000..d18a88df0 --- /dev/null +++ b/src/net/i2p/itoopie/gui/component/chart/OutboundBandwidthTracker.java @@ -0,0 +1,57 @@ +package net.i2p.itoopie.gui.component.chart; + +import java.util.EnumMap; +import java.util.HashMap; + +import com.thetransactioncompany.jsonrpc2.client.JSONRPC2SessionException; + +import net.i2p.itoopie.configuration.ConfigurationManager; +import net.i2p.itoopie.i2pcontrol.InvalidParametersException; +import net.i2p.itoopie.i2pcontrol.InvalidPasswordException; +import net.i2p.itoopie.i2pcontrol.methods.GetRateStat; +import net.i2p.itoopie.i2pcontrol.methods.GetRouterInfo; +import net.i2p.itoopie.i2pcontrol.methods.RouterInfo.ROUTER_INFO; + +public class OutboundBandwidthTracker extends Thread { + + private static ConfigurationManager _conf = ConfigurationManager.getInstance(); + /** Last read bw */ + private double m_value = 0; + + /** Poll router for current ratestat every updateInterval seconds */ + private final static int DEFAULT_UPDATE_INTERVAL = 100; // Update every 100th ms + + private int updateInterval = _conf.getConf("graph.updateinterval", DEFAULT_UPDATE_INTERVAL); + + /** + * Start daemon that checks to current inbound bandwidth of the router. + */ + public OutboundBandwidthTracker() { + this.setDaemon(true); + this.start(); + } + + /** + * @see java.lang.Runnable#run() + */ + @Override + public void run() { + EnumMap em; + while (true) { + try { + em = GetRouterInfo.execute(ROUTER_INFO.BW_OUTBOUND_1S); + double dbl = (Double) em.get(ROUTER_INFO.BW_OUTBOUND_1S); + m_value = dbl / 1024; //Bytes -> KBytes + } catch (InvalidPasswordException e) { + } catch (JSONRPC2SessionException e) { + } + + try { + Thread.sleep(updateInterval); + } catch (InterruptedException e) { + // nop + } + + } + } +} diff --git a/src/net/i2p/itoopie/gui/component/chart/ParticipatingTunnelsTracker.java b/src/net/i2p/itoopie/gui/component/chart/ParticipatingTunnelsTracker.java new file mode 100644 index 000000000..95afdaf8a --- /dev/null +++ b/src/net/i2p/itoopie/gui/component/chart/ParticipatingTunnelsTracker.java @@ -0,0 +1,57 @@ +package net.i2p.itoopie.gui.component.chart; + +import java.util.EnumMap; +import java.util.HashMap; + +import com.thetransactioncompany.jsonrpc2.client.JSONRPC2SessionException; + +import net.i2p.itoopie.configuration.ConfigurationManager; +import net.i2p.itoopie.i2pcontrol.InvalidParametersException; +import net.i2p.itoopie.i2pcontrol.InvalidPasswordException; +import net.i2p.itoopie.i2pcontrol.methods.GetRateStat; +import net.i2p.itoopie.i2pcontrol.methods.GetRouterInfo; +import net.i2p.itoopie.i2pcontrol.methods.RouterInfo.ROUTER_INFO; + +public class ParticipatingTunnelsTracker extends Thread { + + private static ConfigurationManager _conf = ConfigurationManager.getInstance(); + /** Last read bw */ + private double m_value = 0; + + /** Poll router for current ratestat every updateInterval seconds */ + private final static int DEFAULT_UPDATE_INTERVAL = 100; // Update every 100th ms + + private int updateInterval = _conf.getConf("graph.updateinterval", DEFAULT_UPDATE_INTERVAL); + + /** + * Start daemon that checks to current inbound bandwidth of the router. + */ + public ParticipatingTunnelsTracker() { + this.setDaemon(true); + this.start(); + } + + /** + * @see java.lang.Runnable#run() + */ + @Override + public void run() { + EnumMap em; + while (true) { + try { + em = GetRouterInfo.execute(ROUTER_INFO.TUNNELS_PARTICIPATING); + Long nbr = (Long) em.get(ROUTER_INFO.TUNNELS_PARTICIPATING); + m_value = nbr.doubleValue(); + } catch (InvalidPasswordException e) { + } catch (JSONRPC2SessionException e) { + } + + try { + Thread.sleep(updateInterval); + } catch (InterruptedException e) { + // nop + } + + } + } +} diff --git a/src/net/i2p/itoopie/i2pcontrol/InvalidI2PControlAPI.java b/src/net/i2p/itoopie/i2pcontrol/InvalidI2PControlAPI.java new file mode 100644 index 000000000..a013babe2 --- /dev/null +++ b/src/net/i2p/itoopie/i2pcontrol/InvalidI2PControlAPI.java @@ -0,0 +1,12 @@ +package net.i2p.itoopie.i2pcontrol; + +public class InvalidI2PControlAPI extends Exception { + + private static final long serialVersionUID = -8120904521634957457L; + + + public InvalidI2PControlAPI(String msg){ + super(msg); + } + +} diff --git a/src/net/i2p/itoopie/i2pcontrol/JSONRPC2Interface.java b/src/net/i2p/itoopie/i2pcontrol/JSONRPC2Interface.java index a2a7d725a..6e3baa4d4 100644 --- a/src/net/i2p/itoopie/i2pcontrol/JSONRPC2Interface.java +++ b/src/net/i2p/itoopie/i2pcontrol/JSONRPC2Interface.java @@ -78,7 +78,6 @@ public class JSONRPC2Interface { } HashMap outParams = (HashMap) req.getParams(); outParams.put("Token", token); // Add authentication token - outParams.put("API", ItoopieVersion.I2PCONTROL_API_VERSION); req.setParams(outParams); JSONRPC2Response resp = null; diff --git a/src/net/i2p/itoopie/i2pcontrol/methods/Authenticate.java b/src/net/i2p/itoopie/i2pcontrol/methods/Authenticate.java index 5259c07cb..a1e051935 100644 --- a/src/net/i2p/itoopie/i2pcontrol/methods/Authenticate.java +++ b/src/net/i2p/itoopie/i2pcontrol/methods/Authenticate.java @@ -6,6 +6,7 @@ import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import net.i2p.itoopie.ItoopieVersion; import net.i2p.itoopie.configuration.ConfigurationManager; import net.i2p.itoopie.i2pcontrol.InvalidParametersException; import net.i2p.itoopie.i2pcontrol.InvalidPasswordException; @@ -28,6 +29,7 @@ public class Authenticate { Map outParams = new HashMap(); outParams.put("Password", _conf.getConf("server.password", _conf.getConf("server.password", DEFAULT_PASSWORD))); + outParams.put("API", ItoopieVersion.I2PCONTROL_API_VERSION); req.setParams(outParams); JSONRPC2Response resp = null;