net.i2p.router.web
Class UpdateHandler.UpdateRunner
java.lang.Object
net.i2p.router.web.UpdateHandler.UpdateRunner
- All Implemented Interfaces:
- Runnable, EepGet.StatusListener
- Direct Known Subclasses:
- PluginUpdateChecker.PluginUpdateCheckerRunner, PluginUpdateHandler.PluginUpdateRunner, UnsignedUpdateHandler.UnsignedUpdateRunner
- Enclosing class:
- UpdateHandler
public class UpdateHandler.UpdateRunner
- extends Object
- implements Runnable, EepGet.StatusListener
Method Summary |
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)
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. |
void |
headerReceived(String url,
int attemptNum,
String key,
String val)
|
boolean |
isDone()
|
boolean |
isRunning()
|
void |
run()
|
void |
transferComplete(long alreadyTransferred,
long bytesTransferred,
long bytesRemaining,
String url,
String outputFile,
boolean notModified)
|
void |
transferFailed(String url,
long bytesTransferred,
long bytesRemaining,
int currentAttempt)
|
protected void |
update()
Loop through the entire list of update URLs. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
_isRunning
protected boolean _isRunning
done
protected boolean done
_get
protected EepGet _get
_pct
protected final DecimalFormat _pct
UpdateHandler.UpdateRunner
public UpdateHandler.UpdateRunner()
isRunning
public boolean isRunning()
isDone
public boolean isDone()
run
public void run()
- Specified by:
run
in interface Runnable
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)
- Description copied from interface:
EepGet.StatusListener
- 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 listener
bytesTransferred - 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
Total length should be == alreadyTransferred + currentWrite + bytesRemaining for all calls
- Specified by:
bytesTransferred
in interface EepGet.StatusListener
transferComplete
public void transferComplete(long alreadyTransferred,
long bytesTransferred,
long bytesRemaining,
String url,
String outputFile,
boolean notModified)
- Specified by:
transferComplete
in interface EepGet.StatusListener
transferFailed
public void transferFailed(String url,
long bytesTransferred,
long bytesRemaining,
int currentAttempt)
- Specified by:
transferFailed
in interface EepGet.StatusListener
headerReceived
public void headerReceived(String url,
int attemptNum,
String key,
String val)
- Specified by:
headerReceived
in interface EepGet.StatusListener
attempting
public void attempting(String url)
- Specified by:
attempting
in interface EepGet.StatusListener