diff options
| author | hatharry <hatharry@hotmail.com> | 2016-08-28 12:51:32 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-08-28 12:51:32 +0000 |
| commit | c974641a352685b2e6595dd7b291843c8e6364ac (patch) | |
| tree | 2e6ca83c4d08c5b676e12edae947e635d290bc3f /MediaBrowser.Server.Implementations/HttpServer/AsyncStreamWriter.cs | |
| parent | f21f9923de6291aaf985f32dbbbaddbb26d07fb1 (diff) | |
| parent | 81765ff29f624fd34e1abe3c7bb8149bbb001aef (diff) | |
Merge pull request #22 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Server.Implementations/HttpServer/AsyncStreamWriter.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/HttpServer/AsyncStreamWriter.cs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/MediaBrowser.Server.Implementations/HttpServer/AsyncStreamWriter.cs b/MediaBrowser.Server.Implementations/HttpServer/AsyncStreamWriter.cs new file mode 100644 index 000000000..e44b0c6af --- /dev/null +++ b/MediaBrowser.Server.Implementations/HttpServer/AsyncStreamWriter.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using ServiceStack; +using ServiceStack.Web; +using MediaBrowser.Controller.Net; + +namespace MediaBrowser.Server.Implementations.HttpServer +{ + public class AsyncStreamWriter : IStreamWriter, IAsyncStreamWriter, IHasOptions + { + /// <summary> + /// Gets or sets the source stream. + /// </summary> + /// <value>The source stream.</value> + private IAsyncStreamSource _source; + + public Action OnComplete { get; set; } + public Action OnError { get; set; } + + /// <summary> + /// Initializes a new instance of the <see cref="AsyncStreamWriter" /> class. + /// </summary> + public AsyncStreamWriter(IAsyncStreamSource source) + { + _source = source; + } + + public IDictionary<string, string> Options + { + get + { + var hasOptions = _source as IHasOptions; + if (hasOptions != null) + { + return hasOptions.Options; + } + + return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); + } + } + + /// <summary> + /// Writes to. + /// </summary> + /// <param name="responseStream">The response stream.</param> + public void WriteTo(Stream responseStream) + { + var task = _source.WriteToAsync(responseStream); + Task.WaitAll(task); + } + + public async Task WriteToAsync(Stream responseStream) + { + await _source.WriteToAsync(responseStream).ConfigureAwait(false); + } + } +} |
