19facd7399690405f4c35114972eb52c1a424e9deSam Juddpackage com.bumptech.glide.load; 21732686228f6309f8305e4b6c6066b845ab543dbSam Judd 31732686228f6309f8305e4b6c6066b845ab543dbSam Juddimport android.util.Log; 41732686228f6309f8305e4b6c6066b845ab543dbSam Juddimport com.bumptech.glide.load.engine.Resource; 51732686228f6309f8305e4b6c6066b845ab543dbSam Juddimport com.bumptech.glide.load.engine.cache.DiskCache; 61732686228f6309f8305e4b6c6066b845ab543dbSam Judd 71732686228f6309f8305e4b6c6066b845ab543dbSam Juddimport java.io.IOException; 81732686228f6309f8305e4b6c6066b845ab543dbSam Juddimport java.io.InputStream; 91732686228f6309f8305e4b6c6066b845ab543dbSam Judd 101732686228f6309f8305e4b6c6066b845ab543dbSam Juddpublic class CacheLoader { 111732686228f6309f8305e4b6c6066b845ab543dbSam Judd private static final String TAG = "CacheLoader"; 121732686228f6309f8305e4b6c6066b845ab543dbSam Judd private DiskCache diskCache; 131732686228f6309f8305e4b6c6066b845ab543dbSam Judd 141732686228f6309f8305e4b6c6066b845ab543dbSam Judd public CacheLoader(DiskCache diskCache) { 151732686228f6309f8305e4b6c6066b845ab543dbSam Judd this.diskCache = diskCache; 161732686228f6309f8305e4b6c6066b845ab543dbSam Judd } 171732686228f6309f8305e4b6c6066b845ab543dbSam Judd 181732686228f6309f8305e4b6c6066b845ab543dbSam Judd public <Z> Resource<Z> load(Key key, ResourceDecoder<InputStream, Z> decoder, int width, int height) { 191732686228f6309f8305e4b6c6066b845ab543dbSam Judd Resource<Z> result = null; 201732686228f6309f8305e4b6c6066b845ab543dbSam Judd InputStream fromCache = diskCache.get(key); 211732686228f6309f8305e4b6c6066b845ab543dbSam Judd if (fromCache != null) { 221732686228f6309f8305e4b6c6066b845ab543dbSam Judd try { 231732686228f6309f8305e4b6c6066b845ab543dbSam Judd result = decoder.decode(fromCache, width, height); 241732686228f6309f8305e4b6c6066b845ab543dbSam Judd } catch (IOException e) { 251732686228f6309f8305e4b6c6066b845ab543dbSam Judd if (Log.isLoggable(TAG, Log.DEBUG)) { 261732686228f6309f8305e4b6c6066b845ab543dbSam Judd Log.d(TAG, "Exception decoding image from cache", e); 271732686228f6309f8305e4b6c6066b845ab543dbSam Judd } 281732686228f6309f8305e4b6c6066b845ab543dbSam Judd } 291732686228f6309f8305e4b6c6066b845ab543dbSam Judd if (result == null) { 301732686228f6309f8305e4b6c6066b845ab543dbSam Judd if (Log.isLoggable(TAG, Log.DEBUG)) { 311732686228f6309f8305e4b6c6066b845ab543dbSam Judd Log.d(TAG, "Failed to decode image from cache or not present in cache"); 321732686228f6309f8305e4b6c6066b845ab543dbSam Judd } 331732686228f6309f8305e4b6c6066b845ab543dbSam Judd diskCache.delete(key); 341732686228f6309f8305e4b6c6066b845ab543dbSam Judd } 351732686228f6309f8305e4b6c6066b845ab543dbSam Judd } 361732686228f6309f8305e4b6c6066b845ab543dbSam Judd return result; 371732686228f6309f8305e4b6c6066b845ab543dbSam Judd } 381732686228f6309f8305e4b6c6066b845ab543dbSam Judd} 39