diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-10-06 14:55:01 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-10-06 14:55:01 -0400 |
| commit | a69ca6c55bb7183d247c2c3b25203dbed99fd5d9 (patch) | |
| tree | 32c7f5589fc31d862f978ea46fbbd4c6e96650fe /MediaBrowser.Providers | |
| parent | 83606d82d57604f9796455640d2e93367783f69e (diff) | |
avoid buffering http responses
Diffstat (limited to 'MediaBrowser.Providers')
6 files changed, 20 insertions, 15 deletions
diff --git a/MediaBrowser.Providers/GameGenres/GameGenreImageProvider.cs b/MediaBrowser.Providers/GameGenres/GameGenreImageProvider.cs index 3a532257fe..b26f237151 100644 --- a/MediaBrowser.Providers/GameGenres/GameGenreImageProvider.cs +++ b/MediaBrowser.Providers/GameGenres/GameGenreImageProvider.cs @@ -37,7 +37,7 @@ namespace MediaBrowser.Providers.GameGenres public static string ProviderName { - get { return "Media Browser Designs"; } + get { return "Emby Designs"; } } public bool Supports(IHasImages item) @@ -137,7 +137,7 @@ namespace MediaBrowser.Providers.GameGenres { CancellationToken = cancellationToken, Url = url, - ResourcePool = GenreImageProvider.ImageDownloadResourcePool + BufferContent = false }); } } diff --git a/MediaBrowser.Providers/Genres/GenreImageProvider.cs b/MediaBrowser.Providers/Genres/GenreImageProvider.cs index 7c2ed00a61..954cd008e3 100644 --- a/MediaBrowser.Providers/Genres/GenreImageProvider.cs +++ b/MediaBrowser.Providers/Genres/GenreImageProvider.cs @@ -22,8 +22,6 @@ namespace MediaBrowser.Providers.Genres private readonly SemaphoreSlim _listResourcePool = new SemaphoreSlim(1, 1); - public static SemaphoreSlim ImageDownloadResourcePool = new SemaphoreSlim(5, 5); - public GenreImageProvider(IServerConfigurationManager config, IHttpClient httpClient, IFileSystem fileSystem) { _config = config; @@ -38,7 +36,7 @@ namespace MediaBrowser.Providers.Genres public static string ProviderName { - get { return "Media Browser Designs"; } + get { return "Emby Designs"; } } public bool Supports(IHasImages item) @@ -138,7 +136,7 @@ namespace MediaBrowser.Providers.Genres { CancellationToken = cancellationToken, Url = url, - ResourcePool = ImageDownloadResourcePool + BufferContent = false }); } } diff --git a/MediaBrowser.Providers/Manager/ImageSaver.cs b/MediaBrowser.Providers/Manager/ImageSaver.cs index 36b5987a08..c9b3f22c52 100644 --- a/MediaBrowser.Providers/Manager/ImageSaver.cs +++ b/MediaBrowser.Providers/Manager/ImageSaver.cs @@ -38,6 +38,7 @@ namespace MediaBrowser.Providers.Manager private readonly ILibraryMonitor _libraryMonitor; private readonly IFileSystem _fileSystem; private readonly ILogger _logger; + private readonly IMemoryStreamProvider _memoryStreamProvider; /// <summary> /// Initializes a new instance of the <see cref="ImageSaver" /> class. @@ -46,12 +47,13 @@ namespace MediaBrowser.Providers.Manager /// <param name="libraryMonitor">The directory watchers.</param> /// <param name="fileSystem">The file system.</param> /// <param name="logger">The logger.</param> - public ImageSaver(IServerConfigurationManager config, ILibraryMonitor libraryMonitor, IFileSystem fileSystem, ILogger logger) + public ImageSaver(IServerConfigurationManager config, ILibraryMonitor libraryMonitor, IFileSystem fileSystem, ILogger logger, IMemoryStreamProvider memoryStreamProvider) { _config = config; _libraryMonitor = libraryMonitor; _fileSystem = fileSystem; _logger = logger; + _memoryStreamProvider = memoryStreamProvider; } /// <summary> @@ -124,7 +126,7 @@ namespace MediaBrowser.Providers.Manager var retryPaths = GetSavePaths(item, type, imageIndex, mimeType, false); // If there are more than one output paths, the stream will need to be seekable - var memoryStream = new MemoryStream(); + var memoryStream = _memoryStreamProvider.CreateNew(); using (source) { await source.CopyToAsync(memoryStream).ConfigureAwait(false); diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index 25b9b4fd5e..7e28254b06 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -20,6 +20,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using CommonIO; +using MediaBrowser.Common.IO; using MediaBrowser.Model.Serialization; namespace MediaBrowser.Providers.Manager @@ -64,6 +65,7 @@ namespace MediaBrowser.Providers.Manager private IExternalId[] _externalIds; private readonly Func<ILibraryManager> _libraryManagerFactory; + private readonly IMemoryStreamProvider _memoryStreamProvider; /// <summary> /// Initializes a new instance of the <see cref="ProviderManager" /> class. @@ -73,7 +75,7 @@ namespace MediaBrowser.Providers.Manager /// <param name="libraryMonitor">The directory watchers.</param> /// <param name="logManager">The log manager.</param> /// <param name="fileSystem">The file system.</param> - public ProviderManager(IHttpClient httpClient, IServerConfigurationManager configurationManager, ILibraryMonitor libraryMonitor, ILogManager logManager, IFileSystem fileSystem, IServerApplicationPaths appPaths, Func<ILibraryManager> libraryManagerFactory, IJsonSerializer json) + public ProviderManager(IHttpClient httpClient, IServerConfigurationManager configurationManager, ILibraryMonitor libraryMonitor, ILogManager logManager, IFileSystem fileSystem, IServerApplicationPaths appPaths, Func<ILibraryManager> libraryManagerFactory, IJsonSerializer json, IMemoryStreamProvider memoryStreamProvider) { _logger = logManager.GetLogger("ProviderManager"); _httpClient = httpClient; @@ -83,6 +85,7 @@ namespace MediaBrowser.Providers.Manager _appPaths = appPaths; _libraryManagerFactory = libraryManagerFactory; _json = json; + _memoryStreamProvider = memoryStreamProvider; } /// <summary> @@ -142,12 +145,12 @@ namespace MediaBrowser.Providers.Manager public Task SaveImage(IHasImages item, Stream source, string mimeType, ImageType type, int? imageIndex, CancellationToken cancellationToken) { - return new ImageSaver(ConfigurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, source, mimeType, type, imageIndex, cancellationToken); + return new ImageSaver(ConfigurationManager, _libraryMonitor, _fileSystem, _logger, _memoryStreamProvider).SaveImage(item, source, mimeType, type, imageIndex, cancellationToken); } public Task SaveImage(IHasImages item, Stream source, string mimeType, ImageType type, int? imageIndex, string internalCacheKey, CancellationToken cancellationToken) { - return new ImageSaver(ConfigurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, source, mimeType, type, imageIndex, internalCacheKey, cancellationToken); + return new ImageSaver(ConfigurationManager, _libraryMonitor, _fileSystem, _logger, _memoryStreamProvider).SaveImage(item, source, mimeType, type, imageIndex, internalCacheKey, cancellationToken); } public Task SaveImage(IHasImages item, string source, string mimeType, ImageType type, int? imageIndex, string internalCacheKey, CancellationToken cancellationToken) @@ -159,7 +162,7 @@ namespace MediaBrowser.Providers.Manager var fileStream = _fileSystem.GetFileStream(source, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true); - return new ImageSaver(ConfigurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, fileStream, mimeType, type, imageIndex, internalCacheKey, cancellationToken); + return new ImageSaver(ConfigurationManager, _libraryMonitor, _fileSystem, _logger, _memoryStreamProvider).SaveImage(item, fileStream, mimeType, type, imageIndex, internalCacheKey, cancellationToken); } public async Task<IEnumerable<RemoteImageInfo>> GetAvailableRemoteImages(IHasImages item, RemoteImageQuery query, CancellationToken cancellationToken) diff --git a/MediaBrowser.Providers/Studios/StudiosImageProvider.cs b/MediaBrowser.Providers/Studios/StudiosImageProvider.cs index 62109243de..bfb7eb8fdd 100644 --- a/MediaBrowser.Providers/Studios/StudiosImageProvider.cs +++ b/MediaBrowser.Providers/Studios/StudiosImageProvider.cs @@ -37,7 +37,7 @@ namespace MediaBrowser.Providers.Studios public static string ProviderName { - get { return "Media Browser Designs"; } + get { return "Emby Designs"; } } public bool Supports(IHasImages item) @@ -137,7 +137,7 @@ namespace MediaBrowser.Providers.Studios { CancellationToken = cancellationToken, Url = url, - ResourcePool = GenreImageProvider.ImageDownloadResourcePool + BufferContent = false }); } } diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs index 4ac9e68361..ca4f1b956c 100644 --- a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs @@ -21,6 +21,7 @@ using System.Threading; using System.Threading.Tasks; using System.Xml; using CommonIO; +using MediaBrowser.Common.IO; namespace MediaBrowser.Providers.TV { @@ -38,6 +39,7 @@ namespace MediaBrowser.Providers.TV private readonly CultureInfo _usCulture = new CultureInfo("en-US"); private readonly ILogger _logger; private readonly ILibraryManager _libraryManager; + private readonly IMemoryStreamProvider _memoryStreamProvider; public TvdbSeriesProvider(IZipClient zipClient, IHttpClient httpClient, IFileSystem fileSystem, IServerConfigurationManager config, ILogger logger, ILibraryManager libraryManager) { @@ -238,7 +240,7 @@ namespace MediaBrowser.Providers.TV DeleteXmlFiles(seriesDataPath); // Copy to memory stream because we need a seekable stream - using (var ms = new MemoryStream()) + using (var ms = _memoryStreamProvider.CreateNew()) { await zipStream.CopyToAsync(ms).ConfigureAwait(false); |
