diff options
| author | Luke <luke.pulverenti@gmail.com> | 2017-11-03 14:16:30 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-11-03 14:16:30 -0400 |
| commit | 2bffe246eb6697efedae7a30e9feeebca1ccf12f (patch) | |
| tree | efd9c0dc47ac63b8400612f78d08a6d8ec6a1a3f /MediaBrowser.Controller/IO/StreamHelper.cs | |
| parent | de9292f117e507387287c3356ba73da788b13d75 (diff) | |
| parent | b9c1f61681de23d95de7c6b392eb3e55670991da (diff) | |
Merge pull request #3001 from MediaBrowser/dev
Dev
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); + } + } } } |
