Package com.google.android.exoplayer2.offline

## Interface WritableDownloadIndex

- All Superinterfaces:
    `DownloadIndex`
  All Known Implementing Classes:
    `DefaultDownloadIndex`

      @WorkerThread
      public interface WritableDownloadIndex
      extends DownloadIndex

  A writable index of `Downloads`.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `putDownload​(Download download)` | Adds or replaces a `Download`.
    `void` | `removeDownload​(String id)` | Removes the download with the given ID.
    `void` | `setDownloadingStatesToQueued()` | Sets all `Download.STATE_DOWNLOADING` states to `Download.STATE_QUEUED`.
    `void` | `setStatesToRemoving()` | Sets all states to `Download.STATE_REMOVING`.
    `void` | `setStopReason​(int stopReason)` | Sets the stop reason of the downloads in a terminal state (`Download.STATE_COMPLETED`, `Download.STATE_FAILED`).
    `void` | `setStopReason​(String id, int stopReason)` | Sets the stop reason of the download with the given ID in a terminal state (`Download.STATE_COMPLETED`, `Download.STATE_FAILED`).

    - ### Methods inherited from interface com.google.android.exoplayer2.offline.DownloadIndex

      `getDownload, getDownloads`

- - ### Method Detail

    - #### putDownload

          void putDownload​(Download download)
                    throws IOException

      Adds or replaces a `Download`.

      This method may be slow and shouldn't normally be called on the main thread.

      Parameters:
        `download` - The `Download` to be added.
      Throws:
        `IOException` - If an error occurs setting the state.

    - #### removeDownload

          void removeDownload​(String id)
                       throws IOException

      Removes the download with the given ID. Does nothing if a download with the given ID does not exist.

      This method may be slow and shouldn't normally be called on the main thread.

      Parameters:
        `id` - The ID of the download to remove.
      Throws:
        `IOException` - If an error occurs removing the state.

    - #### setDownloadingStatesToQueued

          void setDownloadingStatesToQueued()
                                     throws IOException

      Sets all `Download.STATE_DOWNLOADING` states to `Download.STATE_QUEUED`.

      This method may be slow and shouldn't normally be called on the main thread.

      Throws:
        `IOException` - If an error occurs updating the state.

    - #### setStatesToRemoving

          void setStatesToRemoving()
                            throws IOException

      Sets all states to `Download.STATE_REMOVING`.

      This method may be slow and shouldn't normally be called on the main thread.

      Throws:
        `IOException` - If an error occurs updating the state.

    - #### setStopReason

          void setStopReason​(int stopReason)
                      throws IOException

      Sets the stop reason of the downloads in a terminal state (`Download.STATE_COMPLETED`, `Download.STATE_FAILED`).

      This method may be slow and shouldn't normally be called on the main thread.

      Parameters:
        `stopReason` - The stop reason.
      Throws:
        `IOException` - If an error occurs updating the state.

    - #### setStopReason

          void setStopReason​(String id,
                             int stopReason)
                      throws IOException

      Sets the stop reason of the download with the given ID in a terminal state (`Download.STATE_COMPLETED`, `Download.STATE_FAILED`). Does nothing if a download with the given ID does not exist, or if it's not in a terminal state.

      This method may be slow and shouldn't normally be called on the main thread.

      Parameters:
        `id` - The ID of the download to update.
        `stopReason` - The stop reason.
      Throws:
        `IOException` - If an error occurs updating the state.