Package net.i2p.router.update
Class PluginUpdateRunner
- java.lang.Object
-
- java.lang.Thread
-
- net.i2p.util.I2PThread
-
- net.i2p.util.I2PAppThread
-
- net.i2p.router.update.UpdateRunner
-
- net.i2p.router.update.PluginUpdateRunner
-
- All Implemented Interfaces:
Runnable
,UpdateTask
,EepGet.StatusListener
class PluginUpdateRunner extends UpdateRunner
Check for an updated version of a plugin. A plugin is a standard .sud file with a 40-byte signature, a 16-byte version, and a .zip file. So we get the current version and update URL for the installed plugin, then fetch the first 56 bytes of the URL, extract the version, and compare. uri list must not be empty. Moved from web/ and turned into an UpdateTask.- Since:
- 0.9.4 moved from PluginUpdateHandler
-
-
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
Fields Modifier and Type Field Description static String
PLUGIN_DIR
-
Fields inherited from class net.i2p.router.update.UpdateRunner
_baos, _context, _currentURI, _get, _isPartial, _isRunning, _log, _method, _mgr, _newVersion, _type, _updateFile, _urls, CONNECT_TIMEOUT, done, INACTIVITY_TIMEOUT, NOPROXY_INACTIVITY_TIMEOUT
-
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
-
-
Constructor Summary
Constructors Constructor Description PluginUpdateRunner(RouterContext ctx, ConsoleUpdateManager mgr, List<URI> uris, String appName, String oldVersion)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url)
Overridden to change the "Updating I2P" text in superString
getID()
Valid for pluginsURI
getURI()
The current URI being checked or downloaded from.void
transferComplete(long alreadyTransferred, long bytesTransferred, long bytesRemaining, String url, String outputFile, boolean notModified)
subclasses should overridevoid
transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt)
subclasses should overrideprotected void
update()
Loop through the entire list of update URLs.-
Methods inherited from class net.i2p.router.update.UpdateRunner
_t, _t, attemptFailed, attempting, getMethod, getType, headerReceived, isRunning, linkify, run, shutdown, toString, updateStatus
-
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, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, 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
-
PLUGIN_DIR
public static final String PLUGIN_DIR
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
PluginUpdateRunner
public PluginUpdateRunner(RouterContext ctx, ConsoleUpdateManager mgr, List<URI> uris, String appName, String oldVersion)
-
-
Method Detail
-
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 interfaceUpdateTask
- Overrides:
getURI
in classUpdateRunner
-
getID
public String getID()
Description copied from interface:UpdateTask
Valid for plugins- Specified by:
getID
in interfaceUpdateTask
- Overrides:
getID
in classUpdateRunner
-
update
protected void update()
Description copied from class:UpdateRunner
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.- Overrides:
update
in classUpdateRunner
-
bytesTransferred
public void bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url)
Overridden to change the "Updating I2P" text in super- Specified by:
bytesTransferred
in interfaceEepGet.StatusListener
- Overrides:
bytesTransferred
in classUpdateRunner
- Parameters:
alreadyTransferred
- total of all attempts, not including currentWrite If nonzero on the first call, a partial file of that length was found, _and_ the server supports resume. If zero on a subsequent call after some bytes are transferred (and presumably after an attemptFailed), the server does _not_ support resume and we had to start over. To track _actual_ transfer if the output file could already exist, the listener should keep its own counter, or subtract the initial alreadyTransferred value. And watch out for alreadyTransferred resetting if a resume failed...currentWrite
- since last call to the listenerbytesTransferred
- includes headers, retries, redirects, discarded partial downloads, ...bytesRemaining
- on this attempt only, currentWrite already subtracted - or -1 if chunked encoding or server does not return a length- Since:
- 0.9.35
-
transferComplete
public void transferComplete(long alreadyTransferred, long bytesTransferred, long bytesRemaining, String url, String outputFile, boolean notModified)
Description copied from class:UpdateRunner
subclasses should override- Specified by:
transferComplete
in interfaceEepGet.StatusListener
- Overrides:
transferComplete
in classUpdateRunner
outputFile
- null if unknown (output stream constructor)- See Also:
EepGet.StatusListener.bytesTransferred(long, int, long, long, java.lang.String)
-
transferFailed
public void transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt)
Description copied from class:UpdateRunner
subclasses should override- Specified by:
transferFailed
in interfaceEepGet.StatusListener
- Overrides:
transferFailed
in classUpdateRunner
- See Also:
EepGet.StatusListener.bytesTransferred(long, int, long, long, java.lang.String)
-
-