aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/IO/StreamHelper.cs
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-11-20 13:02:59 -0500
committerGitHub <noreply@github.com>2017-11-20 13:02:59 -0500
commit8f78652398ad4e9e9af53a1bd065afe4b9d9260e (patch)
tree32bc4144212d7f6ee3941c9c2471b56ab9c5d3e2 /MediaBrowser.Controller/IO/StreamHelper.cs
parent7d15b140cfe4f761e03f661f82cf946f327863f5 (diff)
parent71ff88284be60fb39a7389e0c4990c94f2207ed4 (diff)
Merge pull request #3032 from MediaBrowser/beta
Beta
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);
+ }
+ }
}
}