From 24d2c441b3d265026ee77297ea4b7a3ffb47918b Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Sat, 11 Aug 2012 14:07:07 -0400 Subject: Re-worked async actions in BaseHandler, and changed AudioBitRate to AudioBitRates. --- .../Net/Handlers/BaseEmbeddedResourceHandler.cs | 5 +-- MediaBrowser.Common/Net/Handlers/BaseHandler.cs | 37 ++++++++-------------- .../Net/Handlers/StaticFileHandler.cs | 12 +------ 3 files changed, 17 insertions(+), 37 deletions(-) (limited to 'MediaBrowser.Common/Net') diff --git a/MediaBrowser.Common/Net/Handlers/BaseEmbeddedResourceHandler.cs b/MediaBrowser.Common/Net/Handlers/BaseEmbeddedResourceHandler.cs index d8347db30e..2fcead05b0 100644 --- a/MediaBrowser.Common/Net/Handlers/BaseEmbeddedResourceHandler.cs +++ b/MediaBrowser.Common/Net/Handlers/BaseEmbeddedResourceHandler.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Threading.Tasks; namespace MediaBrowser.Common.Net.Handlers { @@ -48,9 +49,9 @@ namespace MediaBrowser.Common.Net.Handlers } } - protected override void WriteResponseToOutputStream(Stream stream) + protected override Task WriteResponseToOutputStream(Stream stream) { - GetEmbeddedResourceStream().CopyTo(stream); + return GetEmbeddedResourceStream().CopyToAsync(stream); } protected abstract Stream GetEmbeddedResourceStream(); diff --git a/MediaBrowser.Common/Net/Handlers/BaseHandler.cs b/MediaBrowser.Common/Net/Handlers/BaseHandler.cs index 120d2ce7b2..89803d8d74 100644 --- a/MediaBrowser.Common/Net/Handlers/BaseHandler.cs +++ b/MediaBrowser.Common/Net/Handlers/BaseHandler.cs @@ -5,6 +5,7 @@ using System.IO; using System.IO.Compression; using System.Linq; using System.Net; +using System.Threading.Tasks; using MediaBrowser.Common.Logging; namespace MediaBrowser.Common.Net.Handlers @@ -36,18 +37,6 @@ namespace MediaBrowser.Common.Net.Handlers } } - /// - /// Returns true or false indicating if the handler writes to the stream asynchronously. - /// If so the subclass will be responsible for disposing the stream when complete. - /// - protected virtual bool IsAsyncHandler - { - get - { - return false; - } - } - protected virtual bool SupportsByteRangeRequests { get @@ -246,7 +235,7 @@ namespace MediaBrowser.Common.Net.Handlers } } - private void ProcessUncachedResponse(HttpListenerContext ctx, TimeSpan cacheDuration) + private async void ProcessUncachedResponse(HttpListenerContext ctx, TimeSpan cacheDuration) { long? totalContentLength = TotalContentLength; @@ -277,8 +266,6 @@ namespace MediaBrowser.Common.Net.Handlers CacheResponse(ctx.Response, cacheDuration, LastDateModified); } - PrepareUncachedResponse(ctx, cacheDuration); - // Set the status code ctx.Response.StatusCode = StatusCode; @@ -301,9 +288,15 @@ namespace MediaBrowser.Common.Net.Handlers outputStream = CompressedStream; } - WriteResponseToOutputStream(outputStream); - - if (!IsAsyncHandler) + try + { + await WriteResponseToOutputStream(outputStream); + } + catch (Exception ex) + { + Logger.LogException(ex); + } + finally { DisposeResponseStream(); } @@ -315,10 +308,6 @@ namespace MediaBrowser.Common.Net.Handlers } } - protected virtual void PrepareUncachedResponse(HttpListenerContext ctx, TimeSpan cacheDuration) - { - } - private void CacheResponse(HttpListenerResponse response, TimeSpan duration, DateTime? dateModified) { DateTime lastModified = dateModified ?? DateTime.Now; @@ -328,9 +317,9 @@ namespace MediaBrowser.Common.Net.Handlers response.Headers[HttpResponseHeader.LastModified] = lastModified.ToString("r"); } - protected abstract void WriteResponseToOutputStream(Stream stream); + protected abstract Task WriteResponseToOutputStream(Stream stream); - protected void DisposeResponseStream() + private void DisposeResponseStream() { if (CompressedStream != null) { diff --git a/MediaBrowser.Common/Net/Handlers/StaticFileHandler.cs b/MediaBrowser.Common/Net/Handlers/StaticFileHandler.cs index 35d38fb4a7..3eb908938f 100644 --- a/MediaBrowser.Common/Net/Handlers/StaticFileHandler.cs +++ b/MediaBrowser.Common/Net/Handlers/StaticFileHandler.cs @@ -117,14 +117,6 @@ namespace MediaBrowser.Common.Net.Handlers } } - protected override bool IsAsyncHandler - { - get - { - return true; - } - } - public override string ContentType { get @@ -133,7 +125,7 @@ namespace MediaBrowser.Common.Net.Handlers } } - protected async override void WriteResponseToOutputStream(Stream stream) + protected async override Task WriteResponseToOutputStream(Stream stream) { try { @@ -175,8 +167,6 @@ namespace MediaBrowser.Common.Net.Handlers { FileStream.Dispose(); } - - DisposeResponseStream(); } } -- cgit v1.2.3