diff options
| author | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-22 19:44:20 -0500 |
|---|---|---|
| committer | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-22 19:44:20 -0500 |
| commit | 6a5bf9cc780c6cd878be4c5111d64226208f0597 (patch) | |
| tree | 21261a5a0743410d3537eb17dbd8d5967684e34f | |
| parent | 881bf8b9cbccb1c669489b7470906c314893d760 (diff) | |
extracted more interfaces
| -rw-r--r-- | MediaBrowser.Common/Kernel/BaseKernel.cs | 21 | ||||
| -rw-r--r-- | MediaBrowser.Common/Kernel/IWebSocketListener.cs | 3 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Drawing/ImageManager.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Kernel.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaBrowser.Controller.csproj | 2 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Providers/BaseImageEnhancer.cs | 99 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Providers/IImageEnhancer.cs | 55 |
7 files changed, 80 insertions, 108 deletions
diff --git a/MediaBrowser.Common/Kernel/BaseKernel.cs b/MediaBrowser.Common/Kernel/BaseKernel.cs index 91965e469..202bd3cab 100644 --- a/MediaBrowser.Common/Kernel/BaseKernel.cs +++ b/MediaBrowser.Common/Kernel/BaseKernel.cs @@ -197,7 +197,6 @@ namespace MediaBrowser.Common.Kernel /// Gets the web socket listeners. /// </summary> /// <value>The web socket listeners.</value> - [ImportMany(typeof(IWebSocketListener))] public IEnumerable<IWebSocketListener> WebSocketListeners { get; private set; } /// <summary> @@ -237,6 +236,11 @@ namespace MediaBrowser.Common.Kernel public IEnumerable<IRestfulService> RestServices { get; private set; } /// <summary> + /// The disposable parts + /// </summary> + private readonly List<IDisposable> _disposableParts = new List<IDisposable>(); + + /// <summary> /// The _protobuf serializer initialized /// </summary> private bool _protobufSerializerInitialized; @@ -497,6 +501,7 @@ namespace MediaBrowser.Common.Kernel protected virtual void ComposePartsWithIocContainer(Type[] allTypes, Container container) { RestServices = GetExports<IRestfulService>(allTypes); + WebSocketListeners = GetExports<IWebSocketListener>(allTypes); } /// <summary> @@ -511,7 +516,11 @@ namespace MediaBrowser.Common.Kernel Logger.Info("Composing instances of " + currentType.Name); - return allTypes.Where(currentType.IsAssignableFrom).Select(Instantiate).Cast<T>().ToArray(); + var parts = allTypes.Where(currentType.IsAssignableFrom).Select(Instantiate).Cast<T>().ToArray(); + + _disposableParts.AddRange(parts.OfType<IDisposable>()); + + return parts; } /// <summary> @@ -528,6 +537,7 @@ namespace MediaBrowser.Common.Kernel /// Composes the exported values. /// </summary> /// <param name="container">The container.</param> + /// <param name="iocContainer"></param> protected virtual void ComposeExportedValues(CompositionContainer container, Container iocContainer) { container.ComposeExportedValue("logger", Logger); @@ -733,6 +743,13 @@ namespace MediaBrowser.Common.Kernel DisposeHttpManager(); DisposeComposableParts(); + + foreach (var part in _disposableParts) + { + part.Dispose(); + } + + _disposableParts.Clear(); } } diff --git a/MediaBrowser.Common/Kernel/IWebSocketListener.cs b/MediaBrowser.Common/Kernel/IWebSocketListener.cs index 00be28ed3..b04bb6885 100644 --- a/MediaBrowser.Common/Kernel/IWebSocketListener.cs +++ b/MediaBrowser.Common/Kernel/IWebSocketListener.cs @@ -1,5 +1,4 @@ using MediaBrowser.Common.Net; -using System; using System.Threading.Tasks; namespace MediaBrowser.Common.Kernel @@ -7,7 +6,7 @@ namespace MediaBrowser.Common.Kernel /// <summary> ///This is an interface for listening to messages coming through a web socket connection /// </summary> - public interface IWebSocketListener : IDisposable + public interface IWebSocketListener { /// <summary> /// Processes the message. diff --git a/MediaBrowser.Controller/Drawing/ImageManager.cs b/MediaBrowser.Controller/Drawing/ImageManager.cs index 16fd4a5b8..a0ba9d550 100644 --- a/MediaBrowser.Controller/Drawing/ImageManager.cs +++ b/MediaBrowser.Controller/Drawing/ImageManager.cs @@ -541,7 +541,7 @@ namespace MediaBrowser.Controller.Drawing /// <param name="imageType">Type of the image.</param> /// <returns>Guid.</returns> /// <exception cref="System.ArgumentNullException">item</exception> - public Guid GetImageCacheTag(string originalImagePath, DateTime dateModified, IEnumerable<BaseImageEnhancer> imageEnhancers, BaseItem item, ImageType imageType) + public Guid GetImageCacheTag(string originalImagePath, DateTime dateModified, IEnumerable<IImageEnhancer> imageEnhancers, BaseItem item, ImageType imageType) { if (item == null) { @@ -574,7 +574,7 @@ namespace MediaBrowser.Controller.Drawing /// <param name="imageType">Type of the image.</param> /// <param name="imageIndex">Index of the image.</param> /// <returns>Task{EnhancedImage}.</returns> - private async Task<Image> ExecuteImageEnhancers(IEnumerable<BaseImageEnhancer> imageEnhancers, Image originalImage, BaseItem item, ImageType imageType, int imageIndex) + private async Task<Image> ExecuteImageEnhancers(IEnumerable<IImageEnhancer> imageEnhancers, Image originalImage, BaseItem item, ImageType imageType, int imageIndex) { var result = originalImage; diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs index ea868ec45..25a049435 100644 --- a/MediaBrowser.Controller/Kernel.cs +++ b/MediaBrowser.Controller/Kernel.cs @@ -217,8 +217,7 @@ namespace MediaBrowser.Controller /// Image processors are specialized metadata providers that run after the normal ones /// </summary> /// <value>The image enhancers.</value> - [ImportMany(typeof(BaseImageEnhancer))] - public BaseImageEnhancer[] ImageEnhancers { get; private set; } + public IEnumerable<IImageEnhancer> ImageEnhancers { get; private set; } /// <summary> /// Gets the list of currently registered entity resolvers @@ -387,6 +386,7 @@ namespace MediaBrowser.Controller WeatherProviders = GetExports<IWeatherProvider>(allTypes); IntroProviders = GetExports<IIntroProvider>(allTypes); PluginConfigurationPages = GetExports<IPluginConfigurationPage>(allTypes); + ImageEnhancers = GetExports<IImageEnhancer>(allTypes); } /// <summary> diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index b1a1dc567..26107b9c9 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -138,7 +138,7 @@ <Compile Include="Plugins\IPluginConfigurationPage.cs" /> <Compile Include="Plugins\PluginSecurityManager.cs" /> <Compile Include="Providers\FanartBaseProvider.cs" /> - <Compile Include="Providers\BaseImageEnhancer.cs" /> + <Compile Include="Providers\IImageEnhancer.cs" /> <Compile Include="Providers\ImagesByNameProvider.cs" /> <Compile Include="Providers\MediaInfo\BaseFFMpegImageProvider.cs" /> <Compile Include="Providers\MediaInfo\BaseFFMpegProvider.cs" /> diff --git a/MediaBrowser.Controller/Providers/BaseImageEnhancer.cs b/MediaBrowser.Controller/Providers/BaseImageEnhancer.cs deleted file mode 100644 index aeceeaf5f..000000000 --- a/MediaBrowser.Controller/Providers/BaseImageEnhancer.cs +++ /dev/null @@ -1,99 +0,0 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Model.Drawing; -using MediaBrowser.Model.Entities; -using System; -using System.Drawing; -using System.Threading.Tasks; - -namespace MediaBrowser.Controller.Providers -{ - /// <summary> - /// Class BaseImageEnhancer - /// </summary> - public abstract class BaseImageEnhancer : IDisposable - { - /// <summary> - /// Return true only if the given image for the given item will be enhanced by this enhancer. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="imageType">Type of the image.</param> - /// <returns><c>true</c> if this enhancer will enhance the supplied image for the supplied item, <c>false</c> otherwise</returns> - public abstract bool Supports(BaseItem item, ImageType imageType); - - /// <summary> - /// Gets the priority or order in which this enhancer should be run. - /// </summary> - /// <value>The priority.</value> - public abstract MetadataProviderPriority Priority { get; } - - /// <summary> - /// Return the date of the last configuration change affecting the provided baseitem and image type - /// </summary> - /// <param name="item">The item.</param> - /// <param name="imageType">Type of the image.</param> - /// <returns>Date of last config change</returns> - public virtual DateTime LastConfigurationChange(BaseItem item, ImageType imageType) - { - return DateTime.MinValue; - } - - /// <summary> - /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - /// </summary> - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - /// <summary> - /// Releases unmanaged and - optionally - managed resources. - /// </summary> - /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> - protected virtual void Dispose(bool dispose) - { - } - - /// <summary> - /// Gets the size of the enhanced image. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="imageType">Type of the image.</param> - /// <param name="imageIndex">Index of the image.</param> - /// <param name="originalImageSize">Size of the original image.</param> - /// <returns>ImageSize.</returns> - public virtual ImageSize GetEnhancedImageSize(BaseItem item, ImageType imageType, int imageIndex, ImageSize originalImageSize) - { - return originalImageSize; - } - - /// <summary> - /// Enhances the supplied image and returns it - /// </summary> - /// <param name="item">The item.</param> - /// <param name="originalImage">The original image.</param> - /// <param name="imageType">Type of the image.</param> - /// <param name="imageIndex">Index of the image.</param> - /// <returns>Task{System.Drawing.Image}.</returns> - protected abstract Task<Image> EnhanceImageAsyncInternal(BaseItem item, Image originalImage, ImageType imageType, int imageIndex); - - /// <summary> - /// Enhances the image async. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="originalImage">The original image.</param> - /// <param name="imageType">Type of the image.</param> - /// <param name="imageIndex">Index of the image.</param> - /// <returns>Task{Image}.</returns> - /// <exception cref="System.ArgumentNullException"></exception> - public Task<Image> EnhanceImageAsync(BaseItem item, Image originalImage, ImageType imageType, int imageIndex) - { - if (item == null || originalImage == null) - { - throw new ArgumentNullException(); - } - - return EnhanceImageAsyncInternal(item, originalImage, imageType, imageIndex); - } - } -} diff --git a/MediaBrowser.Controller/Providers/IImageEnhancer.cs b/MediaBrowser.Controller/Providers/IImageEnhancer.cs new file mode 100644 index 000000000..24296b664 --- /dev/null +++ b/MediaBrowser.Controller/Providers/IImageEnhancer.cs @@ -0,0 +1,55 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Model.Drawing; +using MediaBrowser.Model.Entities; +using System; +using System.Drawing; +using System.Threading.Tasks; + +namespace MediaBrowser.Controller.Providers +{ + public interface IImageEnhancer + { + /// <summary> + /// Return true only if the given image for the given item will be enhanced by this enhancer. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="imageType">Type of the image.</param> + /// <returns><c>true</c> if this enhancer will enhance the supplied image for the supplied item, <c>false</c> otherwise</returns> + bool Supports(BaseItem item, ImageType imageType); + + /// <summary> + /// Gets the priority or order in which this enhancer should be run. + /// </summary> + /// <value>The priority.</value> + MetadataProviderPriority Priority { get; } + + /// <summary> + /// Return the date of the last configuration change affecting the provided baseitem and image type + /// </summary> + /// <param name="item">The item.</param> + /// <param name="imageType">Type of the image.</param> + /// <returns>Date of last config change</returns> + DateTime LastConfigurationChange(BaseItem item, ImageType imageType); + + /// <summary> + /// Gets the size of the enhanced image. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="imageType">Type of the image.</param> + /// <param name="imageIndex">Index of the image.</param> + /// <param name="originalImageSize">Size of the original image.</param> + /// <returns>ImageSize.</returns> + ImageSize GetEnhancedImageSize(BaseItem item, ImageType imageType, int imageIndex, ImageSize originalImageSize); + + /// <summary> + /// Enhances the image async. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="originalImage">The original image.</param> + /// <param name="imageType">Type of the image.</param> + /// <param name="imageIndex">Index of the image.</param> + /// <returns>Task{Image}.</returns> + /// <exception cref="System.ArgumentNullException"></exception> + Task<Image> EnhanceImageAsync(BaseItem item, Image originalImage, ImageType imageType, int imageIndex); + } +}
\ No newline at end of file |
