fixed the plugin catalog not loading

pull/702/head
LukePulverenti 12 years ago
parent ff6325efc5
commit ca7ee68473

@ -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.Logging;
using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Serialization;
using SimpleInjector; using SimpleInjector;
using System; using System;
@ -131,6 +139,18 @@ namespace MediaBrowser.Common.Implementations
/// <returns>IApplicationPaths.</returns> /// <returns>IApplicationPaths.</returns>
protected abstract IApplicationPaths GetApplicationPaths(); protected abstract IApplicationPaths GetApplicationPaths();
/// <summary>
/// Finds the parts.
/// </summary>
protected virtual void FindParts()
{
Resolve<ITaskManager>().AddTasks(GetExports<IScheduledTask>(false));
Resolve<IHttpServer>().Init(GetExports<IRestfulService>(false));
Resolve<IServerManager>().AddWebSocketListeners(GetExports<IWebSocketListener>());
}
/// <summary> /// <summary>
/// Discovers the types. /// Discovers the types.
/// </summary> /// </summary>
@ -143,6 +163,24 @@ namespace MediaBrowser.Common.Implementations
AllConcreteTypes = AllTypes.Where(t => t.IsClass && !t.IsAbstract && !t.IsInterface && !t.IsGenericType).ToArray(); AllConcreteTypes = AllTypes.Where(t => t.IsClass && !t.IsAbstract && !t.IsInterface && !t.IsGenericType).ToArray();
} }
/// <summary>
/// Registers resources that classes will depend on
/// </summary>
protected virtual void RegisterResources(ITaskManager taskManager, INetworkManager networkManager, IServerManager serverManager)
{
RegisterSingleInstance(LogManager);
RegisterSingleInstance(Logger);
RegisterSingleInstance(ApplicationPaths);
RegisterSingleInstance(taskManager);
RegisterSingleInstance<IWebSocketServer>(() => new AlchemyServer(Logger));
RegisterSingleInstance(ProtobufSerializer);
RegisterSingleInstance<IUdpServer>(new UdpServer(Logger), false);
RegisterSingleInstance(networkManager);
RegisterSingleInstance(serverManager);
}
/// <summary> /// <summary>
/// Gets a list of types within an assembly /// 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 /// 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

@ -95,6 +95,12 @@ namespace MediaBrowser.Common.Implementations.ServerManager
get { return SupportsNativeWebSocket ? _kernel.Configuration.HttpServerPortNumber : _kernel.Configuration.LegacyWebSocketPortNumber; } get { return SupportsNativeWebSocket ? _kernel.Configuration.HttpServerPortNumber : _kernel.Configuration.LegacyWebSocketPortNumber; }
} }
/// <summary>
/// Gets the web socket listeners.
/// </summary>
/// <value>The web socket listeners.</value>
private List<IWebSocketListener> WebSocketListeners = new List<IWebSocketListener>();
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="ServerManager" /> class. /// Initializes a new instance of the <see cref="ServerManager" /> class.
/// </summary> /// </summary>
@ -234,7 +240,7 @@ namespace MediaBrowser.Common.Implementations.ServerManager
/// <param name="result">The result.</param> /// <param name="result">The result.</param>
private async void ProcessWebSocketMessageReceived(WebSocketMessageInfo 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 try
{ {
@ -514,5 +520,14 @@ namespace MediaBrowser.Common.Implementations.ServerManager
ReloadExternalWebSocketServer(); ReloadExternalWebSocketServer();
} }
} }
/// <summary>
/// Adds the web socket listeners.
/// </summary>
/// <param name="listeners">The listeners.</param>
public void AddWebSocketListeners(IEnumerable<IWebSocketListener> listeners)
{
WebSocketListeners.AddRange(listeners);
}
} }
} }

@ -23,11 +23,6 @@ namespace MediaBrowser.Common.Kernel
where TConfigurationType : BaseApplicationConfiguration, new() where TConfigurationType : BaseApplicationConfiguration, new()
where TApplicationPathsType : IApplicationPaths where TApplicationPathsType : IApplicationPaths
{ {
/// <summary>
/// Occurs when [has pending restart changed].
/// </summary>
public event EventHandler HasPendingRestartChanged;
#region ConfigurationUpdated Event #region ConfigurationUpdated Event
/// <summary> /// <summary>
/// Occurs when [configuration updated]. /// Occurs when [configuration updated].
@ -43,20 +38,6 @@ namespace MediaBrowser.Common.Kernel
} }
#endregion #endregion
#region ReloadBeginning Event
/// <summary>
/// Fires whenever the kernel begins reloading
/// </summary>
public event EventHandler<EventArgs> ReloadBeginning;
/// <summary>
/// Called when [reload beginning].
/// </summary>
private void OnReloadBeginning()
{
EventHelper.QueueEventIfNotNull(ReloadBeginning, this, EventArgs.Empty, Logger);
}
#endregion
#region ReloadCompleted Event #region ReloadCompleted Event
/// <summary> /// <summary>
/// Fires whenever the kernel completes reloading /// Fires whenever the kernel completes reloading
@ -141,12 +122,6 @@ namespace MediaBrowser.Common.Kernel
/// <value>The plugins.</value> /// <value>The plugins.</value>
public IEnumerable<IPlugin> Plugins { get; protected set; } public IEnumerable<IPlugin> Plugins { get; protected set; }
/// <summary>
/// Gets the web socket listeners.
/// </summary>
/// <value>The web socket listeners.</value>
public IEnumerable<IWebSocketListener> WebSocketListeners { get; private set; }
/// <summary> /// <summary>
/// Gets or sets the TCP manager. /// Gets or sets the TCP manager.
/// </summary> /// </summary>
@ -233,8 +208,6 @@ namespace MediaBrowser.Common.Kernel
/// <returns>Task.</returns> /// <returns>Task.</returns>
public async Task Init() public async Task Init()
{ {
OnReloadBeginning();
await ReloadInternal().ConfigureAwait(false); await ReloadInternal().ConfigureAwait(false);
OnReloadCompleted(); OnReloadCompleted();
@ -275,7 +248,6 @@ namespace MediaBrowser.Common.Kernel
/// </summary> /// </summary>
protected virtual void FindParts() protected virtual void FindParts()
{ {
WebSocketListeners = ApplicationHost.GetExports<IWebSocketListener>();
Plugins = ApplicationHost.GetExports<IPlugin>(); Plugins = ApplicationHost.GetExports<IPlugin>();
} }
@ -314,8 +286,6 @@ namespace MediaBrowser.Common.Kernel
HasPendingRestart = true; HasPendingRestart = true;
ServerManager.SendWebSocketMessage("HasPendingRestartChanged", GetSystemInfo()); ServerManager.SendWebSocketMessage("HasPendingRestartChanged", GetSystemInfo());
EventHelper.QueueEventIfNotNull(HasPendingRestartChanged, this, EventArgs.Empty, Logger);
} }
/// <summary> /// <summary>

@ -96,12 +96,6 @@ namespace MediaBrowser.Common.Kernel
/// <value>The plug-in security manager.</value> /// <value>The plug-in security manager.</value>
ISecurityManager SecurityManager { get; set; } ISecurityManager SecurityManager { get; set; }
/// <summary>
/// Gets the web socket listeners.
/// </summary>
/// <value>The web socket listeners.</value>
IEnumerable<IWebSocketListener> WebSocketListeners { get; }
/// <summary> /// <summary>
/// Occurs when [reload completed]. /// Occurs when [reload completed].
/// </summary> /// </summary>

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -50,5 +51,11 @@ namespace MediaBrowser.Common.Kernel
/// <returns>Task.</returns> /// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException">messageType</exception> /// <exception cref="System.ArgumentNullException">messageType</exception>
Task SendWebSocketMessageAsync<T>(string messageType, Func<T> dataFunction, CancellationToken cancellationToken); Task SendWebSocketMessageAsync<T>(string messageType, Func<T> dataFunction, CancellationToken cancellationToken);
/// <summary>
/// Adds the web socket listeners.
/// </summary>
/// <param name="listeners">The listeners.</param>
void AddWebSocketListeners(IEnumerable<IWebSocketListener> listeners);
} }
} }

@ -156,7 +156,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite
// Don't dispose in the middle of a flush // Don't dispose in the middle of a flush
while (IsFlushing) while (IsFlushing)
{ {
Thread.Sleep(50); Thread.Sleep(25);
} }
if (connection.IsOpen()) if (connection.IsOpen())

@ -72,7 +72,6 @@ namespace MediaBrowser.ServerApplication
public ApplicationHost() public ApplicationHost()
: base() : base()
{ {
Logger.Info("ApplicationHost!!!!!!!!!!!!!!!!!!!!");
Kernel = new Kernel(this, ServerApplicationPaths, _xmlSerializer, Logger); Kernel = new Kernel(this, ServerApplicationPaths, _xmlSerializer, Logger);
var networkManager = new NetworkManager(); var networkManager = new NetworkManager();
@ -85,11 +84,9 @@ namespace MediaBrowser.ServerApplication
Logger.Info("Version {0} initializing", ApplicationVersion); 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();
FindParts(taskManager, httpServer);
} }
/// <summary> /// <summary>
@ -113,42 +110,23 @@ namespace MediaBrowser.ServerApplication
/// <summary> /// <summary>
/// Registers resources that classes will depend on /// Registers resources that classes will depend on
/// </summary> /// </summary>
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<IKernel>(Kernel); RegisterSingleInstance<IKernel>(Kernel);
RegisterSingleInstance(Kernel); RegisterSingleInstance(Kernel);
RegisterSingleInstance<IApplicationHost>(this); RegisterSingleInstance<IApplicationHost>(this);
RegisterSingleInstance(LogManager);
RegisterSingleInstance(Logger);
RegisterSingleInstance(ApplicationPaths);
RegisterSingleInstance(ServerApplicationPaths); RegisterSingleInstance(ServerApplicationPaths);
RegisterSingleInstance(taskManager);
RegisterSingleInstance<IIsoManager>(new PismoIsoManager(Logger)); RegisterSingleInstance<IIsoManager>(new PismoIsoManager(Logger));
RegisterSingleInstance<IBlurayExaminer>(new BdInfoExaminer()); RegisterSingleInstance<IBlurayExaminer>(new BdInfoExaminer());
RegisterSingleInstance<IHttpClient>(new HttpClientManager(ApplicationPaths, Logger)); RegisterSingleInstance<IHttpClient>(new HttpClientManager(ApplicationPaths, Logger));
RegisterSingleInstance<IZipClient>(new DotNetZipClient()); RegisterSingleInstance<IZipClient>(new DotNetZipClient());
RegisterSingleInstance<IWebSocketServer>(() => new AlchemyServer(Logger));
RegisterSingleInstance(_jsonSerializer); RegisterSingleInstance(_jsonSerializer);
RegisterSingleInstance(_xmlSerializer); RegisterSingleInstance(_xmlSerializer);
RegisterSingleInstance(ProtobufSerializer); RegisterSingleInstance(ServerFactory.CreateServer(this, ProtobufSerializer, Logger, "Media Browser", "index.html"), false);
RegisterSingleInstance<IUdpServer>(new UdpServer(Logger), false);
RegisterSingleInstance(httpServer, false);
RegisterSingleInstance(networkManager);
RegisterSingleInstance(serverManager);
}
/// <summary>
/// Finds the parts.
/// </summary>
private void FindParts(ITaskManager taskManager, IHttpServer httpServer)
{
taskManager.AddTasks(GetExports<IScheduledTask>(false));
httpServer.Init(GetExports<IRestfulService>(false));
} }
/// <summary> /// <summary>

@ -101,7 +101,6 @@ namespace MediaBrowser.ServerApplication
Kernel.Instance.ReloadCompleted += KernelReloadCompleted; Kernel.Instance.ReloadCompleted += KernelReloadCompleted;
_logManager.LoggerLoaded += LoadLogWindow; _logManager.LoggerLoaded += LoadLogWindow;
Kernel.Instance.HasPendingRestartChanged += Instance_HasPendingRestartChanged;
Kernel.Instance.ConfigurationUpdated += Instance_ConfigurationUpdated; Kernel.Instance.ConfigurationUpdated += Instance_ConfigurationUpdated;
} }
@ -131,19 +130,6 @@ namespace MediaBrowser.ServerApplication
}); });
} }
/// <summary>
/// Sets visibility of the restart message when the kernel value changes
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
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";
});
}
/// <summary> /// <summary>
/// Handles the LibraryChanged event of the Instance control. /// Handles the LibraryChanged event of the Instance control.
/// </summary> /// </summary>

@ -49,14 +49,14 @@ namespace MediaBrowser.WebDashboard.Api
/// <summary> /// <summary>
/// Class GetDashboardResource /// Class GetDashboardResource
/// </summary> /// </summary>
[Route("/dashboard/{name*}", "GET")] [Route("/dashboard/{ResourceName*}", "GET")]
public class GetDashboardResource public class GetDashboardResource
{ {
/// <summary> /// <summary>
/// Gets or sets the name. /// Gets or sets the name.
/// </summary> /// </summary>
/// <value>The name.</value> /// <value>The name.</value>
public string Name { get; set; } public string ResourceName { get; set; }
/// <summary> /// <summary>
/// Gets or sets the V. /// Gets or sets the V.
/// </summary> /// </summary>
@ -174,7 +174,7 @@ namespace MediaBrowser.WebDashboard.Api
/// <returns>System.Object.</returns> /// <returns>System.Object.</returns>
public object Get(GetDashboardResource request) public object Get(GetDashboardResource request)
{ {
var path = request.Name; var path = request.ResourceName;
var contentType = MimeTypes.GetMimeType(path); var contentType = MimeTypes.GetMimeType(path);

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.ApiClient</id> <id>MediaBrowser.ApiClient</id>
<version>3.0.0.9-beta</version> <version>3.0.0.10-beta</version>
<title>MediaBrowser.ApiClient</title> <title>MediaBrowser.ApiClient</title>
<authors>Media Browser Team</authors> <authors>Media Browser Team</authors>
<owners>scottisafool,Luke</owners> <owners>scottisafool,Luke</owners>

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Common.Internal</id> <id>MediaBrowser.Common.Internal</id>
<version>3.0.9</version> <version>3.0.10</version>
<title /> <title />
<authors>Luke</authors> <authors>Luke</authors>
<owners>Media Browser Team</owners> <owners>Media Browser Team</owners>
@ -10,7 +10,7 @@
<requireLicenseAcceptance>false</requireLicenseAcceptance> <requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Contains common components shared by Media Browser Theatre and Media Browser Server. Not intended for plugin developer consumption.</description> <description>Contains common components shared by Media Browser Theatre and Media Browser Server. Not intended for plugin developer consumption.</description>
<dependencies> <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="NLog" version="2.0.0.2000" />
<dependency id="ServiceStack" version="3.9.37" /> <dependency id="ServiceStack" version="3.9.37" />
<dependency id="ServiceStack.Api.Swagger" version="3.9.35" /> <dependency id="ServiceStack.Api.Swagger" version="3.9.35" />

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Common</id> <id>MediaBrowser.Common</id>
<version>3.0.9</version> <version>3.0.10</version>
<title>MediaBrowser.Common</title> <title>MediaBrowser.Common</title>
<authors>Media Browser Team</authors> <authors>Media Browser Team</authors>
<owners /> <owners />

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Server.Core</id> <id>MediaBrowser.Server.Core</id>
<version>3.0.9</version> <version>3.0.10</version>
<title>Media Browser.Server.Core</title> <title>Media Browser.Server.Core</title>
<authors>Media Browser Team</authors> <authors>Media Browser Team</authors>
<owners /> <owners />
@ -10,7 +10,7 @@
<requireLicenseAcceptance>false</requireLicenseAcceptance> <requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Contains core components required to build plugins for Media Browser Server.</description> <description>Contains core components required to build plugins for Media Browser Server.</description>
<dependencies> <dependencies>
<dependency id="MediaBrowser.Common" version="3.0.9" /> <dependency id="MediaBrowser.Common" version="3.0.10" />
</dependencies> </dependencies>
</metadata> </metadata>
<files> <files>

Loading…
Cancel
Save