package com.koushikdutta.ion; import android.content.Context; import com.koushikdutta.async.DataEmitter; import com.koushikdutta.async.future.Future; import com.koushikdutta.async.future.FutureCallback; import com.koushikdutta.async.http.AsyncHttpRequest; import com.koushikdutta.ion.bitmap.BitmapInfo; import com.koushikdutta.ion.future.ResponseFuture; import java.io.InputStream; import java.lang.reflect.Type; /** * Created by koush on 5/22/13. */ public interface Loader { public static class LoaderEmitter { public LoaderEmitter(DataEmitter emitter, long length, ResponseServedFrom servedFrom, HeadersResponse headers, AsyncHttpRequest request) { this.length = length; this.emitter = emitter; this.servedFrom = servedFrom; this.headers = headers; this.request = request; } DataEmitter emitter; long length; public DataEmitter getDataEmitter() { return emitter; } public long length() { return length; } ResponseServedFrom servedFrom; public ResponseServedFrom getServedFrom() { return servedFrom; } HeadersResponse headers; public HeadersResponse getHeaders() { return headers; } AsyncHttpRequest request; public AsyncHttpRequest getRequest() { return request; } } /** * returns a Future if this loader can handle a request * otherwise it returns null, and Ion continues to the next loader. * @param ion * @param request * @param callback * @return */ public Future<DataEmitter> load(Ion ion, AsyncHttpRequest request, FutureCallback<LoaderEmitter> callback); /** * returns a future if the laoder can handle the request as a bitmap * otherwise it returns null * @param ion * @param key * @param uri * @param resizeWidth * @param resizeHeight * @return */ public Future<BitmapInfo> loadBitmap(Context context, Ion ion, String key, String uri, int resizeWidth, int resizeHeight, boolean animateGif); /** * Resolve a request into another request. * @param ion * @param request * @return */ public Future<AsyncHttpRequest> resolve(Context context, Ion ion, AsyncHttpRequest request); public <T> ResponseFuture<T> load(Ion ion, AsyncHttpRequest request, Type type); }