don't force start the tunnels too early - only instantiate the tunnelControllerGroup when the CLI is run (aka after 2 minutes whem TunnelControllerGroup.main is called from clients.config)

This commit is contained in:
jrandom
2004-08-21 22:05:02 +00:00
committed by zzz
parent 274fd0b528
commit cb5e3efd8a
2 changed files with 47 additions and 19 deletions

View File

@ -30,13 +30,7 @@ public class TunnelControllerGroup {
private List _controllers; private List _controllers;
private String _configFile = DEFAULT_CONFIG_FILE; private String _configFile = DEFAULT_CONFIG_FILE;
public static TunnelControllerGroup getInstance() { public static TunnelControllerGroup getInstance() { return _instance; }
synchronized (TunnelControllerGroup.class) {
if (_instance == null)
_instance = new TunnelControllerGroup(DEFAULT_CONFIG_FILE);
return _instance;
}
}
private TunnelControllerGroup(String configFile) { private TunnelControllerGroup(String configFile) {
_log = I2PAppContext.getGlobalContext().logManager().getLog(TunnelControllerGroup.class); _log = I2PAppContext.getGlobalContext().logManager().getLog(TunnelControllerGroup.class);
@ -47,10 +41,10 @@ public class TunnelControllerGroup {
public static void main(String args[]) { public static void main(String args[]) {
if ( (args == null) || (args.length <= 0) ) { if ( (args == null) || (args.length <= 0) ) {
_instance = getInstance(); _instance = new TunnelControllerGroup(DEFAULT_CONFIG_FILE);
} else if (args.length == 1) { } else if (args.length == 1) {
if (DEFAULT_CONFIG_FILE.equals(args[0])) if (DEFAULT_CONFIG_FILE.equals(args[0]))
_instance = getInstance(); _instance = new TunnelControllerGroup(DEFAULT_CONFIG_FILE);
else else
_instance = new TunnelControllerGroup(args[0]); _instance = new TunnelControllerGroup(args[0]);
} else { } else {

View File

@ -47,9 +47,13 @@ public class WebStatusPageHelper {
} }
public String getSummaryList() { public String getSummaryList() {
TunnelControllerGroup group = TunnelControllerGroup.getInstance();
if (group == null)
return "<b>I2PTunnel instances not yet started - please be patient</b>\n";
StringBuffer buf = new StringBuffer(4*1024); StringBuffer buf = new StringBuffer(4*1024);
buf.append("<ul>"); buf.append("<ul>");
List tunnels = TunnelControllerGroup.getInstance().getControllers(); List tunnels = group.getControllers();
for (int i = 0; i < tunnels.size(); i++) { for (int i = 0; i < tunnels.size(); i++) {
buf.append("<li>\n"); buf.append("<li>\n");
getSummary(buf, i, (TunnelController)tunnels.get(i)); getSummary(buf, i, (TunnelController)tunnels.get(i));
@ -92,24 +96,45 @@ public class WebStatusPageHelper {
return "Action <i>" + _action + "</i> unknown"; return "Action <i>" + _action + "</i> unknown";
} }
private String stopAll() { private String stopAll() {
List msgs = TunnelControllerGroup.getInstance().stopAllControllers(); TunnelControllerGroup group = TunnelControllerGroup.getInstance();
if (group == null)
return "<b>I2PTunnel instances not yet started - please be patient</b>\n";
List msgs = group.stopAllControllers();
return getMessages(msgs); return getMessages(msgs);
} }
private String startAll() { private String startAll() {
List msgs = TunnelControllerGroup.getInstance().startAllControllers(); TunnelControllerGroup group = TunnelControllerGroup.getInstance();
if (group == null)
return "<b>I2PTunnel instances not yet started - please be patient</b>\n";
List msgs = group.startAllControllers();
return getMessages(msgs); return getMessages(msgs);
} }
private String restartAll() { private String restartAll() {
List msgs = TunnelControllerGroup.getInstance().restartAllControllers(); TunnelControllerGroup group = TunnelControllerGroup.getInstance();
if (group == null)
return "<b>I2PTunnel instances not yet started - please be patient</b>\n";
List msgs = group.restartAllControllers();
return getMessages(msgs); return getMessages(msgs);
} }
private String reloadConfig() { private String reloadConfig() {
TunnelControllerGroup.getInstance().reloadControllers(); TunnelControllerGroup group = TunnelControllerGroup.getInstance();
if (group == null)
return "<b>I2PTunnel instances not yet started - please be patient</b>\n";
group.reloadControllers();
return "Config reloaded"; return "Config reloaded";
} }
private String start() { private String start() {
TunnelControllerGroup group = TunnelControllerGroup.getInstance();
if (group == null)
return "<b>I2PTunnel instances not yet started - please be patient</b>\n";
if (_controllerNum < 0) return "Invalid tunnel"; if (_controllerNum < 0) return "Invalid tunnel";
List controllers = TunnelControllerGroup.getInstance().getControllers();
List controllers = group.getControllers();
if (_controllerNum >= controllers.size()) return "Invalid tunnel"; if (_controllerNum >= controllers.size()) return "Invalid tunnel";
TunnelController controller = (TunnelController)controllers.get(_controllerNum); TunnelController controller = (TunnelController)controllers.get(_controllerNum);
controller.startTunnel(); controller.startTunnel();
@ -117,8 +142,13 @@ public class WebStatusPageHelper {
} }
private String stop() { private String stop() {
TunnelControllerGroup group = TunnelControllerGroup.getInstance();
if (group == null)
return "<b>I2PTunnel instances not yet started - please be patient</b>\n";
if (_controllerNum < 0) return "Invalid tunnel"; if (_controllerNum < 0) return "Invalid tunnel";
List controllers = TunnelControllerGroup.getInstance().getControllers();
List controllers = group.getControllers();
if (_controllerNum >= controllers.size()) return "Invalid tunnel"; if (_controllerNum >= controllers.size()) return "Invalid tunnel";
TunnelController controller = (TunnelController)controllers.get(_controllerNum); TunnelController controller = (TunnelController)controllers.get(_controllerNum);
controller.stopTunnel(); controller.stopTunnel();
@ -126,7 +156,11 @@ public class WebStatusPageHelper {
} }
private String getMessages() { private String getMessages() {
return getMessages(TunnelControllerGroup.getInstance().clearAllMessages()); TunnelControllerGroup group = TunnelControllerGroup.getInstance();
if (group == null)
return "";
return getMessages(group.clearAllMessages());
} }
private String getMessages(List msgs) { private String getMessages(List msgs) {