aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/IO/StreamHelper.cs
diff options
context:
space:
mode:
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);
+ }
+ }
}
}