From ca7ee684730fe0d99a6160659c679c36a1646c88 Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Wed, 27 Feb 2013 11:46:48 -0500 Subject: [PATCH] fixed the plugin catalog not loading --- .../BaseApplicationHost.cs | 40 ++++++++++++++++++- .../ServerManager/ServerManager.cs | 17 +++++++- MediaBrowser.Common/Kernel/BaseKernel.cs | 30 -------------- MediaBrowser.Common/Kernel/IKernel.cs | 6 --- MediaBrowser.Common/Kernel/IServerManager.cs | 7 ++++ .../Sqlite/SQLiteRepository.cs | 2 +- .../ApplicationHost.cs | 34 +++------------- .../MainWindow.xaml.cs | 14 ------- .../Api/DashboardService.cs | 6 +-- Nuget/MediaBrowser.ApiClient.nuspec | 2 +- Nuget/MediaBrowser.Common.Internal.nuspec | 4 +- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 +- 13 files changed, 78 insertions(+), 90 deletions(-) diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs index e8acf2975b..65d1703826 100644 --- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs +++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs @@ -1,5 +1,13 @@ -using MediaBrowser.Common.Kernel; +using MediaBrowser.Common.IO; +using MediaBrowser.Common.Implementations.HttpServer; +using MediaBrowser.Common.Implementations.Udp; +using MediaBrowser.Common.Implementations.WebSocket; +using MediaBrowser.Common.Kernel; +using MediaBrowser.Common.Net; +using MediaBrowser.Common.ScheduledTasks; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.Serialization; using SimpleInjector; using System; @@ -130,6 +138,18 @@ namespace MediaBrowser.Common.Implementations /// /// IApplicationPaths. protected abstract IApplicationPaths GetApplicationPaths(); + + /// + /// Finds the parts. + /// + protected virtual void FindParts() + { + Resolve().AddTasks(GetExports(false)); + + Resolve().Init(GetExports(false)); + + Resolve().AddWebSocketListeners(GetExports()); + } /// /// Discovers the types. @@ -143,6 +163,24 @@ namespace MediaBrowser.Common.Implementations AllConcreteTypes = AllTypes.Where(t => t.IsClass && !t.IsAbstract && !t.IsInterface && !t.IsGenericType).ToArray(); } + /// + /// Registers resources that classes will depend on + /// + protected virtual void RegisterResources(ITaskManager taskManager, INetworkManager networkManager, IServerManager serverManager) + { + RegisterSingleInstance(LogManager); + RegisterSingleInstance(Logger); + + RegisterSingleInstance(ApplicationPaths); + RegisterSingleInstance(taskManager); + RegisterSingleInstance(() => new AlchemyServer(Logger)); + RegisterSingleInstance(ProtobufSerializer); + RegisterSingleInstance(new UdpServer(Logger), false); + + RegisterSingleInstance(networkManager); + RegisterSingleInstance(serverManager); + } + /// /// Gets a list of types within an assembly /// This will handle situations that would normally throw an exception - such as a type within the assembly that depends on some other non-existant reference diff --git a/MediaBrowser.Common.Implementations/ServerManager/ServerManager.cs b/MediaBrowser.Common.Implementations/ServerManager/ServerManager.cs index bd584bf0cb..31f6922c23 100644 --- a/MediaBrowser.Common.Implementations/ServerManager/ServerManager.cs +++ b/MediaBrowser.Common.Implementations/ServerManager/ServerManager.cs @@ -95,6 +95,12 @@ namespace MediaBrowser.Common.Implementations.ServerManager get { return SupportsNativeWebSocket ? _kernel.Configuration.HttpServerPortNumber : _kernel.Configuration.LegacyWebSocketPortNumber; } } + /// + /// Gets the web socket listeners. + /// + /// The web socket listeners. + private List WebSocketListeners = new List(); + /// /// Initializes a new instance of the class. /// @@ -234,7 +240,7 @@ namespace MediaBrowser.Common.Implementations.ServerManager /// The result. private async void ProcessWebSocketMessageReceived(WebSocketMessageInfo result) { - var tasks = _kernel.WebSocketListeners.Select(i => Task.Run(async () => + var tasks = WebSocketListeners.Select(i => Task.Run(async () => { try { @@ -514,5 +520,14 @@ namespace MediaBrowser.Common.Implementations.ServerManager ReloadExternalWebSocketServer(); } } + + /// + /// Adds the web socket listeners. + /// + /// The listeners. + public void AddWebSocketListeners(IEnumerable listeners) + { + WebSocketListeners.AddRange(listeners); + } } } diff --git a/MediaBrowser.Common/Kernel/BaseKernel.cs b/MediaBrowser.Common/Kernel/BaseKernel.cs index 44e00877e3..68983064e4 100644 --- a/MediaBrowser.Common/Kernel/BaseKernel.cs +++ b/MediaBrowser.Common/Kernel/BaseKernel.cs @@ -23,11 +23,6 @@ namespace MediaBrowser.Common.Kernel where TConfigurationType : BaseApplicationConfiguration, new() where TApplicationPathsType : IApplicationPaths { - /// - /// Occurs when [has pending restart changed]. - /// - public event EventHandler HasPendingRestartChanged; - #region ConfigurationUpdated Event /// /// Occurs when [configuration updated]. @@ -43,20 +38,6 @@ namespace MediaBrowser.Common.Kernel } #endregion - #region ReloadBeginning Event - /// - /// Fires whenever the kernel begins reloading - /// - public event EventHandler ReloadBeginning; - /// - /// Called when [reload beginning]. - /// - private void OnReloadBeginning() - { - EventHelper.QueueEventIfNotNull(ReloadBeginning, this, EventArgs.Empty, Logger); - } - #endregion - #region ReloadCompleted Event /// /// Fires whenever the kernel completes reloading @@ -141,12 +122,6 @@ namespace MediaBrowser.Common.Kernel /// The plugins. public IEnumerable Plugins { get; protected set; } - /// - /// Gets the web socket listeners. - /// - /// The web socket listeners. - public IEnumerable WebSocketListeners { get; private set; } - /// /// Gets or sets the TCP manager. /// @@ -233,8 +208,6 @@ namespace MediaBrowser.Common.Kernel /// Task. public async Task Init() { - OnReloadBeginning(); - await ReloadInternal().ConfigureAwait(false); OnReloadCompleted(); @@ -275,7 +248,6 @@ namespace MediaBrowser.Common.Kernel /// protected virtual void FindParts() { - WebSocketListeners = ApplicationHost.GetExports(); Plugins = ApplicationHost.GetExports(); } @@ -314,8 +286,6 @@ namespace MediaBrowser.Common.Kernel HasPendingRestart = true; ServerManager.SendWebSocketMessage("HasPendingRestartChanged", GetSystemInfo()); - - EventHelper.QueueEventIfNotNull(HasPendingRestartChanged, this, EventArgs.Empty, Logger); } /// diff --git a/MediaBrowser.Common/Kernel/IKernel.cs b/MediaBrowser.Common/Kernel/IKernel.cs index 4b7375ba1d..dac94cee26 100644 --- a/MediaBrowser.Common/Kernel/IKernel.cs +++ b/MediaBrowser.Common/Kernel/IKernel.cs @@ -96,12 +96,6 @@ namespace MediaBrowser.Common.Kernel /// The plug-in security manager. ISecurityManager SecurityManager { get; set; } - /// - /// Gets the web socket listeners. - /// - /// The web socket listeners. - IEnumerable WebSocketListeners { get; } - /// /// Occurs when [reload completed]. /// diff --git a/MediaBrowser.Common/Kernel/IServerManager.cs b/MediaBrowser.Common/Kernel/IServerManager.cs index cfea6eee11..a8c6a253a9 100644 --- a/MediaBrowser.Common/Kernel/IServerManager.cs +++ b/MediaBrowser.Common/Kernel/IServerManager.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; @@ -50,5 +51,11 @@ namespace MediaBrowser.Common.Kernel /// Task. /// messageType Task SendWebSocketMessageAsync(string messageType, Func dataFunction, CancellationToken cancellationToken); + + /// + /// Adds the web socket listeners. + /// + /// The listeners. + void AddWebSocketListeners(IEnumerable listeners); } } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Sqlite/SQLiteRepository.cs b/MediaBrowser.Server.Implementations/Sqlite/SQLiteRepository.cs index 83b7c0eb0f..1173f3fc80 100644 --- a/MediaBrowser.Server.Implementations/Sqlite/SQLiteRepository.cs +++ b/MediaBrowser.Server.Implementations/Sqlite/SQLiteRepository.cs @@ -156,7 +156,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite // Don't dispose in the middle of a flush while (IsFlushing) { - Thread.Sleep(50); + Thread.Sleep(25); } if (connection.IsOpen()) diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index a252d92a64..cfbf761cf8 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -72,7 +72,6 @@ namespace MediaBrowser.ServerApplication public ApplicationHost() : base() { - Logger.Info("ApplicationHost!!!!!!!!!!!!!!!!!!!!"); Kernel = new Kernel(this, ServerApplicationPaths, _xmlSerializer, Logger); var networkManager = new NetworkManager(); @@ -85,11 +84,9 @@ namespace MediaBrowser.ServerApplication Logger.Info("Version {0} initializing", ApplicationVersion); - var httpServer = ServerFactory.CreateServer(this, ProtobufSerializer, Logger, "Media Browser", "index.html"); + RegisterResources(taskManager, networkManager, serverManager); - RegisterResources(taskManager, httpServer, networkManager, serverManager); - - FindParts(taskManager, httpServer); + FindParts(); } /// @@ -113,42 +110,23 @@ namespace MediaBrowser.ServerApplication /// /// Registers resources that classes will depend on /// - private void RegisterResources(ITaskManager taskManager, IHttpServer httpServer, INetworkManager networkManager, IServerManager serverManager) + protected override void RegisterResources(ITaskManager taskManager, INetworkManager networkManager, IServerManager serverManager) { + base.RegisterResources(taskManager, networkManager, serverManager); + RegisterSingleInstance(Kernel); RegisterSingleInstance(Kernel); RegisterSingleInstance(this); - RegisterSingleInstance(LogManager); - RegisterSingleInstance(Logger); - RegisterSingleInstance(ApplicationPaths); RegisterSingleInstance(ServerApplicationPaths); - RegisterSingleInstance(taskManager); RegisterSingleInstance(new PismoIsoManager(Logger)); RegisterSingleInstance(new BdInfoExaminer()); RegisterSingleInstance(new HttpClientManager(ApplicationPaths, Logger)); RegisterSingleInstance(new DotNetZipClient()); - RegisterSingleInstance(() => new AlchemyServer(Logger)); RegisterSingleInstance(_jsonSerializer); RegisterSingleInstance(_xmlSerializer); - RegisterSingleInstance(ProtobufSerializer); - RegisterSingleInstance(new UdpServer(Logger), false); - RegisterSingleInstance(httpServer, false); - - RegisterSingleInstance(networkManager); - - RegisterSingleInstance(serverManager); - } - - /// - /// Finds the parts. - /// - private void FindParts(ITaskManager taskManager, IHttpServer httpServer) - { - taskManager.AddTasks(GetExports(false)); - - httpServer.Init(GetExports(false)); + RegisterSingleInstance(ServerFactory.CreateServer(this, ProtobufSerializer, Logger, "Media Browser", "index.html"), false); } /// diff --git a/MediaBrowser.ServerApplication/MainWindow.xaml.cs b/MediaBrowser.ServerApplication/MainWindow.xaml.cs index b3b26f57a1..1189e73d7b 100644 --- a/MediaBrowser.ServerApplication/MainWindow.xaml.cs +++ b/MediaBrowser.ServerApplication/MainWindow.xaml.cs @@ -101,7 +101,6 @@ namespace MediaBrowser.ServerApplication Kernel.Instance.ReloadCompleted += KernelReloadCompleted; _logManager.LoggerLoaded += LoadLogWindow; - Kernel.Instance.HasPendingRestartChanged += Instance_HasPendingRestartChanged; Kernel.Instance.ConfigurationUpdated += Instance_ConfigurationUpdated; } @@ -131,19 +130,6 @@ namespace MediaBrowser.ServerApplication }); } - /// - /// Sets visibility of the restart message when the kernel value changes - /// - /// The source of the event. - /// The instance containing the event data. - void Instance_HasPendingRestartChanged(object sender, EventArgs e) - { - Dispatcher.InvokeAsync(() => - { - MbTaskbarIcon.ToolTipText = Kernel.Instance.HasPendingRestart ? "Media Browser Server - Please restart to finish updating." : "Media Browser Server"; - }); - } - /// /// Handles the LibraryChanged event of the Instance control. /// diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs index 917ebc8a78..e37924d4c8 100644 --- a/MediaBrowser.WebDashboard/Api/DashboardService.cs +++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs @@ -49,14 +49,14 @@ namespace MediaBrowser.WebDashboard.Api /// /// Class GetDashboardResource /// - [Route("/dashboard/{name*}", "GET")] + [Route("/dashboard/{ResourceName*}", "GET")] public class GetDashboardResource { /// /// Gets or sets the name. /// /// The name. - public string Name { get; set; } + public string ResourceName { get; set; } /// /// Gets or sets the V. /// @@ -174,7 +174,7 @@ namespace MediaBrowser.WebDashboard.Api /// System.Object. public object Get(GetDashboardResource request) { - var path = request.Name; + var path = request.ResourceName; var contentType = MimeTypes.GetMimeType(path); diff --git a/Nuget/MediaBrowser.ApiClient.nuspec b/Nuget/MediaBrowser.ApiClient.nuspec index f58018c8f6..cc373aba6c 100644 --- a/Nuget/MediaBrowser.ApiClient.nuspec +++ b/Nuget/MediaBrowser.ApiClient.nuspec @@ -2,7 +2,7 @@ MediaBrowser.ApiClient - 3.0.0.9-beta + 3.0.0.10-beta MediaBrowser.ApiClient Media Browser Team scottisafool,Luke diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index 4e4298eaa1..da8026f546 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.9 + 3.0.10 <authors>Luke</authors> <owners>Media Browser Team</owners> @@ -10,7 +10,7 @@ <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Contains common components shared by Media Browser Theatre and Media Browser Server. Not intended for plugin developer consumption.</description> <dependencies> - <dependency id="MediaBrowser.Common" version="3.0.9" /> + <dependency id="MediaBrowser.Common" version="3.0.10" /> <dependency id="NLog" version="2.0.0.2000" /> <dependency id="ServiceStack" version="3.9.37" /> <dependency id="ServiceStack.Api.Swagger" version="3.9.35" /> diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index 177ee58b4b..5d5930eeb1 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <metadata> <id>MediaBrowser.Common</id> - <version>3.0.9</version> + <version>3.0.10</version> <title>MediaBrowser.Common Media Browser Team diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index 9d4f1d03af..9fcf238760 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.9 + 3.0.10 Media Browser.Server.Core Media Browser Team @@ -10,7 +10,7 @@ false Contains core components required to build plugins for Media Browser Server. - +