Skip to content

Instantly share code, notes, and snippets.

@OlegIlyenko
Created April 14, 2012 21:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save OlegIlyenko/2387880 to your computer and use it in GitHub Desktop.
Save OlegIlyenko/2387880 to your computer and use it in GitHub Desktop.
import math._
class ProgressListener(availableBytes: Long, tracker: Progress => Unit) extends Function1[Long, Unit] {
var transfered: Long = 0
val startTime = System.currentTimeMillis
def apply(bytesTransfered: Long) {
transfered += bytesTransfered
val elapsed = System.currentTimeMillis - startTime
val bpms = (transfered / max(elapsed, 1000)).toLong
val bps = (transfered / max(elapsed / 1000, 1)).toLong
tracker(Progress(
percent = (transfered * 100 / availableBytes).toInt min 100,
size = availableBytes,
remains = availableBytes - transfered,
done = transfered,
bps = bps,
elapsed = elapsed,
estimated = (availableBytes - transfered) / max(bpms, 1)
))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment