1 /* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.messaging.datamodel.media; 17 18 import com.android.messaging.datamodel.media.MediaResourceManager.MediaResourceLoadListener; 19 20 import java.util.List; 21 22 /** 23 * A mix-in style class that wraps around a normal, threading-agnostic MediaRequest object with 24 * functionalities offered by {@link BindableMediaRequest} to allow for async processing. 25 */ 26 class AsyncMediaRequestWrapper<T extends RefCountedMediaResource> extends BindableMediaRequest<T> { 27 28 /** 29 * Create a new async media request wrapper instance given the listener. 30 */ 31 public static <T extends RefCountedMediaResource> AsyncMediaRequestWrapper<T> createWith(final MediaRequest<T> wrappedRequest, final MediaResourceLoadListener<T> listener)32 createWith(final MediaRequest<T> wrappedRequest, 33 final MediaResourceLoadListener<T> listener) { 34 return new AsyncMediaRequestWrapper<T>(listener, wrappedRequest); 35 } 36 37 private final MediaRequest<T> mWrappedRequest; 38 AsyncMediaRequestWrapper(final MediaResourceLoadListener<T> listener, final MediaRequest<T> wrappedRequest)39 private AsyncMediaRequestWrapper(final MediaResourceLoadListener<T> listener, 40 final MediaRequest<T> wrappedRequest) { 41 super(listener); 42 mWrappedRequest = wrappedRequest; 43 } 44 45 @Override getKey()46 public String getKey() { 47 return mWrappedRequest.getKey(); 48 } 49 50 @Override getMediaCache()51 public MediaCache<T> getMediaCache() { 52 return mWrappedRequest.getMediaCache(); 53 } 54 55 @Override getRequestType()56 public int getRequestType() { 57 return mWrappedRequest.getRequestType(); 58 } 59 60 @Override loadMediaBlocking(List<MediaRequest<T>> chainedTask)61 public T loadMediaBlocking(List<MediaRequest<T>> chainedTask) throws Exception { 62 return mWrappedRequest.loadMediaBlocking(chainedTask); 63 } 64 65 @Override getCacheId()66 public int getCacheId() { 67 return mWrappedRequest.getCacheId(); 68 } 69 70 @Override getDescriptor()71 public MediaRequestDescriptor<T> getDescriptor() { 72 return mWrappedRequest.getDescriptor(); 73 } 74 }