diff options
Diffstat (limited to 'MediaBrowser.Api/Playback/EndlessStreamCopy.cs')
| -rw-r--r-- | MediaBrowser.Api/Playback/EndlessStreamCopy.cs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/MediaBrowser.Api/Playback/EndlessStreamCopy.cs b/MediaBrowser.Api/Playback/EndlessStreamCopy.cs new file mode 100644 index 000000000..40586261f --- /dev/null +++ b/MediaBrowser.Api/Playback/EndlessStreamCopy.cs @@ -0,0 +1,32 @@ +using System.IO; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Playback +{ + public class EndlessStreamCopy + { + public async Task CopyStream(Stream source, Stream target, CancellationToken cancellationToken) + { + long position = 0; + + while (!cancellationToken.IsCancellationRequested) + { + await source.CopyToAsync(target, 81920, cancellationToken).ConfigureAwait(false); + + var fsPosition = source.Position; + + var bytesRead = fsPosition - position; + + //Logger.Debug("Streamed {0} bytes from file {1}", bytesRead, path); + + if (bytesRead == 0) + { + await Task.Delay(100, cancellationToken).ConfigureAwait(false); + } + + position = fsPosition; + } + } + } +} |
