package android.telephony.mbms;
import android.os.Binder;
import android.os.RemoteException;
import java.util.concurrent.Executor;
public class InternalDownloadProgressListener extends IDownloadProgressListener.Stub {
private final Executor mExecutor;
private final DownloadProgressListener mAppListener;
private volatile boolean mIsStopped = false;
public InternalDownloadProgressListener(DownloadProgressListener appListener,
Executor executor) {
mAppListener = appListener;
mExecutor = executor;
}
@Override
public void onProgressUpdated(final DownloadRequest request, final FileInfo fileInfo,
final int currentDownloadSize, final int fullDownloadSize, final int currentDecodedSize,
final int fullDecodedSize) throws RemoteException {
if (mIsStopped) {
return;
}
mExecutor.execute(new Runnable() {
@Override
public void run() {
long token = Binder.clearCallingIdentity();
try {
mAppListener.onProgressUpdated(request, fileInfo, currentDownloadSize,
fullDownloadSize, currentDecodedSize, fullDecodedSize);
} finally {
Binder.restoreCallingIdentity(token);
}
}
});
}
public void stop() {
mIsStopped = true;
}
}