diff options
| author | Andrew Rabert <6550543+nvllsvm@users.noreply.github.com> | 2019-01-20 18:13:49 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-01-20 18:13:49 -0500 |
| commit | 803bf563d74754139ff92810364262e3181e399d (patch) | |
| tree | 0bf6765b612a7cc7930076eda9961b960cf70aa7 /Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs | |
| parent | d16f38dbe19c7cf43b3b8efa6413294c3a7e4586 (diff) | |
| parent | 35d97dc949a40f4768e20107862096e17f6b201b (diff) | |
Merge pull request #621 from Bond-009/perf
Minor improvements to library scan code
Diffstat (limited to 'Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs')
| -rw-r--r-- | Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs | 42 |
1 files changed, 14 insertions, 28 deletions
diff --git a/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs b/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs index 9d25ad1b3..ea620cb2e 100644 --- a/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs +++ b/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs @@ -268,7 +268,7 @@ namespace Emby.Server.Implementations.HttpClientManager var responseCachePath = Path.Combine(_appPaths.CachePath, "httpclient", urlHash); - var response = await GetCachedResponse(responseCachePath, options.CacheLength, url).ConfigureAwait(false); + var response = GetCachedResponse(responseCachePath, options.CacheLength, url); if (response != null) { return response; @@ -284,30 +284,24 @@ namespace Emby.Server.Implementations.HttpClientManager return response; } - private async Task<HttpResponseInfo> GetCachedResponse(string responseCachePath, TimeSpan cacheLength, string url) + private HttpResponseInfo GetCachedResponse(string responseCachePath, TimeSpan cacheLength, string url) { try { if (_fileSystem.GetLastWriteTimeUtc(responseCachePath).Add(cacheLength) > DateTime.UtcNow) { - using (var stream = _fileSystem.GetFileStream(responseCachePath, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read, true)) - { - var memoryStream = new MemoryStream(); - - await stream.CopyToAsync(memoryStream).ConfigureAwait(false); - memoryStream.Position = 0; + var stream = _fileSystem.GetFileStream(responseCachePath, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read, true); - return new HttpResponseInfo - { - ResponseUrl = url, - Content = memoryStream, - StatusCode = HttpStatusCode.OK, - ContentLength = memoryStream.Length - }; - } + return new HttpResponseInfo + { + ResponseUrl = url, + Content = stream, + StatusCode = HttpStatusCode.OK, + ContentLength = stream.Length + }; } } - catch (FileNotFoundException) + catch (FileNotFoundException) // REVIEW: @bond Is this really faster? { } @@ -323,19 +317,11 @@ namespace Emby.Server.Implementations.HttpClientManager { _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(responseCachePath)); - using (var responseStream = response.Content) + using (var fileStream = _fileSystem.GetFileStream(responseCachePath, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.None, true)) { - var memoryStream = new MemoryStream(); - await responseStream.CopyToAsync(memoryStream).ConfigureAwait(false); - memoryStream.Position = 0; + await response.Content.CopyToAsync(fileStream).ConfigureAwait(false); - using (var fileStream = _fileSystem.GetFileStream(responseCachePath, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.None, true)) - { - await memoryStream.CopyToAsync(fileStream).ConfigureAwait(false); - - memoryStream.Position = 0; - response.Content = memoryStream; - } + response.Content.Position = 0; } } |
