## net.i2p.router.web
Class PluginUpdateChecker.PluginUpdateCheckerRunner

    java.lang.Object
      net.i2p.router.web.UpdateHandler.UpdateRunner
          net.i2p.router.web.PluginUpdateChecker.PluginUpdateCheckerRunner

All Implemented Interfaces:
  Runnable, EepGet.StatusListener

Enclosing class:
  PluginUpdateChecker

    public class PluginUpdateChecker.PluginUpdateCheckerRunner

extends UpdateHandler.UpdateRunner
implements Runnable, EepGet.StatusListener

Field Summary
`(package private) ByteArrayOutputStream` `_baos`

Fields inherited from class net.i2p.router.web.UpdateHandler.UpdateRunner
`_get, _isRunning, _pct, done`

Constructor Summary
`PluginUpdateChecker.PluginUpdateCheckerRunner()`

Method Summary
`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` `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 net.i2p.router.web.UpdateHandler.UpdateRunner
`attemptFailed, attempting, headerReceived, isDone, isRunning, run`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface java.lang.Runnable
`run`

Methods inherited from interface net.i2p.util.EepGet.StatusListener
`attemptFailed, attempting, headerReceived`

Field Detail

### _baos

    ByteArrayOutputStream _baos

Constructor Detail

### PluginUpdateChecker.PluginUpdateCheckerRunner

    public PluginUpdateChecker.PluginUpdateCheckerRunner()

Method Detail

### update

    protected void update()

  Description copied from class: `UpdateHandler.UpdateRunner`
  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.

  Overrides:
    `update` in class `UpdateHandler.UpdateRunner`

### 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`
  Overrides:
    `bytesTransferred` in class `UpdateHandler.UpdateRunner`

### transferComplete

    public void transferComplete(long alreadyTransferred,
                                 long bytesTransferred,
                                 long bytesRemaining,
                                 String url,
                                 String outputFile,
                                 boolean notModified)

  Specified by:
    `transferComplete` in interface `EepGet.StatusListener`
  Overrides:
    `transferComplete` in class `UpdateHandler.UpdateRunner`

### transferFailed

    public void transferFailed(String url,
                               long bytesTransferred,
                               long bytesRemaining,
                               int currentAttempt)

  Specified by:
    `transferFailed` in interface `EepGet.StatusListener`
  Overrides:
    `transferFailed` in class `UpdateHandler.UpdateRunner`