class NewsFetcher extends UpdateRunner
I2PThread.OOMEventListener
Thread.State, Thread.UncaughtExceptionHandler
Modifier and Type | Field and Description |
---|---|
(package private) static String |
PROP_BLOCKLIST_TIME |
_baos, _context, _currentURI, _get, _isPartial, _isRunning, _log, _method, _mgr, _newVersion, _type, _updateFile, _urls, CONNECT_TIMEOUT, done, INACTIVITY_TIMEOUT, NOPROXY_INACTIVITY_TIMEOUT
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
Constructor and Description |
---|
NewsFetcher(RouterContext ctx,
ConsoleUpdateManager mgr,
List<URI> uris) |
NewsFetcher(RouterContext ctx,
ConsoleUpdateManager mgr,
List<URI> uris,
long timeout) |
Modifier and Type | Method and Description |
---|---|
void |
attemptFailed(String url,
long bytesTransferred,
long bytesRemaining,
int currentAttempt,
int numRetries,
Exception cause)
override for status update
|
void |
bytesTransferred(long alreadyTransferred,
int currentWrite,
long bytesTransferred,
long bytesRemaining,
String url)
override to prevent status update
|
(package private) void |
checkForUpdates()
Parse the installed (not the temp) news file for the latest version.
|
void |
fetchNews() |
void |
headerReceived(String url,
int attemptNum,
String key,
String val)
Overriden to get the last-modified header
|
void |
run() |
void |
transferComplete(long alreadyTransferred,
long bytesTransferred,
long bytesRemaining,
String url,
String outputFile,
boolean notModified)
Copies the file from temp dir to the news location,
calls checkForUpdates()
|
void |
transferFailed(String url,
long bytesTransferred,
long bytesRemaining,
int currentAttempt)
override for status update
|
_t, _t, attempting, getID, getMethod, getType, getURI, isRunning, linkify, shutdown, toString, update, updateStatus
addOOMEventThreadListener, fireOOM, removeOOMEventThreadListener
addOOMEventListener, removeOOMEventListener, start
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
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
start
static final String PROP_BLOCKLIST_TIME
public NewsFetcher(RouterContext ctx, ConsoleUpdateManager mgr, List<URI> uris)
public NewsFetcher(RouterContext ctx, ConsoleUpdateManager mgr, List<URI> uris, long timeout)
timeout
- if less than 60 seconds, we assume this was manually initiated,
and we will log status to the sidebarpublic void run()
run
in interface Runnable
run
in class UpdateRunner
public void fetchNews()
void checkForUpdates()
public void bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url)
bytesTransferred
in interface EepGet.StatusListener
bytesTransferred
in class UpdateRunner
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 lengthpublic void headerReceived(String url, int attemptNum, String key, String val)
headerReceived
in interface EepGet.StatusListener
headerReceived
in class UpdateRunner
public void transferComplete(long alreadyTransferred, long bytesTransferred, long bytesRemaining, String url, String outputFile, boolean notModified)
transferComplete
in interface EepGet.StatusListener
transferComplete
in class UpdateRunner
outputFile
- null if unknown (output stream constructor)EepGet.StatusListener.bytesTransferred(long, int, long, long, java.lang.String)
public void attemptFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt, int numRetries, Exception cause)
attemptFailed
in interface EepGet.StatusListener
attemptFailed
in class UpdateRunner
EepGet.StatusListener.bytesTransferred(long, int, long, long, java.lang.String)
public void transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt)
transferFailed
in interface EepGet.StatusListener
transferFailed
in class UpdateRunner
EepGet.StatusListener.bytesTransferred(long, int, long, long, java.lang.String)