package com.novoda.downloadmanager;

/**
 * Controls the rate at which a {@link DownloadFile} calls back to
 * a {@link DownloadBatch}. Essentially controls the rate of notifications
 * during a download of a file.
 */
public interface FileCallbackThrottle {

    /**
     * Set the callback that should be notified of {@link DownloadBatchStatus}
     * changes.
     *
     * @param callback to notify.
     */
    void setCallback(DownloadBatchStatusCallback callback);

    /**
     * The throttle logic that will forward events to the {@link DownloadBatchStatusCallback}.
     *
     * @param downloadBatchStatus the latest status to emit.
     */
    void update(DownloadBatchStatus downloadBatchStatus);

    /**
     * Disable the callback or the throttling logic to
     * prevent further emissions of {@link DownloadBatchStatus}.
     */
    void stopUpdates();
}

@@ -208,16 +208,144 @@
 a file.%0A
+ * %3Cp%3E%0A * Note: This does not control the overall emissions of %7B@link DownloadBatchStatus%7D between the client and this library.%0A
  */%0Apubl

Add additional note to the callback throttle.