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
 
 class NewsFetcher extends UpdateRunner 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.I2PThreadI2PThread.OOMEventListener
 - 
Nested classes/interfaces inherited from class java.lang.ThreadThread.State, Thread.UncaughtExceptionHandler
 
- 
 - 
Field SummaryFields Modifier and Type Field Description (package private) static StringPROP_BLOCKLIST_TIME- 
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.ThreadMAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
- 
 - 
Constructor SummaryConstructors Constructor Description NewsFetcher(RouterContext ctx, ConsoleUpdateManager mgr, List<URI> uris)
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description voidbytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url)override to prevent status update(package private) voidcheckForUpdates()Parse the installed (not the temp) news file for the latest version.voidfetchNews()voidheaderReceived(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 update- 
Methods inherited from class net.i2p.router.update.UpdateRunner_t, _t, attemptFailed, attempting, getID, getMethod, getType, getURI, isRunning, linkify, shutdown, toString, update, updateStatus
 - 
Methods inherited from class net.i2p.util.I2PAppThreadaddOOMEventThreadListener, fireOOM, removeOOMEventThreadListener
 - 
Methods inherited from class net.i2p.util.I2PThreadaddOOMEventListener, removeOOMEventListener, start
 - 
Methods inherited from class java.lang.ThreadactiveCount, 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.Objectequals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 - 
Methods inherited from interface net.i2p.update.UpdateTaskstart
 
- 
 
- 
- 
- 
Field Detail- 
PROP_BLOCKLIST_TIMEstatic final String PROP_BLOCKLIST_TIME - See Also:
- Constant Field Values
 
 
- 
 - 
Constructor Detail- 
NewsFetcherpublic NewsFetcher(RouterContext ctx, ConsoleUpdateManager mgr, List<URI> uris) 
 
- 
 - 
Method Detail- 
runpublic void run() - Specified by:
- runin interface- Runnable
- Overrides:
- runin class- UpdateRunner
 
 - 
fetchNewspublic void fetchNews() 
 - 
checkForUpdatesvoid 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
 - 
bytesTransferredpublic void bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url)override to prevent status update- Specified by:
- bytesTransferredin interface- EepGet.StatusListener
- Overrides:
- bytesTransferredin class- UpdateRunner
- 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 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
 
 - 
headerReceivedpublic void headerReceived(String url, int attemptNum, String key, String val) Overriden to get the last-modified header- Specified by:
- headerReceivedin interface- EepGet.StatusListener
- Overrides:
- headerReceivedin class- UpdateRunner
 
 - 
transferCompletepublic 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 interface- EepGet.StatusListener
- Overrides:
- transferCompletein class- UpdateRunner
- outputFile- null if unknown (output stream constructor)
- See Also:
- EepGet.StatusListener.bytesTransferred(long, int, long, long, java.lang.String)
 
 - 
transferFailedpublic void transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt) override to prevent status update- Specified by:
- transferFailedin interface- EepGet.StatusListener
- Overrides:
- transferFailedin class- UpdateRunner
- See Also:
- EepGet.StatusListener.bytesTransferred(long, int, long, long, java.lang.String)
 
 
- 
 
-