class NewsFetcher extends UpdateRunner
I2PThread.OOMEventListenerThread.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_TIMEOUTMAX_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, updateStatusaddOOMEventThreadListener, fireOOM, removeOOMEventThreadListeneraddOOMEventListener, removeOOMEventListener, startactiveCount, 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, yieldequals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitstartstatic 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 attemptFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt, int numRetries, Exception cause)
attemptFailed in interface EepGet.StatusListenerattemptFailed in class UpdateRunnerEepGet.StatusListener.bytesTransferred(long, int, long, long, java.lang.String)public void bytesTransferred(long alreadyTransferred,
int currentWrite,
long bytesTransferred,
long bytesRemaining,
String url)
bytesTransferred in interface EepGet.StatusListenerbytesTransferred in class UpdateRunneralreadyTransferred - 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 lengthvoid checkForUpdates()
public void fetchNews()
public void headerReceived(String url, int attemptNum, String key, String val)
headerReceived in interface EepGet.StatusListenerheaderReceived in class UpdateRunnerpublic void run()
run in interface Runnablerun in class UpdateRunnerpublic void transferComplete(long alreadyTransferred,
long bytesTransferred,
long bytesRemaining,
String url,
String outputFile,
boolean notModified)
transferComplete in interface EepGet.StatusListenertransferComplete in class UpdateRunneroutputFile - null if unknown (output stream constructor)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.StatusListenertransferFailed in class UpdateRunnerEepGet.StatusListener.bytesTransferred(long, int, long, long, java.lang.String)