net.i2p.router.web

## Class UpdateHandler.UpdateRunner

- java.lang.Object
- - net.i2p.router.web.UpdateHandler.UpdateRunner

- All Implemented Interfaces:
    Runnable, EepGet.StatusListener
  Direct Known Subclasses:
    PluginUpdateChecker.PluginUpdateCheckerRunner, PluginUpdateHandler.PluginUpdateRunner, UnsignedUpdateHandler.UnsignedUpdateRunner
  Enclosing class:
    UpdateHandler

      public class UpdateHandler.UpdateRunner
      extends Object
      implements Runnable, EepGet.StatusListener

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected EepGet` | `_get`
    `protected boolean` | `_isRunning`
    `protected DecimalFormat` | `_pct`
    `protected boolean` | `done`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `UpdateHandler.UpdateRunner()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `attemptFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt, int numRetries, Exception cause)`
    `void` | `attempting(String url)`
    `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` | `headerReceived(String url, int attemptNum, String key, String val)`
    `boolean` | `isDone()`
    `boolean` | `isRunning()`
    `void` | `run()`
    `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 java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### _isRunning

          protected boolean _isRunning

    - #### done

          protected boolean done

    - #### _get

          protected EepGet _get

    - #### _pct

          protected final DecimalFormat _pct

  - ### Constructor Detail

    - #### UpdateHandler.UpdateRunner

          public UpdateHandler.UpdateRunner()

  - ### Method Detail

    - #### isRunning

          public boolean isRunning()

    - #### isDone

          public boolean isDone()

    - #### run

          public void run()

      Specified by:
        `run` in interface `Runnable`

    - #### update

          protected void update()

      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.

    - #### attemptFailed

          public void attemptFailed(String url,
                           long bytesTransferred,
                           long bytesRemaining,
                           int currentAttempt,
                           int numRetries,
                           Exception cause)

      Specified by:
        `attemptFailed` in interface `EepGet.StatusListener`

    - #### 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`

    - #### transferComplete

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

      Specified by:
        `transferComplete` in interface `EepGet.StatusListener`

    - #### transferFailed

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

      Specified by:
        `transferFailed` in interface `EepGet.StatusListener`

    - #### headerReceived

          public void headerReceived(String url,
                            int attemptNum,
                            String key,
                            String val)

      Specified by:
        `headerReceived` in interface `EepGet.StatusListener`

    - #### attempting

          public void attempting(String url)

      Specified by:
        `attempting` in interface `EepGet.StatusListener`