EtchDroid/app/src/main/java/eu/depau/etchdroid/worker/impl/Input2OutputStreamCopyAsyncWorker.kt

30 lines
799 B
Kotlin
Raw Normal View History

package eu.depau.etchdroid.worker.impl
2019-07-24 04:55:55 +00:00
import eu.depau.etchdroid.worker.abstractimpl.AbstractAutoProgressAsyncWorker
import eu.depau.etchdroid.worker.dto.ProgressUpdateDTO
import java.io.InputStream
import java.io.OutputStream
open class Input2OutputStreamCopyAsyncWorker(
private val source: InputStream,
private val dest: OutputStream,
chunkSize: Int,
override val progressUpdateDTO: ProgressUpdateDTO,
size: Long
) : AbstractAutoProgressAsyncWorker(size) {
private val buffer = ByteArray(chunkSize)
2019-07-24 04:55:55 +00:00
override fun runStep(): Boolean {
val readBytes = source.read(buffer)
if (readBytes < 0)
return false
dest.write(buffer, 0, readBytes)
progressUpdate(readBytes.toLong())
return true
}
}