From 4f67fc4aefc11c1a4293227c70de922dbe03c652 Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Thu, 7 Mar 2013 00:34:00 -0500 Subject: removed base kernel and ikernel --- MediaBrowser.ServerApplication/App.xaml.cs | 13 ++-- MediaBrowser.ServerApplication/ApplicationHost.cs | 89 ++++++++++++++--------- MediaBrowser.ServerApplication/StartupWizard.cs | 6 +- MediaBrowser.ServerApplication/WebSocketEvents.cs | 36 ++++++--- 4 files changed, 91 insertions(+), 53 deletions(-) (limited to 'MediaBrowser.ServerApplication') diff --git a/MediaBrowser.ServerApplication/App.xaml.cs b/MediaBrowser.ServerApplication/App.xaml.cs index 470b7fc558..a3e273438d 100644 --- a/MediaBrowser.ServerApplication/App.xaml.cs +++ b/MediaBrowser.ServerApplication/App.xaml.cs @@ -1,18 +1,17 @@ -using System.IO; -using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Constants; -using MediaBrowser.Common.Kernel; -using MediaBrowser.Common.Updates; +using MediaBrowser.Common.Implementations.Updates; using MediaBrowser.Controller; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Server.Implementations; using Microsoft.Win32; using System; using System.Diagnostics; +using System.IO; using System.Net.Cache; using System.Threading; -using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Media; @@ -209,9 +208,9 @@ namespace MediaBrowser.ServerApplication /// Opens the dashboard page. /// /// The page. - public static void OpenDashboardPage(string page, User loggedInUser, IConfigurationManager configurationManager) + public static void OpenDashboardPage(string page, User loggedInUser, IServerConfigurationManager configurationManager) { - var url = "http://localhost:" + configurationManager.CommonConfiguration.HttpServerPortNumber + "/" + + var url = "http://localhost:" + configurationManager.Configuration.HttpServerPortNumber + "/" + Kernel.Instance.WebApplicationName + "/dashboard/" + page; if (loggedInUser != null) diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index d22c522e76..df3765818e 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -2,12 +2,11 @@ using MediaBrowser.Common; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Constants; +using MediaBrowser.Common.Events; using MediaBrowser.Common.Implementations; -using MediaBrowser.Common.Implementations.HttpServer; -using MediaBrowser.Common.Implementations.Logging; using MediaBrowser.Common.Implementations.ScheduledTasks; using MediaBrowser.Common.IO; -using MediaBrowser.Common.Kernel; +using MediaBrowser.Common.Net; using MediaBrowser.Common.Updates; using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; @@ -17,15 +16,18 @@ using MediaBrowser.Controller.Resolvers; using MediaBrowser.Controller.Updates; using MediaBrowser.IsoMounter; using MediaBrowser.Model.IO; -using MediaBrowser.Model.Logging; using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.System; using MediaBrowser.Model.Updates; using MediaBrowser.Server.Implementations; using MediaBrowser.Server.Implementations.BdInfo; using MediaBrowser.Server.Implementations.Configuration; +using MediaBrowser.Server.Implementations.HttpServer; using MediaBrowser.Server.Implementations.Library; +using MediaBrowser.Server.Implementations.ServerManager; +using MediaBrowser.Server.Implementations.Udp; using MediaBrowser.Server.Implementations.Updates; +using MediaBrowser.Server.Implementations.WebSocket; using MediaBrowser.ServerApplication.Implementations; using MediaBrowser.WebDashboard.Api; using System; @@ -41,16 +43,13 @@ namespace MediaBrowser.ServerApplication /// /// Class CompositionRoot /// - public class ApplicationHost : BaseApplicationHost + public class ApplicationHost : BaseApplicationHost, IServerApplicationHost { /// /// Gets the server kernel. /// /// The server kernel. - protected Kernel ServerKernel - { - get { return (Kernel)Kernel; } - } + protected Kernel ServerKernel { get; set; } /// /// Gets the server configuration manager. @@ -61,15 +60,6 @@ namespace MediaBrowser.ServerApplication get { return (IServerConfigurationManager)ConfigurationManager; } } - /// - /// Gets the kernel. - /// - /// IKernel. - protected override IKernel GetKernel() - { - return new Kernel(this, XmlSerializer, LogManager, ServerConfigurationManager); - } - /// /// Gets the name of the log file prefix. /// @@ -88,30 +78,50 @@ namespace MediaBrowser.ServerApplication return new ServerConfigurationManager(ApplicationPaths, LogManager, XmlSerializer); } + private IInstallationManager InstallationManager { get; set; } + private IServerManager ServerManager { get; set; } + + public override async Task Init() + { + await base.Init().ConfigureAwait(false); + + await ServerKernel.Init().ConfigureAwait(false); + } + /// /// Registers resources that classes will depend on /// protected override async Task RegisterResources() { + ServerKernel = new Kernel(this, XmlSerializer, LogManager, ServerConfigurationManager); + await base.RegisterResources().ConfigureAwait(false); + RegisterSingleInstance(this); RegisterSingleInstance(ApplicationPaths); - + RegisterSingleInstance(ServerKernel); RegisterSingleInstance(ServerConfigurationManager); + RegisterSingleInstance(() => new AlchemyServer(Logger)); + RegisterSingleInstance(new UdpServer(Logger), false); + RegisterSingleInstance(new PismoIsoManager(Logger)); RegisterSingleInstance(new BdInfoExaminer()); RegisterSingleInstance(new DotNetZipClient()); RegisterSingleInstance(ServerFactory.CreateServer(this, ProtobufSerializer, Logger, "Media Browser", "index.html"), false); + ServerManager = new ServerManager(this, NetworkManager, JsonSerializer, Logger, ServerConfigurationManager, ServerKernel); + RegisterSingleInstance(ServerManager); + var userManager = new UserManager(ServerKernel, Logger, ServerConfigurationManager); RegisterSingleInstance(userManager); RegisterSingleInstance(new LibraryManager(ServerKernel, Logger, TaskManager, userManager, ServerConfigurationManager)); - RegisterSingleInstance(new InstallationManager(Kernel, HttpClient, PackageManager, JsonSerializer, Logger, this)); + InstallationManager = new InstallationManager(HttpClient, PackageManager, JsonSerializer, Logger, this); + RegisterSingleInstance(InstallationManager); } /// @@ -121,6 +131,11 @@ namespace MediaBrowser.ServerApplication { base.FindParts(); + Resolve().Init(GetExports(false)); + Resolve().AddWebSocketListeners(GetExports(false)); + + Resolve().Start(); + Resolve().AddParts(GetExports(), GetExports(), GetExports(), GetExports()); } @@ -157,19 +172,6 @@ namespace MediaBrowser.ServerApplication new CheckForUpdateResult { AvailableVersion = ApplicationVersion, IsUpdateAvailable = false }; } - /// - /// Updates the application. - /// - /// The package that contains the update - /// The cancellation token. - /// The progress. - /// Task. - public override Task UpdateApplication(PackageVersionInfo package, CancellationToken cancellationToken, IProgress progress) - { - var pkgManager = Resolve(); - return pkgManager.InstallPackage(progress, package, cancellationToken); - } - /// /// Gets the composable part assemblies. /// @@ -195,7 +197,7 @@ namespace MediaBrowser.ServerApplication yield return typeof(SystemInfo).Assembly; // Include composable parts in the Common assembly - yield return typeof(IKernel).Assembly; + yield return typeof(IApplicationHost).Assembly; // Include composable parts in the Controller assembly yield return typeof(Kernel).Assembly; @@ -210,6 +212,25 @@ namespace MediaBrowser.ServerApplication yield return GetType().Assembly; } + /// + /// Gets the system status. + /// + /// SystemInfo. + public virtual SystemInfo GetSystemInfo() + { + return new SystemInfo + { + HasPendingRestart = HasPendingRestart, + Version = ApplicationVersion.ToString(), + IsNetworkDeployed = CanSelfUpdate, + WebSocketPortNumber = ServerManager.WebSocketPortNumber, + SupportsNativeWebSocket = ServerManager.SupportsNativeWebSocket, + FailedPluginAssemblies = FailedAssemblies.ToArray(), + InProgressInstallations = InstallationManager.CurrentInstallations.Select(i => i.Item1).ToArray(), + CompletedInstallations = InstallationManager.CompletedInstallations.ToArray() + }; + } + /// /// Shuts down. /// diff --git a/MediaBrowser.ServerApplication/StartupWizard.cs b/MediaBrowser.ServerApplication/StartupWizard.cs index 57a90ea814..f7946c7112 100644 --- a/MediaBrowser.ServerApplication/StartupWizard.cs +++ b/MediaBrowser.ServerApplication/StartupWizard.cs @@ -1,5 +1,5 @@ using MediaBrowser.Common; -using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Plugins; using System.Linq; @@ -20,14 +20,14 @@ namespace MediaBrowser.ServerApplication /// private readonly IUserManager _userManager; - private readonly IConfigurationManager _configurationManager; + private readonly IServerConfigurationManager _configurationManager; /// /// Initializes a new instance of the class. /// /// The app host. /// The user manager. - public StartupWizard(IApplicationHost appHost, IUserManager userManager, IConfigurationManager configurationManager) + public StartupWizard(IApplicationHost appHost, IUserManager userManager, IServerConfigurationManager configurationManager) { _appHost = appHost; _userManager = userManager; diff --git a/MediaBrowser.ServerApplication/WebSocketEvents.cs b/MediaBrowser.ServerApplication/WebSocketEvents.cs index caa4ca2abc..43972bafc2 100644 --- a/MediaBrowser.ServerApplication/WebSocketEvents.cs +++ b/MediaBrowser.ServerApplication/WebSocketEvents.cs @@ -1,11 +1,14 @@ using MediaBrowser.Common.Events; -using MediaBrowser.Common.Kernel; +using MediaBrowser.Common.Net; using MediaBrowser.Common.Plugins; +using MediaBrowser.Common.ScheduledTasks; +using MediaBrowser.Controller; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Plugins; using MediaBrowser.Controller.Updates; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Tasks; using MediaBrowser.Model.Updates; using System; @@ -43,7 +46,9 @@ namespace MediaBrowser.ServerApplication /// /// The _kernel /// - private readonly IKernel _kernel; + private readonly IServerApplicationHost _appHost; + + private readonly ITaskManager _taskManager; /// /// Initializes a new instance of the class. @@ -51,14 +56,15 @@ namespace MediaBrowser.ServerApplication /// The server manager. /// The logger. /// The user manager. - public WebSocketEvents(IServerManager serverManager, IKernel kernel, ILogger logger, IUserManager userManager, ILibraryManager libraryManager, IInstallationManager installationManager) + public WebSocketEvents(IServerManager serverManager, IServerApplicationHost appHost, ILogger logger, IUserManager userManager, ILibraryManager libraryManager, IInstallationManager installationManager, ITaskManager taskManager) { _serverManager = serverManager; _logger = logger; _userManager = userManager; _libraryManager = libraryManager; _installationManager = installationManager; - _kernel = kernel; + _appHost = appHost; + _taskManager = taskManager; } public void Run() @@ -68,13 +74,27 @@ namespace MediaBrowser.ServerApplication _libraryManager.LibraryChanged += libraryManager_LibraryChanged; - _kernel.HasPendingRestartChanged += kernel_HasPendingRestartChanged; + _appHost.HasPendingRestartChanged += kernel_HasPendingRestartChanged; _installationManager.PluginUninstalled += InstallationManager_PluginUninstalled; _installationManager.PackageInstalling += installationManager_PackageInstalling; _installationManager.PackageInstallationCancelled += installationManager_PackageInstallationCancelled; _installationManager.PackageInstallationCompleted += installationManager_PackageInstallationCompleted; _installationManager.PackageInstallationFailed += installationManager_PackageInstallationFailed; + + _taskManager.TaskExecuting += _taskManager_TaskExecuting; + _taskManager.TaskCompleted += _taskManager_TaskCompleted; + } + + void _taskManager_TaskCompleted(object sender, GenericEventArgs e) + { + _serverManager.SendWebSocketMessage("ScheduledTaskEndExecute", e.Argument); + } + + void _taskManager_TaskExecuting(object sender, EventArgs e) + { + var task = (IScheduledTask) sender; + _serverManager.SendWebSocketMessage("ScheduledTaskBeginExecute", task.Name); } /// @@ -144,9 +164,7 @@ namespace MediaBrowser.ServerApplication /// The instance containing the event data. void kernel_HasPendingRestartChanged(object sender, EventArgs e) { - var kernel = (IKernel)sender; - - _serverManager.SendWebSocketMessage("HasPendingRestartChanged", kernel.GetSystemInfo()); + _serverManager.SendWebSocketMessage("HasPendingRestartChanged", _appHost.GetSystemInfo()); } /// @@ -196,7 +214,7 @@ namespace MediaBrowser.ServerApplication _installationManager.PackageInstallationCompleted -= installationManager_PackageInstallationCompleted; _installationManager.PackageInstallationFailed -= installationManager_PackageInstallationFailed; - _kernel.HasPendingRestartChanged -= kernel_HasPendingRestartChanged; + _appHost.HasPendingRestartChanged -= kernel_HasPendingRestartChanged; } } } -- cgit v1.2.3