package com.bumptech.glide.load.engine;
import android.support.annotation.Nullable;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.Key;
import com.bumptech.glide.load.data.DataFetcher;
/**
* Generates a series of {@link com.bumptech.glide.load.data.DataFetcher DataFetchers} using
* registered {@link com.bumptech.glide.load.model.ModelLoader ModelLoaders} and a model.
*/
interface DataFetcherGenerator {
/**
* Called when the generator has finished loading data from a
* {@link com.bumptech.glide.load.data.DataFetcher}.
*/
interface FetcherReadyCallback {
/**
* Requests that we call startNext() again on a Glide owned thread.
*/
void reschedule();
/**
* Notifies the callback that the load is complete.
*
* @param sourceKey The id of the loaded data.
* @param data The loaded data, or null if the load failed.
* @param fetcher The data fetcher we attempted to load from.
* @param dataSource The data source we were loading from.
* @param attemptedKey The key we were loading data from (may be an alternate).
*/
void onDataFetcherReady(Key sourceKey, @Nullable Object data, DataFetcher<?> fetcher,
DataSource dataSource, Key attemptedKey);
/**
* Notifies the callback when the load fails.
*
* @param attemptedKey The key we were using to load (may be an alternate).
* @param e The exception that caused the load to fail.
* @param fetcher The fetcher we were loading from.
* @param dataSource The data source we were loading from.
*/
void onDataFetcherFailed(Key attemptedKey, Exception e, DataFetcher<?> fetcher,
DataSource dataSource);
}
/**
* Attempts to a single new {@link com.bumptech.glide.load.data.DataFetcher} and returns true if
* a {@link com.bumptech.glide.load.data.DataFetcher} was started, and false otherwise.
*/
boolean startNext();
/**
* Attempts to cancel the currently running fetcher.
*
* <p> This will be called on the main thread and should complete quickly. </p>
*/
void cancel();
}