diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index 9fbd6a7aa694583183dc815b4b2f7c04dd52fcf6..3a2c2c31281360990b999074f06f5fb180f3711a 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -154,6 +154,7 @@ public class Router { warmupCrypto(); _sessionKeyPersistenceHelper.startup(); _context.jobQueue().addJob(new StartupJob(_context)); + _context.adminManager().startup(); } public boolean isAlive() { return _isAlive; } @@ -493,6 +494,7 @@ public class Router { _isAlive = false; I2PThread.removeOOMEventListener(_oomListener); try { _context.jobQueue().shutdown(); } catch (Throwable t) { _log.log(Log.CRIT, "Error shutting down the job queue", t); } + try { _context.adminManager().shutdown(); } catch (Throwable t) { _log.log(Log.CRIT, "Error shutting down the admin manager", t); } try { _context.statPublisher().shutdown(); } catch (Throwable t) { _log.log(Log.CRIT, "Error shutting down the stats manager", t); } try { _context.clientManager().shutdown(); } catch (Throwable t) { _log.log(Log.CRIT, "Error shutting down the client manager", t); } try { _context.tunnelManager().shutdown(); } catch (Throwable t) { _log.log(Log.CRIT, "Error shutting down the tunnel manager", t); } @@ -537,6 +539,7 @@ public class Router { _isAlive = false; try { _context.commSystem().restart(); } catch (Throwable t) { _log.log(Log.CRIT, "Error restarting the comm system", t); } + try { _context.adminManager().restart(); } catch (Throwable t) { _log.log(Log.CRIT, "Error restarting the client manager", t); } try { _context.clientManager().restart(); } catch (Throwable t) { _log.log(Log.CRIT, "Error restarting the client manager", t); } try { _context.tunnelManager().restart(); } catch (Throwable t) { _log.log(Log.CRIT, "Error restarting the tunnel manager", t); } try { _context.peerManager().restart(); } catch (Throwable t) { _log.log(Log.CRIT, "Error restarting the peer manager", t); } diff --git a/router/java/src/net/i2p/router/RouterContext.java b/router/java/src/net/i2p/router/RouterContext.java index bcce250bd8590ce7008abaab7f042a851487c80e..9c0b8a30deedfecb47f765508e7d0c5b76f6774c 100644 --- a/router/java/src/net/i2p/router/RouterContext.java +++ b/router/java/src/net/i2p/router/RouterContext.java @@ -6,6 +6,7 @@ import java.util.Properties; import net.i2p.I2PAppContext; import net.i2p.data.Hash; +import net.i2p.router.admin.AdminManager; import net.i2p.router.client.ClientManagerFacadeImpl; import net.i2p.router.networkdb.kademlia.KademliaNetworkDatabaseFacade; import net.i2p.router.peermanager.Calculator; @@ -33,6 +34,7 @@ import net.i2p.router.tunnelmanager.PoolingTunnelManagerFacade; */ public class RouterContext extends I2PAppContext { private Router _router; + private AdminManager _adminManager; private ClientManagerFacade _clientManagerFacade; private ClientMessagePool _clientMessagePool; private JobQueue _jobQueue; @@ -69,6 +71,7 @@ public class RouterContext extends I2PAppContext { _contexts.add(this); } private void initAll() { + _adminManager = new AdminManager(this); _clientManagerFacade = new ClientManagerFacadeImpl(this); _clientMessagePool = new ClientMessagePool(this); _jobQueue = new JobQueue(this); @@ -112,7 +115,12 @@ public class RouterContext extends I2PAppContext { public Router router() { return _router; } /** convenience method for querying the router's ident */ public Hash routerHash() { return _router.getRouterInfo().getIdentity().getHash(); } - + + /** + * Controls a basic admin interface + * + */ + public AdminManager adminManager() { return _adminManager; } /** * How are we coordinating clients for the router? */ diff --git a/router/java/src/net/i2p/router/startup/StartupJob.java b/router/java/src/net/i2p/router/startup/StartupJob.java index bdc325162dcb8d74cab42852292f2624cf0e0f20..c12872c084b5499119f35f785516d58a9dfe6e53 100644 --- a/router/java/src/net/i2p/router/startup/StartupJob.java +++ b/router/java/src/net/i2p/router/startup/StartupJob.java @@ -11,7 +11,6 @@ package net.i2p.router.startup; import net.i2p.router.JobImpl; import net.i2p.router.RouterContext; -import net.i2p.router.admin.AdminManager; /** * The StartupJob should be run once on router startup to initialize the system @@ -35,7 +34,6 @@ public class StartupJob extends JobImpl { public String getName() { return "Startup Router"; } public void runJob() { ReadConfigJob.doRead(getContext()); - new AdminManager(getContext()).startup(); getContext().jobQueue().addJob(new LoadClientAppsJob(getContext())); getContext().statPublisher().startup(); getContext().jobQueue().addJob(new LoadRouterInfoJob(getContext()));