aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Net
diff options
context:
space:
mode:
authorLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-08-21 22:50:59 -0400
committerLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-08-21 22:50:59 -0400
commitfbf8cc833c441de8890998600be044296acfc783 (patch)
treed2980ddcbf5987f805916842f975795d9cabce83 /MediaBrowser.Common/Net
parent1c5f728ec252f7a146b7e6fa1b409e2ca3f8d920 (diff)
a few more async optimizations
Diffstat (limited to 'MediaBrowser.Common/Net')
-rw-r--r--MediaBrowser.Common/Net/Handlers/BaseEmbeddedResourceHandler.cs35
-rw-r--r--MediaBrowser.Common/Net/Handlers/BaseHandler.cs14
-rw-r--r--MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs11
-rw-r--r--MediaBrowser.Common/Net/Handlers/StaticFileHandler.cs55
4 files changed, 39 insertions, 76 deletions
diff --git a/MediaBrowser.Common/Net/Handlers/BaseEmbeddedResourceHandler.cs b/MediaBrowser.Common/Net/Handlers/BaseEmbeddedResourceHandler.cs
index a8c7090f7..9d9e2a0e0 100644
--- a/MediaBrowser.Common/Net/Handlers/BaseEmbeddedResourceHandler.cs
+++ b/MediaBrowser.Common/Net/Handlers/BaseEmbeddedResourceHandler.cs
@@ -1,5 +1,4 @@
-using System;
-using System.IO;
+using System.IO;
using System.Threading.Tasks;
namespace MediaBrowser.Common.Net.Handlers
@@ -16,37 +15,7 @@ namespace MediaBrowser.Common.Net.Handlers
public override Task<string> GetContentType()
{
- return Task.Run(() =>
- {
- string extension = Path.GetExtension(ResourcePath);
-
- if (extension.EndsWith("jpeg", StringComparison.OrdinalIgnoreCase) || extension.EndsWith("jpg", StringComparison.OrdinalIgnoreCase))
- {
- return "image/jpeg";
- }
- else if (extension.EndsWith("png", StringComparison.OrdinalIgnoreCase))
- {
- return "image/png";
- }
- else if (extension.EndsWith("ico", StringComparison.OrdinalIgnoreCase))
- {
- return "image/ico";
- }
- else if (extension.EndsWith("js", StringComparison.OrdinalIgnoreCase))
- {
- return "application/x-javascript";
- }
- else if (extension.EndsWith("css", StringComparison.OrdinalIgnoreCase))
- {
- return "text/css";
- }
- else if (extension.EndsWith("html", StringComparison.OrdinalIgnoreCase))
- {
- return "text/html; charset=utf-8";
- }
-
- return "text/plain; charset=utf-8";
- });
+ return Task.FromResult<string>(MimeTypes.GetMimeType(ResourcePath));
}
protected override Task WriteResponseToOutputStream(Stream stream)
diff --git a/MediaBrowser.Common/Net/Handlers/BaseHandler.cs b/MediaBrowser.Common/Net/Handlers/BaseHandler.cs
index 7a4efdaf2..19a1e7af7 100644
--- a/MediaBrowser.Common/Net/Handlers/BaseHandler.cs
+++ b/MediaBrowser.Common/Net/Handlers/BaseHandler.cs
@@ -185,11 +185,11 @@ namespace MediaBrowser.Common.Net.Handlers
// When serving a range request, we need to return status code 206 to indicate a partial response body
StatusCode = SupportsByteRangeRequests && IsRangeRequest ? 206 : 200;
- ctx.Response.ContentType = await GetContentType();
+ ctx.Response.ContentType = await GetContentType().ConfigureAwait(false);
TimeSpan cacheDuration = CacheDuration;
- DateTime? lastDateModified = await GetLastDateModified();
+ DateTime? lastDateModified = await GetLastDateModified().ConfigureAwait(false);
if (ctx.Request.Headers.AllKeys.Contains("If-Modified-Since"))
{
@@ -205,13 +205,13 @@ namespace MediaBrowser.Common.Net.Handlers
}
}
- await PrepareResponse();
+ await PrepareResponse().ConfigureAwait(false);
if (IsResponseValid)
{
bool compressResponse = ShouldCompressResponse(ctx.Response.ContentType) && ClientSupportsCompression;
- await ProcessUncachedRequest(ctx, compressResponse, cacheDuration, lastDateModified);
+ await ProcessUncachedRequest(ctx, compressResponse, cacheDuration, lastDateModified).ConfigureAwait(false);
}
else
{
@@ -285,7 +285,7 @@ namespace MediaBrowser.Common.Net.Handlers
outputStream = CompressedStream;
}
- await WriteResponseToOutputStream(outputStream);
+ await WriteResponseToOutputStream(outputStream).ConfigureAwait(false);
}
else
{
@@ -307,7 +307,7 @@ namespace MediaBrowser.Common.Net.Handlers
/// </summary>
protected virtual Task PrepareResponse()
{
- return Task.Run(() => { });
+ return Task.FromResult<object>(null);
}
protected abstract Task WriteResponseToOutputStream(Stream stream);
@@ -359,7 +359,7 @@ namespace MediaBrowser.Common.Net.Handlers
{
DateTime? value = null;
- return Task.Run<DateTime?>(() => { return value; });
+ return Task.FromResult<DateTime?>(value);
}
private bool IsResponseValid
diff --git a/MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs b/MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs
index a3a47a4a3..650853537 100644
--- a/MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs
+++ b/MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs
@@ -8,10 +8,7 @@ namespace MediaBrowser.Common.Net.Handlers
{
public override Task<string> GetContentType()
{
- return Task.Run(() =>
- {
- return MimeTypes.JsonMimeType;
- });
+ return Task.FromResult<string>(MimeTypes.JsonMimeType);
}
private bool _ObjectToSerializeEnsured = false;
@@ -21,7 +18,7 @@ namespace MediaBrowser.Common.Net.Handlers
{
if (!_ObjectToSerializeEnsured)
{
- _ObjectToSerialize = await GetObjectToSerialize();
+ _ObjectToSerialize = await GetObjectToSerialize().ConfigureAwait(false);
if (_ObjectToSerialize == null)
{
@@ -34,9 +31,9 @@ namespace MediaBrowser.Common.Net.Handlers
protected abstract Task<T> GetObjectToSerialize();
- protected override async Task PrepareResponse()
+ protected override Task PrepareResponse()
{
- await EnsureObjectToSerialize();
+ return EnsureObjectToSerialize();
}
protected async override Task WriteResponseToOutputStream(Stream stream)
diff --git a/MediaBrowser.Common/Net/Handlers/StaticFileHandler.cs b/MediaBrowser.Common/Net/Handlers/StaticFileHandler.cs
index d8971dd97..799abea9b 100644
--- a/MediaBrowser.Common/Net/Handlers/StaticFileHandler.cs
+++ b/MediaBrowser.Common/Net/Handlers/StaticFileHandler.cs
@@ -102,33 +102,30 @@ namespace MediaBrowser.Common.Net.Handlers
protected override Task<DateTime?> GetLastDateModified()
{
- return Task.Run<DateTime?>(() =>
- {
- EnsureSourceStream();
+ DateTime? value = null;
- if (SourceStream == null)
- {
- return null;
- }
+ EnsureSourceStream();
- return File.GetLastWriteTime(Path);
- });
+ if (SourceStream != null)
+ {
+ value = File.GetLastWriteTime(Path);
+ }
+
+ return Task.FromResult<DateTime?>(value);
}
public override Task<string> GetContentType()
{
- return Task.Run(() =>
- {
- return MimeTypes.GetMimeType(Path);
- });
+ return Task.FromResult<string>(MimeTypes.GetMimeType(Path));
}
protected override Task PrepareResponse()
{
- return Task.Run(() => { EnsureSourceStream(); });
+ EnsureSourceStream();
+ return Task.FromResult<object>(null);
}
- protected async override Task WriteResponseToOutputStream(Stream stream)
+ protected override Task WriteResponseToOutputStream(Stream stream)
{
if (IsRangeRequest)
{
@@ -137,22 +134,22 @@ namespace MediaBrowser.Common.Net.Handlers
// If the requested range is "0-" and we know the total length, we can optimize by avoiding having to buffer the content into memory
if (requestedRange.Value == null && TotalContentLength != null)
{
- await ServeCompleteRangeRequest(requestedRange, stream);
+ return ServeCompleteRangeRequest(requestedRange, stream);
}
else if (TotalContentLength.HasValue)
{
// This will have to buffer a portion of the content into memory
- await ServePartialRangeRequestWithKnownTotalContentLength(requestedRange, stream);
+ return ServePartialRangeRequestWithKnownTotalContentLength(requestedRange, stream);
}
else
{
// This will have to buffer the entire content into memory
- await ServePartialRangeRequestWithUnknownTotalContentLength(requestedRange, stream);
+ return ServePartialRangeRequestWithUnknownTotalContentLength(requestedRange, stream);
}
}
else
{
- await SourceStream.CopyToAsync(stream);
+ return SourceStream.CopyToAsync(stream);
}
}
@@ -170,7 +167,7 @@ namespace MediaBrowser.Common.Net.Handlers
/// Handles a range request of "bytes=0-"
/// This will serve the complete content and add the content-range header
/// </summary>
- private async Task ServeCompleteRangeRequest(KeyValuePair<long, long?> requestedRange, Stream responseStream)
+ private Task ServeCompleteRangeRequest(KeyValuePair<long, long?> requestedRange, Stream responseStream)
{
long totalContentLength = TotalContentLength.Value;
@@ -187,7 +184,7 @@ namespace MediaBrowser.Common.Net.Handlers
SourceStream.Position = rangeStart;
}
- await SourceStream.CopyToAsync(responseStream);
+ return SourceStream.CopyToAsync(responseStream);
}
/// <summary>
@@ -196,7 +193,7 @@ namespace MediaBrowser.Common.Net.Handlers
private async Task ServePartialRangeRequestWithUnknownTotalContentLength(KeyValuePair<long, long?> requestedRange, Stream responseStream)
{
// Read the entire stream so that we can determine the length
- byte[] bytes = await ReadBytes(SourceStream, 0, null);
+ byte[] bytes = await ReadBytes(SourceStream, 0, null).ConfigureAwait(false);
long totalContentLength = bytes.LongLength;
@@ -208,7 +205,7 @@ namespace MediaBrowser.Common.Net.Handlers
HttpListenerContext.Response.ContentLength64 = rangeLength;
HttpListenerContext.Response.Headers["Content-Range"] = string.Format("bytes {0}-{1}/{2}", rangeStart, rangeEnd, totalContentLength);
- await responseStream.WriteAsync(bytes, Convert.ToInt32(rangeStart), Convert.ToInt32(rangeLength));
+ await responseStream.WriteAsync(bytes, Convert.ToInt32(rangeStart), Convert.ToInt32(rangeLength)).ConfigureAwait(false);
}
/// <summary>
@@ -222,14 +219,14 @@ namespace MediaBrowser.Common.Net.Handlers
long rangeLength = 1 + rangeEnd - rangeStart;
// Only read the bytes we need
- byte[] bytes = await ReadBytes(SourceStream, Convert.ToInt32(rangeStart), Convert.ToInt32(rangeLength));
+ byte[] bytes = await ReadBytes(SourceStream, Convert.ToInt32(rangeStart), Convert.ToInt32(rangeLength)).ConfigureAwait(false);
// Content-Length is the length of what we're serving, not the original content
HttpListenerContext.Response.ContentLength64 = rangeLength;
HttpListenerContext.Response.Headers["Content-Range"] = string.Format("bytes {0}-{1}/{2}", rangeStart, rangeEnd, totalContentLength);
- await responseStream.WriteAsync(bytes, 0, Convert.ToInt32(rangeLength));
+ await responseStream.WriteAsync(bytes, 0, Convert.ToInt32(rangeLength)).ConfigureAwait(false);
}
/// <summary>
@@ -252,9 +249,9 @@ namespace MediaBrowser.Common.Net.Handlers
using (MemoryStream ms = new MemoryStream())
{
int read;
- while ((read = await input.ReadAsync(buffer, 0, buffer.Length)) > 0)
+ while ((read = await input.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false)) > 0)
{
- await ms.WriteAsync(buffer, 0, read);
+ await ms.WriteAsync(buffer, 0, read).ConfigureAwait(false);
}
return ms.ToArray();
}
@@ -265,9 +262,9 @@ namespace MediaBrowser.Common.Net.Handlers
using (MemoryStream ms = new MemoryStream())
{
- int read = await input.ReadAsync(buffer, 0, buffer.Length);
+ int read = await input.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
- await ms.WriteAsync(buffer, 0, read);
+ await ms.WriteAsync(buffer, 0, read).ConfigureAwait(false);
return ms.ToArray();
}