Changeset ef3a12f


Ignore:
Timestamp:
Feb 7, 2014 3:40:23 PM (6 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
855cae0
Parents:
37bf750
Message:
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java

    r37bf750 ref3a12f  
    2525
    2626import net.i2p.I2PAppContext;
     27import net.i2p.app.ClientAppManager;
    2728import net.i2p.data.Base64;
    2829import net.i2p.data.DataHelper;
     
    199200            if (!_running)
    200201                return;
    201             _umgr = _context.updateManager();
     202            ClientAppManager cmgr = _context.clientAppManager();
     203            if (cmgr != null)
     204                _umgr = (UpdateManager) cmgr.getRegisteredApp(UpdateManager.APP_NAME);
    202205            if (_umgr != null) {
    203206                _uhandler = new UpdateHandler(_context, _umgr, SnarkManager.this);
  • apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java

    r37bf750 ref3a12f  
    1818
    1919import net.i2p.I2PAppContext;
     20import net.i2p.app.ClientAppManager;
     21import net.i2p.app.ClientAppState;
     22import static net.i2p.app.ClientAppState.*;
    2023import net.i2p.crypto.SU3File;
    2124import net.i2p.crypto.TrustedUpdate;
     
    2427import net.i2p.router.RouterContext;
    2528import net.i2p.router.RouterVersion;
     29import net.i2p.router.app.RouterApp;
    2630import net.i2p.router.web.ConfigServiceHandler;
    2731import net.i2p.router.web.ConfigUpdateHandler;
     
    5155 *  @since 0.9.4
    5256 */
    53 public class ConsoleUpdateManager implements UpdateManager {
     57public class ConsoleUpdateManager implements UpdateManager, RouterApp {
    5458   
    5559    private final RouterContext _context;
     
    6973    private final boolean _allowTorrent;
    7074    private static final DecimalFormat _pct = new DecimalFormat("0.0%");
     75    private final ClientAppManager _cmgr;
     76    private volatile ClientAppState _state = UNINITIALIZED;
    7177
    7278    private volatile String _status;
     
    7884    private static final String PROP_UNSIGNED_AVAILABLE = "router.updateUnsignedAvailable";
    7985
    80     public ConsoleUpdateManager(RouterContext ctx) {
     86    /**
     87     *  @param args ignored
     88     */
     89    public ConsoleUpdateManager(RouterContext ctx, ClientAppManager listener, String[] args) {
    8190        _context = ctx;
     91        _cmgr = listener;
    8292        _log = ctx.logManager().getLog(ConsoleUpdateManager.class);
    8393        _registeredUpdaters = new ConcurrentHashSet<RegisteredUpdater>();
     
    99109        // Finally, for 0.9.12, 18 months later...
    100110        _allowTorrent = true;
    101     }
    102 
     111        _state = INITIALIZED;
     112    }
     113
     114    /**
     115     *  @return null if not found
     116     */
    103117    public static ConsoleUpdateManager getInstance() {
    104         return (ConsoleUpdateManager) I2PAppContext.getGlobalContext().updateManager();
    105     }
    106 
     118        ClientAppManager cmgr = I2PAppContext.getGlobalContext().clientAppManager();
     119        if (cmgr == null)
     120            return null;
     121        return (ConsoleUpdateManager) cmgr.getRegisteredApp(APP_NAME);
     122    }
     123
     124    /////// ClientApp methods
     125
     126    /**
     127     *  UpdateManager interface
     128     */
    107129    public void start() {
     130        startup();
     131    }
     132
     133    /**
     134     *  ClientApp interface
     135     *  @since 0.9.12
     136     */
     137    public synchronized void startup() {
     138        changeState(STARTING);
    108139        notifyInstalled(NEWS, "", Long.toString(NewsHelper.lastUpdated(_context)));
    109140        notifyInstalled(ROUTER_SIGNED, "", RouterVersion.VERSION);
     
    119150        }
    120151
    121         _context.registerUpdateManager(this);
    122152        DummyHandler dh = new DummyHandler(_context, this);
    123153        register((Checker)dh, TYPE_DUMMY, METHOD_DUMMY, 0);
     
    163193        new NewsTimerTask(_context, this);
    164194        _context.simpleScheduler().addPeriodicEvent(new TaskCleaner(), TASK_CLEANER_TIME);
    165     }
    166 
     195        changeState(RUNNING);
     196        if (_cmgr != null)
     197            _cmgr.register(this);
     198    }
     199
     200    /**
     201     *  UpdateManager interface
     202     */
    167203    public void shutdown() {
    168         _context.unregisterUpdateManager(this);
     204        shutdown(null);
     205    }
     206
     207    /**
     208     *  ClientApp interface
     209     *  @param args ignored
     210     *  @since 0.9.12
     211     */
     212    public synchronized void shutdown(String[] args) {
     213        if (_state == STOPPED)
     214            return;
     215        changeState(STOPPING);
    169216        stopChecks();
    170217        stopUpdates();
     
    174221        _downloaded.clear();
    175222        _installed.clear();
     223        changeState(STOPPED);
     224    }
     225
     226    /** @since 0.9.12 */
     227    public ClientAppState getState() {
     228        return _state;
     229    }
     230
     231    /** @since 0.9.12 */
     232    public String getName() {
     233        return APP_NAME;
     234    }
     235
     236    /** @since 0.9.12 */
     237    public String getDisplayName() {
     238        return "Console Update Manager";
     239    }
     240
     241    /////// end ClientApp methods
     242
     243    private synchronized void changeState(ClientAppState state) {
     244        _state = state;
     245        if (_cmgr != null)
     246            _cmgr.notify(this, state, null, null);
    176247    }
    177248
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java

    r37bf750 ref3a12f  
    371371     */
    372372    private void installPlugin(String app, String url) {
    373         ConsoleUpdateManager mgr = (ConsoleUpdateManager) _context.updateManager();
     373        ConsoleUpdateManager mgr = UpdateHandler.updateManager(_context);
    374374        if (mgr == null) {
    375375            addFormError("Update manager not registered, cannot install");
     
    398398
    399399    private void checkPlugin(String app) {
    400         ConsoleUpdateManager mgr = (ConsoleUpdateManager) _context.updateManager();
     400        ConsoleUpdateManager mgr = UpdateHandler.updateManager(_context);
    401401        if (mgr == null) {
    402402            addFormError("Update manager not registered, cannot check");
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java

    r37bf750 ref3a12f  
    140140            return;
    141141        if (_action.equals(_("Check for updates"))) {
    142             ConsoleUpdateManager mgr = (ConsoleUpdateManager) _context.updateManager();
     142            ConsoleUpdateManager mgr = UpdateHandler.updateManager(_context);
    143143            if (mgr == null) {
    144144                addFormError("Update manager not registered, cannot check");
  • apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java

    r37bf750 ref3a12f  
    122122            return;
    123123
    124         ConsoleUpdateManager mgr = (ConsoleUpdateManager) ctx.updateManager();
     124        ConsoleUpdateManager mgr = UpdateHandler.updateManager(ctx);
    125125        if (mgr == null)
    126126            return;
  • apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java

    r37bf750 ref3a12f  
    646646        t.start();
    647647       
    648             ConsoleUpdateManager um = new ConsoleUpdateManager(_context);
     648            ConsoleUpdateManager um = new ConsoleUpdateManager(_context, _mgr, null);
    649649            um.start();
    650650       
  • apps/routerconsole/java/src/net/i2p/router/web/UpdateHandler.java

    r37bf750 ref3a12f  
    11package net.i2p.router.web;
    22
     3import net.i2p.app.ClientAppManager;
    34import net.i2p.router.RouterContext;
    45import net.i2p.router.update.ConsoleUpdateManager;
     6import net.i2p.update.UpdateManager;
    57import net.i2p.update.UpdateType;
    68import static net.i2p.update.UpdateType.*;
     
    3335        _context = ctx;
    3436        _log = ctx.logManager().getLog(UpdateHandler.class);
     37    }
     38
     39    /**
     40     *  @return null if not found
     41     *  @since 0.9.12
     42     */
     43    public static ConsoleUpdateManager updateManager(RouterContext ctx) {
     44        ClientAppManager cmgr = ctx.clientAppManager();
     45        if (cmgr == null)
     46            return null;
     47        return (ConsoleUpdateManager) cmgr.getRegisteredApp(UpdateManager.APP_NAME);
    3548    }
    3649   
     
    7689
    7790    private void update(UpdateType type) {
    78         ConsoleUpdateManager mgr = (ConsoleUpdateManager) _context.updateManager();
     91        ConsoleUpdateManager mgr = updateManager(_context);
    7992        if (mgr == null)
    8093            return;
  • apps/routerconsole/jsp/debug.jsp

    r37bf750 ref3a12f  
    3131     *  Print out the status for the UpdateManager
    3232     */
    33     ctx.updateManager().renderStatusHTML(out);
     33    net.i2p.app.ClientAppManager cmgr = ctx.clientAppManager();
     34    if (cmgr != null) {
     35        net.i2p.router.update.ConsoleUpdateManager umgr =
     36            (net.i2p.router.update.ConsoleUpdateManager) cmgr.getRegisteredApp(net.i2p.update.UpdateManager.APP_NAME);
     37        if (umgr != null) {
     38            umgr.renderStatusHTML(out);
     39        }
     40    }
    3441
    3542    /*
  • core/java/src/net/i2p/I2PAppContext.java

    r37bf750 ref3a12f  
    10191019
    10201020    /**
    1021      *  The controller of router, plugin, and other updates.
    1022      *  @return always null in I2PAppContext, the update manager if in RouterContext and it is registered
    1023      *  @since 0.9.4
    1024      */
    1025     public UpdateManager updateManager() {
    1026         return null;
    1027     }
    1028 
    1029     /**
    10301021     *  The RouterAppManager in RouterContext, null always in I2PAppContext
    10311022     *  @return null always
  • core/java/src/net/i2p/update/UpdateManager.java

    r37bf750 ref3a12f  
    1919public interface UpdateManager {
    2020   
     21    /**
     22     *  The name we register with the ClientAppManager
     23     *  @since 0.9.12
     24     */
     25    public static final String APP_NAME = "update";
     26
    2127    /**
    2228     *  Call once for each type/method pair.
  • router/java/src/net/i2p/router/RouterContext.java

    r37bf750 ref3a12f  
    6868    // split up big lock on this to avoid deadlocks
    6969    private volatile boolean _initialized;
    70     private final Object _lock1 = new Object(), _lock2 = new Object(), _lock3 = new Object();
     70    private final Object _lock1 = new Object(), _lock2 = new Object();
    7171
    7272    private static final List<RouterContext> _contexts = new CopyOnWriteArrayList<RouterContext>();
     
    548548
    549549    /**
    550      *  The controller of router, plugin, and other updates.
    551      *  @return The manager if it is registered, else null
    552      *  @since 0.9.4
    553      */
    554     @Override
    555     public UpdateManager updateManager() {
    556         return _updateManager;
    557     }
    558 
    559     /**
    560      *  Register as the update manager.
    561      *  @throws IllegalStateException if one was already registered
    562      *  @since 0.9.4
    563      */
    564     public void registerUpdateManager(UpdateManager mgr) {
    565         synchronized(_lock3) {
    566             if (_updateManager != null)
    567                 throw new IllegalStateException();
    568             _updateManager = mgr;
    569         }
    570     }
    571 
    572     /**
    573      *  Unregister the update manager.
    574      *  @throws IllegalStateException if it was not registered
    575      *  @since 0.9.4
    576      */
    577     public void unregisterUpdateManager(UpdateManager mgr) {
    578         synchronized(_lock3) {
    579             if (_updateManager != mgr)
    580                 throw new IllegalStateException();
    581             _updateManager = null;
    582         }
    583     }
    584 
    585     /**
    586550     *  The RouterAppManager.
    587551     *  @return the manager
Note: See TracChangeset for help on using the changeset viewer.