net.i2p.router.update
Class UpdateRunner

java.lang.Object
  extended by java.lang.Thread
      extended by net.i2p.util.I2PThread
          extended by net.i2p.util.I2PAppThread
              extended by net.i2p.router.update.UpdateRunner
All Implemented Interfaces:
Runnable, UpdateTask, EepGet.StatusListener
Direct Known Subclasses:
DevSU3UpdateChecker, DevSU3UpdateRunner, NewsFetcher, PluginUpdateChecker, PluginUpdateRunner, UnsignedUpdateChecker, UnsignedUpdateRunner

 class UpdateRunner
extends I2PAppThread
implements UpdateTask, EepGet.StatusListener

The downloader for router signed updates, and the base class for all the other Checkers and Runners.

Since:
0.9.4 moved from UpdateHandler

Nested Class Summary
 
Nested classes/interfaces inherited from class net.i2p.util.I2PThread
I2PThread.OOMEventListener
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
protected  ByteArrayOutputStream _baos
          56 byte header, only used for suds
protected  RouterContext _context
           
protected  URI _currentURI
           
protected  EepGet _get
           
protected  boolean _isPartial
          tells the listeners what mode we are in - set to true in extending classes for checks
protected  boolean _isRunning
           
protected  Log _log
           
protected  UpdateMethod _method
           
protected  ConsoleUpdateManager _mgr
           
protected  String _newVersion
          set by the listeners on completion
protected  UpdateType _type
           
protected  String _updateFile
           
protected  List<URI> _urls
           
protected static long CONNECT_TIMEOUT
           
protected  boolean done
           
protected static long INACTIVITY_TIMEOUT
           
protected static long NOPROXY_INACTIVITY_TIMEOUT
           
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
UpdateRunner(RouterContext ctx, ConsoleUpdateManager mgr, UpdateType type, List<URI> uris)
          Uses router version for partial checks
UpdateRunner(RouterContext ctx, ConsoleUpdateManager mgr, UpdateType type, List<URI> uris, String currentVersion)
           
UpdateRunner(RouterContext ctx, ConsoleUpdateManager mgr, UpdateType type, UpdateMethod method, List<URI> uris)
          Uses router version for partial checks
UpdateRunner(RouterContext ctx, ConsoleUpdateManager mgr, UpdateType type, UpdateMethod method, List<URI> uris, String currentVersion)
           
 
Method Summary
protected  String _(String s)
          translate a string
protected  String _(String s, Object o)
          translate a string with a parameter
 void attemptFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt, int numRetries, Exception cause)
           
 void attempting(String url)
           
 void bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url)
          subclasses should override
 String getID()
          Valid for plugins
 UpdateMethod getMethod()
           
 UpdateType getType()
           
 URI getURI()
          The current URI being checked or downloaded from.
 void headerReceived(String url, int attemptNum, String key, String val)
          Note: Headers are not processed, and this is not called, for most error response codes, unless setWriteErrorToOutput() is called before fetch().
 boolean isRunning()
           
protected static String linkify(String url)
           
 void run()
           
 void shutdown()
           
 String toString()
           
 void transferComplete(long alreadyTransferred, long bytesTransferred, long bytesRemaining, String url, String outputFile, boolean notModified)
          subclasses should override
 void transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt)
          subclasses should override
protected  void update()
          Loop through the entire list of update URLs.
protected  void updateStatus(String s)
           
 
Methods inherited from class net.i2p.util.I2PAppThread
addOOMEventThreadListener, fireOOM, removeOOMEventThreadListener
 
Methods inherited from class net.i2p.util.I2PThread
addOOMEventListener, removeOOMEventListener, start
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, stop, stop, suspend, yield
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.i2p.update.UpdateTask
start
 

Field Detail

_context

protected final RouterContext _context

_log

protected final Log _log

_mgr

protected final ConsoleUpdateManager _mgr

_type

protected final UpdateType _type

_method

protected final UpdateMethod _method

_urls

protected final List<URI> _urls

_updateFile

protected final String _updateFile

_isRunning

protected volatile boolean _isRunning

done

protected boolean done

_get

protected EepGet _get

_isPartial

protected boolean _isPartial
tells the listeners what mode we are in - set to true in extending classes for checks


_newVersion

protected String _newVersion
set by the listeners on completion


_baos

protected final ByteArrayOutputStream _baos
56 byte header, only used for suds


_currentURI

protected URI _currentURI

CONNECT_TIMEOUT

protected static final long CONNECT_TIMEOUT
See Also:
Constant Field Values

INACTIVITY_TIMEOUT

protected static final long INACTIVITY_TIMEOUT
See Also:
Constant Field Values

NOPROXY_INACTIVITY_TIMEOUT

protected static final long NOPROXY_INACTIVITY_TIMEOUT
See Also:
Constant Field Values
Constructor Detail

UpdateRunner

public UpdateRunner(RouterContext ctx,
                    ConsoleUpdateManager mgr,
                    UpdateType type,
                    List<URI> uris)
Uses router version for partial checks


UpdateRunner

public UpdateRunner(RouterContext ctx,
                    ConsoleUpdateManager mgr,
                    UpdateType type,
                    UpdateMethod method,
                    List<URI> uris)
Uses router version for partial checks

Since:
0.9.9

UpdateRunner

public UpdateRunner(RouterContext ctx,
                    ConsoleUpdateManager mgr,
                    UpdateType type,
                    List<URI> uris,
                    String currentVersion)
Parameters:
currentVersion - used for partial checks
Since:
0.9.7

UpdateRunner

public UpdateRunner(RouterContext ctx,
                    ConsoleUpdateManager mgr,
                    UpdateType type,
                    UpdateMethod method,
                    List<URI> uris,
                    String currentVersion)
Parameters:
method - HTTP, HTTP_CLEARNET, or HTTPS_CLEARNET
currentVersion - used for partial checks
Since:
0.9.9
Method Detail

isRunning

public boolean isRunning()
Specified by:
isRunning in interface UpdateTask

shutdown

public void shutdown()
Specified by:
shutdown in interface UpdateTask

getType

public UpdateType getType()
Specified by:
getType in interface UpdateTask

getMethod

public UpdateMethod getMethod()
Specified by:
getMethod in interface UpdateTask

getURI

public URI getURI()
Description copied from interface: UpdateTask
The current URI being checked or downloaded from. Can change if there are multiple URIs to try.

Specified by:
getURI in interface UpdateTask

getID

public String getID()
Description copied from interface: UpdateTask
Valid for plugins

Specified by:
getID in interface UpdateTask

run

public void run()
Specified by:
run in interface Runnable
Overrides:
run in class I2PThread

update

protected void update()
Loop through the entire list of update URLs. For each one, first get the version from the first 56 bytes and see if it is newer than what we are running now. If it is, get the whole thing.


attemptFailed

public void attemptFailed(String url,
                          long bytesTransferred,
                          long bytesRemaining,
                          int currentAttempt,
                          int numRetries,
                          Exception cause)
Specified by:
attemptFailed in interface EepGet.StatusListener

bytesTransferred

public void bytesTransferred(long alreadyTransferred,
                             int currentWrite,
                             long bytesTransferred,
                             long bytesRemaining,
                             String url)
subclasses should override

Specified by:
bytesTransferred in interface EepGet.StatusListener

transferComplete

public void transferComplete(long alreadyTransferred,
                             long bytesTransferred,
                             long bytesRemaining,
                             String url,
                             String outputFile,
                             boolean notModified)
subclasses should override

Specified by:
transferComplete in interface EepGet.StatusListener

transferFailed

public void transferFailed(String url,
                           long bytesTransferred,
                           long bytesRemaining,
                           int currentAttempt)
subclasses should override

Specified by:
transferFailed in interface EepGet.StatusListener

headerReceived

public void headerReceived(String url,
                           int attemptNum,
                           String key,
                           String val)
Description copied from interface: EepGet.StatusListener
Note: Headers are not processed, and this is not called, for most error response codes, unless setWriteErrorToOutput() is called before fetch(). To be changed?

Specified by:
headerReceived in interface EepGet.StatusListener

attempting

public void attempting(String url)
Specified by:
attempting in interface EepGet.StatusListener

updateStatus

protected void updateStatus(String s)

linkify

protected static String linkify(String url)

_

protected String _(String s)
translate a string


_

protected String _(String s,
                   Object o)
translate a string with a parameter


toString

public String toString()
Overrides:
toString in class Thread