Package net.i2p.router.update
Class NewsFetcher
java.lang.Object
java.lang.Thread
net.i2p.util.I2PThread
net.i2p.util.I2PAppThread
net.i2p.router.update.UpdateRunner
net.i2p.router.update.NewsFetcher
- All Implemented Interfaces:
Runnable,UpdateTask,EepGet.StatusListener
Task to fetch updates to the news.xml, and to keep
track of whether that has an announcement for a new version.
- Since:
- 0.9.4 moved from NewsFetcher and make an Updater
-
Nested Class Summary
Nested classes/interfaces inherited from class net.i2p.util.I2PThread
I2PThread.OOMEventListenerNested classes/interfaces inherited from class java.lang.Thread
Thread.BuilderPREVIEW, Thread.State, Thread.UncaughtExceptionHandler -
Field Summary
FieldsFields 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_TIMEOUTFields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidbytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url) override to prevent status update(package private) voidParse the installed (not the temp) news file for the latest version.voidvoidheaderReceived(String url, int attemptNum, String key, String val) Overriden to get the last-modified headervoidrun()voidtransferComplete(long alreadyTransferred, long bytesTransferred, long bytesRemaining, String url, String outputFile, boolean notModified) Copies the file from temp dir to the news location, calls checkForUpdates()voidtransferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt) override to prevent status updateMethods inherited from class net.i2p.router.update.UpdateRunner
_t, _t, attemptFailed, attempting, getID, getMethod, getType, getURI, isRunning, linkify, shutdown, toString, update, updateStatusMethods inherited from class net.i2p.util.I2PAppThread
addOOMEventThreadListener, fireOOM, removeOOMEventThreadListenerMethods inherited from class net.i2p.util.I2PThread
addOOMEventListener, removeOOMEventListener, startMethods 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, isVirtual, join, join, join, join, ofPlatform, ofVirtual, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, sleep, startVirtualThread, stop, suspend, threadId, yieldMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface net.i2p.update.UpdateTask
start
-
Field Details
-
PROP_BLOCKLIST_TIME
- See Also:
-
-
Constructor Details
-
NewsFetcher
-
-
Method Details
-
run
public void run()- Specified by:
runin interfaceRunnable- Overrides:
runin classUpdateRunner
-
fetchNews
public void fetchNews() -
checkForUpdates
void checkForUpdates()Parse the installed (not the temp) news file for the latest version. TODO: Real XML parsing TODO: Check minVersion, use backup URLs specified TODO: SU3 -
bytesTransferred
public void bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url) override to prevent status update- Specified by:
bytesTransferredin interfaceEepGet.StatusListener- Overrides:
bytesTransferredin 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
-
headerReceived
Overriden to get the last-modified header- Specified by:
headerReceivedin interfaceEepGet.StatusListener- Overrides:
headerReceivedin classUpdateRunner
-
transferComplete
public 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()- Specified by:
transferCompletein interfaceEepGet.StatusListener- Overrides:
transferCompletein classUpdateRunner- Parameters:
outputFile- null if unknown (output stream constructor)- See Also:
-
transferFailed
public void transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt) override to prevent status update- Specified by:
transferFailedin interfaceEepGet.StatusListener- Overrides:
transferFailedin classUpdateRunner- See Also:
-