Procházet zdrojové kódy

a little more kernel consolidation

Luke Pulverenti před 12 roky
rodič
revize
08d9004d8f

+ 1 - 1
MediaBrowser.Api/Images/ImageService.cs

@@ -658,7 +658,7 @@ namespace MediaBrowser.Api.Images
             // See if we can avoid a file system lookup by looking for the file in ResolveArgs
             var originalFileImageDateModified = kernel.ImageManager.GetImageDateModified(item, request.Type, index);
 
-            var supportedImageEnhancers = kernel.ImageEnhancers.Where(i =>
+            var supportedImageEnhancers = kernel.ImageManager.ImageEnhancers.Where(i =>
             {
                 try
                 {

+ 9 - 2
MediaBrowser.Controller/Drawing/ImageManager.cs

@@ -25,6 +25,13 @@ namespace MediaBrowser.Controller.Drawing
     /// </summary>
     public class ImageManager
     {
+        /// <summary>
+        /// Gets the list of currently registered image processors
+        /// Image processors are specialized metadata providers that run after the normal ones
+        /// </summary>
+        /// <value>The image enhancers.</value>
+        public IEnumerable<IImageEnhancer> ImageEnhancers { get; set; }
+        
         /// <summary>
         /// Gets the image size cache.
         /// </summary>
@@ -120,7 +127,7 @@ namespace MediaBrowser.Controller.Drawing
                 originalImagePath = await GetCroppedImage(originalImagePath, dateModified).ConfigureAwait(false);
             }
 
-            var supportedEnhancers = _kernel.ImageEnhancers.Where(i =>
+            var supportedEnhancers = ImageEnhancers.Where(i =>
             {
                 try
                 {
@@ -621,7 +628,7 @@ namespace MediaBrowser.Controller.Drawing
 
             var dateModified = GetImageDateModified(item, imagePath);
 
-            var supportedEnhancers = _kernel.ImageEnhancers.Where(i =>
+            var supportedEnhancers = ImageEnhancers.Where(i =>
             {
                 try
                 {

+ 1 - 1
MediaBrowser.Controller/Dto/DtoBuilder.cs

@@ -182,7 +182,7 @@ namespace MediaBrowser.Controller.Dto
                 return;
             }
 
-            var supportedEnhancers = Kernel.Instance.ImageEnhancers.Where(i =>
+            var supportedEnhancers = Kernel.Instance.ImageManager.ImageEnhancers.Where(i =>
             {
                 try
                 {

+ 12 - 0
MediaBrowser.Controller/IServerApplicationHost.cs

@@ -13,5 +13,17 @@ namespace MediaBrowser.Controller
         /// </summary>
         /// <returns>SystemInfo.</returns>
         SystemInfo GetSystemInfo();
+
+        /// <summary>
+        /// Gets the name of the web application.
+        /// </summary>
+        /// <value>The name of the web application.</value>
+        string WebApplicationName { get; }
+
+        /// <summary>
+        /// Gets the HTTP server URL prefix.
+        /// </summary>
+        /// <value>The HTTP server URL prefix.</value>
+        string HttpServerUrlPrefix { get; }
     }
 }

+ 2 - 45
MediaBrowser.Controller/Kernel.cs

@@ -1,8 +1,5 @@
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Drawing;
-using MediaBrowser.Controller.Localization;
+using MediaBrowser.Controller.Drawing;
 using MediaBrowser.Controller.MediaInfo;
-using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Weather;
 using System.Collections.Generic;
 
@@ -31,58 +28,18 @@ namespace MediaBrowser.Controller
         /// <value>The FFMPEG controller.</value>
         public FFMpegManager FFMpegManager { get; set; }
 
-        /// <summary>
-        /// Gets the name of the web application that can be used for url building.
-        /// All api urls will be of the form {protocol}://{host}:{port}/{appname}/...
-        /// </summary>
-        /// <value>The name of the web application.</value>
-        public string WebApplicationName
-        {
-            get { return "mediabrowser"; }
-        }
-
-        /// <summary>
-        /// Gets the HTTP server URL prefix.
-        /// </summary>
-        /// <value>The HTTP server URL prefix.</value>
-        public virtual string HttpServerUrlPrefix
-        {
-            get
-            {
-                return "http://+:" + _configurationManager.Configuration.HttpServerPortNumber + "/" + WebApplicationName + "/";
-            }
-        }
-
-        /// <summary>
-        /// Gets the list of Localized string files
-        /// </summary>
-        /// <value>The string files.</value>
-        public IEnumerable<LocalizedStringData> StringFiles { get; set; }
-
         /// <summary>
         /// Gets the list of currently registered weather prvoiders
         /// </summary>
         /// <value>The weather providers.</value>
         public IEnumerable<IWeatherProvider> WeatherProviders { get; set; }
 
-        /// <summary>
-        /// Gets the list of currently registered image processors
-        /// Image processors are specialized metadata providers that run after the normal ones
-        /// </summary>
-        /// <value>The image enhancers.</value>
-        public IEnumerable<IImageEnhancer> ImageEnhancers { get; set; }
-
-        private readonly IServerConfigurationManager _configurationManager;
-
         /// <summary>
         /// Creates a kernel based on a Data path, which is akin to our current programdata path
         /// </summary>
-        /// <param name="configurationManager">The configuration manager.</param>
-        public Kernel(IServerConfigurationManager configurationManager)
+        public Kernel()
         {
             Instance = this;
-
-            _configurationManager = configurationManager;
         }
     }
 }

+ 9 - 2
MediaBrowser.Controller/Localization/LocalizedStrings.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Concurrent;
+using System.Collections.Generic;
 using System.Globalization;
 using System.IO;
 using System.Linq;
@@ -13,7 +14,13 @@ namespace MediaBrowser.Controller.Localization
     public class LocalizedStrings
     {
         public static IServerApplicationPaths ApplicationPaths;
-        
+
+        /// <summary>
+        /// Gets the list of Localized string files
+        /// </summary>
+        /// <value>The string files.</value>
+        public static IEnumerable<LocalizedStringData> StringFiles { get; set; }
+
         /// <summary>
         /// The base prefix
         /// </summary>
@@ -42,7 +49,7 @@ namespace MediaBrowser.Controller.Localization
         {
             _appPaths = appPaths;
 
-            foreach (var stringObject in Kernel.Instance.StringFiles)
+            foreach (var stringObject in StringFiles)
             {
                 AddStringData(LoadFromFile(GetFileName(stringObject),stringObject.GetType()));
             }

+ 4 - 11
MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs

@@ -59,7 +59,7 @@ namespace MediaBrowser.Server.Implementations.ServerManager
         /// <summary>
         /// The _application host
         /// </summary>
-        private readonly IApplicationHost _applicationHost;
+        private readonly IServerApplicationHost _applicationHost;
 
         /// <summary>
         /// Gets or sets the configuration manager.
@@ -91,11 +91,6 @@ namespace MediaBrowser.Server.Implementations.ServerManager
         /// <value>The web socket listeners.</value>
         private readonly List<IWebSocketListener> _webSocketListeners = new List<IWebSocketListener>();
 
-        /// <summary>
-        /// The _kernel
-        /// </summary>
-        private readonly Kernel _kernel;
-
         /// <summary>
         /// Initializes a new instance of the <see cref="ServerManager" /> class.
         /// </summary>
@@ -103,9 +98,8 @@ namespace MediaBrowser.Server.Implementations.ServerManager
         /// <param name="jsonSerializer">The json serializer.</param>
         /// <param name="logger">The logger.</param>
         /// <param name="configurationManager">The configuration manager.</param>
-        /// <param name="kernel">The kernel.</param>
         /// <exception cref="System.ArgumentNullException">applicationHost</exception>
-        public ServerManager(IApplicationHost applicationHost, IJsonSerializer jsonSerializer, ILogger logger, IServerConfigurationManager configurationManager, Kernel kernel)
+        public ServerManager(IServerApplicationHost applicationHost, IJsonSerializer jsonSerializer, ILogger logger, IServerConfigurationManager configurationManager)
         {
             if (applicationHost == null)
             {
@@ -124,7 +118,6 @@ namespace MediaBrowser.Server.Implementations.ServerManager
             _jsonSerializer = jsonSerializer;
             _applicationHost = applicationHost;
             ConfigurationManager = configurationManager;
-            _kernel = kernel;
 
             ConfigurationManager.ConfigurationUpdated += ConfigurationUpdated;
         }
@@ -161,7 +154,7 @@ namespace MediaBrowser.Server.Implementations.ServerManager
         private void ReloadHttpServer()
         {
             // Only reload if the port has changed, so that we don't disconnect any active users
-            if (HttpServer != null && HttpServer.UrlPrefix.Equals(_kernel.HttpServerUrlPrefix, StringComparison.OrdinalIgnoreCase))
+            if (HttpServer != null && HttpServer.UrlPrefix.Equals(_applicationHost.HttpServerUrlPrefix, StringComparison.OrdinalIgnoreCase))
             {
                 return;
             }
@@ -174,7 +167,7 @@ namespace MediaBrowser.Server.Implementations.ServerManager
             {
                 HttpServer = _applicationHost.Resolve<IHttpServer>();
                 HttpServer.EnableHttpRequestLogging = ConfigurationManager.Configuration.EnableHttpLevelLogging;
-                HttpServer.Start(_kernel.HttpServerUrlPrefix);
+                HttpServer.Start(_applicationHost.HttpServerUrlPrefix);
             }
             catch (HttpListenerException ex)
             {

+ 3 - 3
MediaBrowser.Server.Implementations/Sqlite/SQLiteRepository.cs

@@ -49,7 +49,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite
         /// <param name="dbPath">The db path.</param>
         /// <returns>Task{System.Boolean}.</returns>
         /// <exception cref="System.ArgumentNullException">dbPath</exception>
-        protected async Task ConnectToDb(string dbPath)
+        protected Task ConnectToDb(string dbPath)
         {
             if (string.IsNullOrEmpty(dbPath))
             {
@@ -68,7 +68,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite
 
             Connection = new SQLiteConnection(connectionstr.ConnectionString);
 
-            await Connection.OpenAsync().ConfigureAwait(false);
+            return Connection.OpenAsync();
         }
 
         /// <summary>
@@ -164,7 +164,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite
             {
                 throw new ArgumentNullException("reader");
             }
-            
+
             var memoryStream = new MemoryStream();
             var num = 0L;
             var array = new byte[4096];

+ 5 - 2
MediaBrowser.ServerApplication/App.xaml.cs

@@ -226,10 +226,13 @@ namespace MediaBrowser.ServerApplication
         /// Opens the dashboard page.
         /// </summary>
         /// <param name="page">The page.</param>
-        public static void OpenDashboardPage(string page, User loggedInUser, IServerConfigurationManager configurationManager)
+        /// <param name="loggedInUser">The logged in user.</param>
+        /// <param name="configurationManager">The configuration manager.</param>
+        /// <param name="appHost">The app host.</param>
+        public static void OpenDashboardPage(string page, User loggedInUser, IServerConfigurationManager configurationManager, IServerApplicationHost appHost)
         {
             var url = "http://localhost:" + configurationManager.Configuration.HttpServerPortNumber + "/" +
-                      Kernel.Instance.WebApplicationName + "/dashboard/" + page;
+                      appHost.WebApplicationName + "/dashboard/" + page;
 
             OpenUrl(url);
         }

+ 42 - 25
MediaBrowser.ServerApplication/ApplicationHost.cs

@@ -40,7 +40,6 @@ using MediaBrowser.Server.Implementations.Providers;
 using MediaBrowser.Server.Implementations.ServerManager;
 using MediaBrowser.Server.Implementations.Session;
 using MediaBrowser.Server.Implementations.Sqlite;
-using MediaBrowser.Server.Implementations.Udp;
 using MediaBrowser.Server.Implementations.Updates;
 using MediaBrowser.Server.Implementations.WebSocket;
 using MediaBrowser.ServerApplication.Implementations;
@@ -50,7 +49,6 @@ using System.Collections.Generic;
 using System.Diagnostics;
 using System.IO;
 using System.Linq;
-using System.Net.Sockets;
 using System.Reflection;
 using System.Threading;
 using System.Threading.Tasks;
@@ -88,6 +86,28 @@ namespace MediaBrowser.ServerApplication
             get { return "Server"; }
         }
 
+        /// <summary>
+        /// Gets the name of the web application that can be used for url building.
+        /// All api urls will be of the form {protocol}://{host}:{port}/{appname}/...
+        /// </summary>
+        /// <value>The name of the web application.</value>
+        public string WebApplicationName
+        {
+            get { return "mediabrowser"; }
+        }
+
+        /// <summary>
+        /// Gets the HTTP server URL prefix.
+        /// </summary>
+        /// <value>The HTTP server URL prefix.</value>
+        public string HttpServerUrlPrefix
+        {
+            get
+            {
+                return "http://+:" + ServerConfigurationManager.Configuration.HttpServerPortNumber + "/" + WebApplicationName + "/";
+            }
+        }
+        
         /// <summary>
         /// Gets the configuration manager.
         /// </summary>
@@ -200,7 +220,7 @@ namespace MediaBrowser.ServerApplication
         /// <returns>Task.</returns>
         protected override async Task RegisterResources()
         {
-            ServerKernel = new Kernel(ServerConfigurationManager);
+            ServerKernel = new Kernel();
 
             await base.RegisterResources().ConfigureAwait(false);
 
@@ -261,7 +281,7 @@ namespace MediaBrowser.ServerApplication
             HttpServer = await _httpServerCreationTask.ConfigureAwait(false);
             RegisterSingleInstance(HttpServer, false);
 
-            ServerManager = new ServerManager(this, JsonSerializer, Logger, ServerConfigurationManager, ServerKernel);
+            ServerManager = new ServerManager(this, JsonSerializer, Logger, ServerConfigurationManager);
             RegisterSingleInstance(ServerManager);
 
             var displayPreferencesTask = Task.Run(async () => await ConfigureDisplayPreferencesRepositories().ConfigureAwait(false));
@@ -279,14 +299,15 @@ namespace MediaBrowser.ServerApplication
         /// </summary>
         private void SetKernelProperties()
         {
+            ServerKernel.ImageManager = new ImageManager(ServerKernel, LogManager.GetLogger("ImageManager"),
+                                                         ApplicationPaths);
             Parallel.Invoke(
-                () => ServerKernel.FFMpegManager = new FFMpegManager(ApplicationPaths, MediaEncoder, LibraryManager, Logger),
-                () => ServerKernel.ImageManager = new ImageManager(ServerKernel, LogManager.GetLogger("ImageManager"), ApplicationPaths),
-                () => ServerKernel.WeatherProviders = GetExports<IWeatherProvider>(),
-                () => ServerKernel.ImageEnhancers = GetExports<IImageEnhancer>().OrderBy(e => e.Priority).ToArray(),
-                () => ServerKernel.StringFiles = GetExports<LocalizedStringData>(),
-                SetStaticProperties
-                );
+                 () => ServerKernel.FFMpegManager = new FFMpegManager(ApplicationPaths, MediaEncoder, LibraryManager, Logger),
+                 () => ServerKernel.WeatherProviders = GetExports<IWeatherProvider>(),
+                 () => ServerKernel.ImageManager.ImageEnhancers = GetExports<IImageEnhancer>().OrderBy(e => e.Priority).ToArray(),
+                 () => LocalizedStrings.StringFiles = GetExports<LocalizedStringData>(),
+                 SetStaticProperties
+                 );
         }
 
         /// <summary>
@@ -364,20 +385,16 @@ namespace MediaBrowser.ServerApplication
             ServerManager.AddWebSocketListeners(GetExports<IWebSocketListener>(false));
 
             StartServer(true);
-            
-            Parallel.Invoke(
-
-                () => LibraryManager.AddParts(GetExports<IResolverIgnoreRule>(), 
-                    GetExports<IVirtualFolderCreator>(), 
-                    GetExports<IItemResolver>(), 
-                    GetExports<IIntroProvider>(),
-                    GetExports<IBaseItemComparer>(),
-                    GetExports<ILibraryPrescanTask>(),
-                    GetExports<ILibraryPostScanTask>()),
 
-                () => ProviderManager.AddMetadataProviders(GetExports<BaseMetadataProvider>().ToArray())
+            LibraryManager.AddParts(GetExports<IResolverIgnoreRule>(),
+                                    GetExports<IVirtualFolderCreator>(),
+                                    GetExports<IItemResolver>(),
+                                    GetExports<IIntroProvider>(),
+                                    GetExports<IBaseItemComparer>(),
+                                    GetExports<ILibraryPrescanTask>(),
+                                    GetExports<ILibraryPostScanTask>());
 
-                );
+            ProviderManager.AddMetadataProviders(GetExports<BaseMetadataProvider>().ToArray());
         }
 
         /// <summary>
@@ -414,7 +431,7 @@ namespace MediaBrowser.ServerApplication
         {
             base.OnConfigurationUpdated(sender, e);
 
-            if (!string.Equals(HttpServer.UrlPrefix, ServerKernel.HttpServerUrlPrefix, StringComparison.OrdinalIgnoreCase))
+            if (!string.Equals(HttpServer.UrlPrefix, HttpServerUrlPrefix, StringComparison.OrdinalIgnoreCase))
             {
                 NotifyPendingRestart();
             }
@@ -553,7 +570,7 @@ namespace MediaBrowser.ServerApplication
                 FileName = tmpFile,
 
                 Arguments = string.Format("{0} {1} {2} {3}", ServerConfigurationManager.Configuration.HttpServerPortNumber,
-                ServerKernel.HttpServerUrlPrefix,
+                HttpServerUrlPrefix,
                 UdpServerPort,
                 ServerConfigurationManager.Configuration.LegacyWebSocketPortNumber),
 

+ 4 - 4
MediaBrowser.ServerApplication/EntryPoints/StartupWizard.cs

@@ -1,4 +1,4 @@
-using MediaBrowser.Common;
+using MediaBrowser.Controller;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Plugins;
@@ -17,7 +17,7 @@ namespace MediaBrowser.ServerApplication.EntryPoints
         /// <summary>
         /// The _app host
         /// </summary>
-        private readonly IApplicationHost _appHost;
+        private readonly IServerApplicationHost _appHost;
         /// <summary>
         /// The _user manager
         /// </summary>
@@ -31,7 +31,7 @@ namespace MediaBrowser.ServerApplication.EntryPoints
         /// </summary>
         /// <param name="appHost">The app host.</param>
         /// <param name="userManager">The user manager.</param>
-        public StartupWizard(IApplicationHost appHost, IUserManager userManager, IServerConfigurationManager configurationManager)
+        public StartupWizard(IServerApplicationHost appHost, IUserManager userManager, IServerConfigurationManager configurationManager)
         {
             _appHost = appHost;
             _userManager = userManager;
@@ -58,7 +58,7 @@ namespace MediaBrowser.ServerApplication.EntryPoints
 
             try
             {
-                App.OpenDashboardPage("wizardStart.html", user, _configurationManager);
+                App.OpenDashboardPage("wizardStart.html", user, _configurationManager, _appHost);
             }
             catch (Win32Exception ex)
             {

+ 6 - 6
MediaBrowser.ServerApplication/MainWindow.xaml.cs

@@ -29,7 +29,7 @@ namespace MediaBrowser.ServerApplication
         /// <summary>
         /// The _app host
         /// </summary>
-        private readonly IApplicationHost _appHost;
+        private readonly IServerApplicationHost _appHost;
 
         /// <summary>
         /// The _log manager
@@ -57,7 +57,7 @@ namespace MediaBrowser.ServerApplication
         /// <param name="jsonSerializer">The json serializer.</param>
         /// <param name="displayPreferencesManager">The display preferences manager.</param>
         /// <exception cref="System.ArgumentNullException">logger</exception>
-        public MainWindow(ILogManager logManager, IApplicationHost appHost, IServerConfigurationManager configurationManager, IUserManager userManager, ILibraryManager libraryManager, IJsonSerializer jsonSerializer, IDisplayPreferencesManager displayPreferencesManager)
+        public MainWindow(ILogManager logManager, IServerApplicationHost appHost, IServerConfigurationManager configurationManager, IUserManager userManager, ILibraryManager libraryManager, IJsonSerializer jsonSerializer, IDisplayPreferencesManager displayPreferencesManager)
         {
             if (logManager == null)
             {
@@ -189,13 +189,13 @@ namespace MediaBrowser.ServerApplication
         void cmdApiDocs_Click(object sender, EventArgs e)
         {
             App.OpenUrl("http://localhost:" + _configurationManager.Configuration.HttpServerPortNumber + "/" +
-                      Kernel.Instance.WebApplicationName + "/metadata");
+                      _appHost.WebApplicationName + "/metadata");
         }
 
         void cmdSwaggerApiDocs_Click(object sender, EventArgs e)
         {
             App.OpenUrl("http://localhost:" + _configurationManager.Configuration.HttpServerPortNumber + "/" +
-                      Kernel.Instance.WebApplicationName + "/swagger-ui/index.html");
+                      _appHost.WebApplicationName + "/swagger-ui/index.html");
         }
 
         void cmdGithubWiki_Click(object sender, EventArgs e)
@@ -254,7 +254,7 @@ namespace MediaBrowser.ServerApplication
         /// </summary>
         private void OpenDashboard(User loggedInUser)
         {
-            App.OpenDashboardPage("dashboard.html", loggedInUser, _configurationManager);
+            App.OpenDashboardPage("dashboard.html", loggedInUser, _configurationManager, _appHost);
         }
         
         /// <summary>
@@ -275,7 +275,7 @@ namespace MediaBrowser.ServerApplication
         private void cmdBrowseLibrary_click(object sender, RoutedEventArgs e)
         {
             var user = _userManager.Users.FirstOrDefault(u => u.Configuration.IsAdministrator);
-            App.OpenDashboardPage("index.html", user, _configurationManager);
+            App.OpenDashboardPage("index.html", user, _configurationManager, _appHost);
         }
 
         /// <summary>