package com.novoda.downloadmanager.lib; import java.io.IOException; import java.io.InputStream; class RegularDataTransferer implements DataTransferer { private final DataWriter dataWriter; public RegularDataTransferer(DataWriter dataWriter) { this.dataWriter = dataWriter; } @Override public DownloadTask.State transferData(DownloadTask.State state, InputStream in) throws StopRequestException { DownloadTask.State newState = state; try { byte[] buffer = new byte[Constants.BUFFER_SIZE]; int readLast = in.read(buffer); while (readLast != Constants.NO_BYTES_READ) { newState = dataWriter.write(newState, buffer, readLast); readLast = in.read(buffer); } return newState; } catch (IOException e) { // It was doing the same thing in regular and exception cases return newState; } } }