aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/IO/StreamHelper.cs
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-11-03 14:16:30 -0400
committerGitHub <noreply@github.com>2017-11-03 14:16:30 -0400
commit2bffe246eb6697efedae7a30e9feeebca1ccf12f (patch)
treeefd9c0dc47ac63b8400612f78d08a6d8ec6a1a3f /MediaBrowser.Controller/IO/StreamHelper.cs
parentde9292f117e507387287c3356ba73da788b13d75 (diff)
parentb9c1f61681de23d95de7c6b392eb3e55670991da (diff)
Merge pull request #3001 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Controller/IO/StreamHelper.cs')
-rw-r--r--MediaBrowser.Controller/IO/StreamHelper.cs23
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);
+ }
+ }
}
}