forked from I2P_Developers/i2p.i2p
* Console: Better handling of missing font for graphing (ticket #915)
- Remove unused imports
This commit is contained in:
@ -1,23 +1,14 @@
|
|||||||
package net.i2p.router.web;
|
package net.i2p.router.web;
|
||||||
|
|
||||||
import java.awt.Color;
|
|
||||||
import java.awt.Graphics;
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
import java.util.concurrent.Semaphore;
|
import java.util.concurrent.Semaphore;
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
import javax.imageio.stream.ImageOutputStream;
|
|
||||||
import javax.imageio.stream.MemoryCacheImageOutputStream;
|
|
||||||
|
|
||||||
import net.i2p.router.RouterContext;
|
import net.i2p.router.RouterContext;
|
||||||
import net.i2p.stat.Rate;
|
import net.i2p.stat.Rate;
|
||||||
import net.i2p.stat.RateStat;
|
import net.i2p.stat.RateStat;
|
||||||
@ -25,18 +16,13 @@ import net.i2p.util.FileUtil;
|
|||||||
import net.i2p.util.Log;
|
import net.i2p.util.Log;
|
||||||
import net.i2p.util.SystemVersion;
|
import net.i2p.util.SystemVersion;
|
||||||
|
|
||||||
import org.jrobin.core.RrdException;
|
|
||||||
import org.jrobin.graph.RrdGraph;
|
|
||||||
import org.jrobin.graph.RrdGraphDef;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A thread started by RouterConsoleRunner that
|
* A thread started by RouterConsoleRunner that
|
||||||
* checks the configuration for stats to be tracked via jrobin,
|
* checks the configuration for stats to be tracked via jrobin,
|
||||||
* and adds or deletes RRDs as necessary.
|
* and adds or deletes RRDs as necessary.
|
||||||
*
|
*
|
||||||
* This also contains methods to generate xml or png image output.
|
* This also contains methods to generate xml or png image output.
|
||||||
* The actual png rendering code is here for the special dual-rate graph;
|
* The rendering for graphs is in SummaryRenderer.
|
||||||
* the rendering for standard graphs is in SummaryRenderer.
|
|
||||||
*
|
*
|
||||||
* To control memory, the number of simultaneous renderings is limited.
|
* To control memory, the number of simultaneous renderings is limited.
|
||||||
*
|
*
|
||||||
@ -47,6 +33,7 @@ public class StatSummarizer implements Runnable {
|
|||||||
private final Log _log;
|
private final Log _log;
|
||||||
/** list of SummaryListener instances */
|
/** list of SummaryListener instances */
|
||||||
private final List<SummaryListener> _listeners;
|
private final List<SummaryListener> _listeners;
|
||||||
|
// TODO remove static instance
|
||||||
private static StatSummarizer _instance;
|
private static StatSummarizer _instance;
|
||||||
private static final int MAX_CONCURRENT_PNG = 3;
|
private static final int MAX_CONCURRENT_PNG = 3;
|
||||||
private final Semaphore _sem;
|
private final Semaphore _sem;
|
||||||
@ -93,6 +80,18 @@ public class StatSummarizer implements Runnable {
|
|||||||
static boolean isDisabled() {
|
static boolean isDisabled() {
|
||||||
return _instance == null || _instance._isDisabled;
|
return _instance == null || _instance._isDisabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disable graph generation until restart
|
||||||
|
* See SummaryRenderer.render()
|
||||||
|
* @since 0.9.6
|
||||||
|
*/
|
||||||
|
static void setDisabled() {
|
||||||
|
if (_instance != null) {
|
||||||
|
_instance._isDisabled = true;
|
||||||
|
_instance._isRunning = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** list of SummaryListener instances */
|
/** list of SummaryListener instances */
|
||||||
List<SummaryListener> getListeners() { return _listeners; }
|
List<SummaryListener> getListeners() { return _listeners; }
|
||||||
|
@ -229,7 +229,15 @@ class SummaryRenderer {
|
|||||||
def.setImageFormat("PNG");
|
def.setImageFormat("PNG");
|
||||||
def.setLazy(true);
|
def.setLazy(true);
|
||||||
|
|
||||||
RrdGraph graph = new RrdGraph(def);
|
RrdGraph graph;
|
||||||
|
try {
|
||||||
|
// NPE here if system is missing fonts - see ticket #915
|
||||||
|
graph = new RrdGraph(def);
|
||||||
|
} catch (NullPointerException npe) {
|
||||||
|
_log.error("Error rendering", npe);
|
||||||
|
StatSummarizer.setDisabled();
|
||||||
|
throw new IOException("Error rendering - disabling graph generation. Missing font? See http://trac.i2p2.i2p/ticket/915");
|
||||||
|
}
|
||||||
int totalWidth = graph.getRrdGraphInfo().getWidth();
|
int totalWidth = graph.getRrdGraphInfo().getWidth();
|
||||||
int totalHeight = graph.getRrdGraphInfo().getHeight();
|
int totalHeight = graph.getRrdGraphInfo().getHeight();
|
||||||
BufferedImage img = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_USHORT_565_RGB);
|
BufferedImage img = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_USHORT_565_RGB);
|
||||||
|
Reference in New Issue
Block a user