From 21126f766cb081e57c3c1c29e2a44b699c56b059 Mon Sep 17 00:00:00 2001
From: jrandom <jrandom>
Date: Sat, 31 Jul 2004 04:15:09 +0000
Subject: [PATCH] put the adminManager in the context so we can control it (and
 in turn, restart it)

---
 router/java/src/net/i2p/router/Router.java             |  3 +++
 router/java/src/net/i2p/router/RouterContext.java      | 10 +++++++++-
 router/java/src/net/i2p/router/startup/StartupJob.java |  2 --
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java
index 9fbd6a7aa6..3a2c2c3128 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 bcce250bd8..9c0b8a30de 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 bdc325162d..c12872c084 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()));
-- 
GitLab