diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-11-03 14:11:04 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-11-03 14:11:04 -0400 |
| commit | 0d28929e171992e55ab220b878edaec59e81b0ae (patch) | |
| tree | 6eb930de73c1176e35f45b77f3803035116d6e0c /MediaBrowser.Controller/IO/StreamHelper.cs | |
| parent | 7174ee66d5acb06c310da56c5d53d0a4f000db90 (diff) | |
update download progress reporting
Diffstat (limited to 'MediaBrowser.Controller/IO/StreamHelper.cs')
| -rw-r--r-- | MediaBrowser.Controller/IO/StreamHelper.cs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/IO/StreamHelper.cs b/MediaBrowser.Controller/IO/StreamHelper.cs index 106fec41f..5aec9a182 100644 --- a/MediaBrowser.Controller/IO/StreamHelper.cs +++ b/MediaBrowser.Controller/IO/StreamHelper.cs @@ -1,6 +1,7 @@ using System.IO; using System.Threading; using System; +using System.Threading.Tasks; namespace MediaBrowser.Controller.IO { @@ -23,5 +24,27 @@ namespace MediaBrowser.Controller.IO } } } + + public static async Task CopyToAsync(Stream source, Stream destination, int bufferSize, IProgress<double> progress, long contentLength, CancellationToken cancellationToken) + { + byte[] buffer = new byte[bufferSize]; + int read; + long totalRead = 0; + + while ((read = source.Read(buffer, 0, buffer.Length)) != 0) + { + cancellationToken.ThrowIfCancellationRequested(); + + destination.Write(buffer, 0, read); + + totalRead += read; + + double pct = totalRead; + pct /= contentLength; + pct *= 100; + + progress.Report(pct); + } + } } } |
