From 9911df11e8a96d5d7fffcd8618b63a6adb27701f Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Fri, 8 Mar 2013 00:08:27 -0500 Subject: extracted provider manager. took more off the kernel --- MediaBrowser.Controller/Kernel.cs | 174 +++++--------------------------------- 1 file changed, 21 insertions(+), 153 deletions(-) (limited to 'MediaBrowser.Controller/Kernel.cs') diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs index 40c59c8cf..d43c505a5 100644 --- a/MediaBrowser.Controller/Kernel.cs +++ b/MediaBrowser.Controller/Kernel.cs @@ -1,22 +1,13 @@ -using MediaBrowser.Common; -using MediaBrowser.Common.ScheduledTasks; -using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Drawing; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.IO; -using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Localization; using MediaBrowser.Controller.MediaInfo; using MediaBrowser.Controller.Persistence; -using MediaBrowser.Controller.Plugins; using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Weather; -using MediaBrowser.Model.Logging; -using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; using System.Linq; -using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Controller @@ -24,7 +15,7 @@ namespace MediaBrowser.Controller /// /// Class Kernel /// - public class Kernel : IDisposable + public class Kernel { /// /// Gets the instance. @@ -36,25 +27,13 @@ namespace MediaBrowser.Controller /// Gets the image manager. /// /// The image manager. - public ImageManager ImageManager { get; private set; } + public ImageManager ImageManager { get; set; } /// /// Gets the FFMPEG controller. /// /// The FFMPEG controller. - public FFMpegManager FFMpegManager { get; private set; } - - /// - /// Gets or sets the file system manager. - /// - /// The file system manager. - public FileSystemManager FileSystemManager { get; private set; } - - /// - /// Gets the provider manager. - /// - /// The provider manager. - public ProviderManager ProviderManager { get; private set; } + public FFMpegManager FFMpegManager { get; set; } /// /// Gets the name of the web application that can be used for url building. @@ -82,74 +61,68 @@ namespace MediaBrowser.Controller /// Gets the list of Localized string files /// /// The string files. - public IEnumerable StringFiles { get; private set; } + public IEnumerable StringFiles { get; set; } /// /// Gets the list of currently registered weather prvoiders /// /// The weather providers. - public IEnumerable WeatherProviders { get; private set; } - - /// - /// Gets the list of currently registered metadata prvoiders - /// - /// The metadata providers enumerable. - public BaseMetadataProvider[] MetadataProviders { get; private set; } + public IEnumerable WeatherProviders { get; set; } /// /// Gets the list of currently registered image processors /// Image processors are specialized metadata providers that run after the normal ones /// /// The image enhancers. - public IEnumerable ImageEnhancers { get; private set; } + public IEnumerable ImageEnhancers { get; set; } /// /// Gets the list of available user repositories /// /// The user repositories. - private IEnumerable UserRepositories { get; set; } + public IEnumerable UserRepositories { get; set; } /// /// Gets the active user repository /// /// The user repository. - public IUserRepository UserRepository { get; private set; } + public IUserRepository UserRepository { get; set; } /// /// Gets the active user repository /// /// The display preferences repository. - public IDisplayPreferencesRepository DisplayPreferencesRepository { get; private set; } + public IDisplayPreferencesRepository DisplayPreferencesRepository { get; set; } /// /// Gets the list of available item repositories /// /// The item repositories. - private IEnumerable ItemRepositories { get; set; } + public IEnumerable ItemRepositories { get; set; } /// /// Gets the active item repository /// /// The item repository. - public IItemRepository ItemRepository { get; private set; } + public IItemRepository ItemRepository { get; set; } /// /// Gets the list of available DisplayPreferencesRepositories /// /// The display preferences repositories. - private IEnumerable DisplayPreferencesRepositories { get; set; } + public IEnumerable DisplayPreferencesRepositories { get; set; } /// /// Gets the list of available item repositories /// /// The user data repositories. - private IEnumerable UserDataRepositories { get; set; } + public IEnumerable UserDataRepositories { get; set; } /// /// Gets the active user data repository /// /// The user data repository. - public IUserDataRepository UserDataRepository { get; private set; } + public IUserDataRepository UserDataRepository { get; set; } /// /// Gets the UDP server port number. @@ -160,121 +133,39 @@ namespace MediaBrowser.Controller get { return 7359; } } - private readonly IXmlSerializer _xmlSerializer; - private readonly IServerConfigurationManager _configurationManager; - private readonly ILogManager _logManager; - private IApplicationHost ApplicationHost { get; set; } /// /// Creates a kernel based on a Data path, which is akin to our current programdata path /// - /// The app host. - /// The XML serializer. - /// The log manager. /// The configuration manager. - /// isoManager - public Kernel(IApplicationHost appHost, IXmlSerializer xmlSerializer, ILogManager logManager, IServerConfigurationManager configurationManager) + public Kernel(IServerConfigurationManager configurationManager) { Instance = this; - ApplicationHost = appHost; _configurationManager = configurationManager; - _xmlSerializer = xmlSerializer; - _logManager = logManager; - - // For now there's no real way to inject these properly - BaseItem.Logger = logManager.GetLogger("BaseItem"); - User.XmlSerializer = _xmlSerializer; - Ratings.ConfigurationManager = _configurationManager; - LocalizedStrings.ApplicationPaths = _configurationManager.ApplicationPaths; - BaseItem.ConfigurationManager = configurationManager; - } - - /// - /// Composes the parts with ioc container. - /// - protected void FindParts() - { - // For now there's no real way to inject these properly - BaseItem.LibraryManager = ApplicationHost.Resolve(); - User.UserManager = ApplicationHost.Resolve(); - - FFMpegManager = (FFMpegManager)ApplicationHost.CreateInstance(typeof(FFMpegManager)); - ImageManager = (ImageManager)ApplicationHost.CreateInstance(typeof(ImageManager)); - ProviderManager = (ProviderManager)ApplicationHost.CreateInstance(typeof(ProviderManager)); - - UserDataRepositories = ApplicationHost.GetExports(); - UserRepositories = ApplicationHost.GetExports(); - DisplayPreferencesRepositories = ApplicationHost.GetExports(); - ItemRepositories = ApplicationHost.GetExports(); - WeatherProviders = ApplicationHost.GetExports(); - ImageEnhancers = ApplicationHost.GetExports().OrderBy(e => e.Priority).ToArray(); - StringFiles = ApplicationHost.GetExports(); - MetadataProviders = ApplicationHost.GetExports().OrderBy(e => e.Priority).ToArray(); - } - - /// - /// Performs initializations that can be reloaded at anytime - /// - /// Task. - public async Task Init() - { - FindParts(); - - await LoadRepositories().ConfigureAwait(false); - - await ApplicationHost.Resolve().RefreshUsersMetadata(CancellationToken.None).ConfigureAwait(false); - - foreach (var entryPoint in ApplicationHost.GetExports()) - { - entryPoint.Run(); - } - - ReloadFileSystemManager(); - } - - /// - /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - /// - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - /// - /// Releases unmanaged and - optionally - managed resources. - /// - /// true to release both managed and unmanaged resources; false to release only unmanaged resources. - protected virtual void Dispose(bool dispose) - { - if (dispose) - { - DisposeFileSystemManager(); - } } /// /// Called when [composable parts loaded]. /// /// Task. - protected Task LoadRepositories() + public Task LoadRepositories(IServerConfigurationManager configurationManager) { // Get the current item repository - ItemRepository = GetRepository(ItemRepositories, _configurationManager.Configuration.ItemRepository); + ItemRepository = GetRepository(ItemRepositories, configurationManager.Configuration.ItemRepository); var itemRepoTask = ItemRepository.Initialize(); // Get the current user repository - UserRepository = GetRepository(UserRepositories, _configurationManager.Configuration.UserRepository); + UserRepository = GetRepository(UserRepositories, configurationManager.Configuration.UserRepository); var userRepoTask = UserRepository.Initialize(); // Get the current item repository - UserDataRepository = GetRepository(UserDataRepositories, _configurationManager.Configuration.UserDataRepository); + UserDataRepository = GetRepository(UserDataRepositories, configurationManager.Configuration.UserDataRepository); var userDataRepoTask = UserDataRepository.Initialize(); // Get the current display preferences repository - DisplayPreferencesRepository = GetRepository(DisplayPreferencesRepositories, _configurationManager.Configuration.DisplayPreferencesRepository); + DisplayPreferencesRepository = GetRepository(DisplayPreferencesRepositories, configurationManager.Configuration.DisplayPreferencesRepository); var displayPreferencesRepoTask = DisplayPreferencesRepository.Initialize(); return Task.WhenAll(itemRepoTask, userRepoTask, userDataRepoTask, displayPreferencesRepoTask); @@ -295,28 +186,5 @@ namespace MediaBrowser.Controller return enumerable.FirstOrDefault(r => string.Equals(r.Name, name, StringComparison.OrdinalIgnoreCase)) ?? enumerable.FirstOrDefault(); } - - /// - /// Disposes the file system manager. - /// - private void DisposeFileSystemManager() - { - if (FileSystemManager != null) - { - FileSystemManager.Dispose(); - FileSystemManager = null; - } - } - - /// - /// Reloads the file system manager. - /// - private void ReloadFileSystemManager() - { - DisposeFileSystemManager(); - - FileSystemManager = new FileSystemManager(_logManager, ApplicationHost.Resolve(), ApplicationHost.Resolve(), _configurationManager); - FileSystemManager.StartWatchers(); - } } } -- cgit v1.2.3