aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukePulverenti <luke.pulverenti@gmail.com>2013-03-07 00:34:00 -0500
committerLukePulverenti <luke.pulverenti@gmail.com>2013-03-07 00:34:00 -0500
commit4f67fc4aefc11c1a4293227c70de922dbe03c652 (patch)
tree67af7ffa36b002969968e06467c624def3e97dc6
parent60545c433b7d383147adb57bb91e720c3b547054 (diff)
removed base kernel and ikernel
-rw-r--r--MediaBrowser.Api/EnvironmentService.cs4
-rw-r--r--MediaBrowser.Api/Images/ImageService.cs2
-rw-r--r--MediaBrowser.Api/Javascript/JavascriptApiClientService.cs2
-rw-r--r--MediaBrowser.Api/Library/LibraryService.cs4
-rw-r--r--MediaBrowser.Api/Library/LibraryStructureService.cs4
-rw-r--r--MediaBrowser.Api/LocalizationService.cs4
-rw-r--r--MediaBrowser.Api/MediaBrowser.Api.csproj8
-rw-r--r--MediaBrowser.Api/PackageService.cs2
-rw-r--r--MediaBrowser.Api/Playback/BaseStreamingService.cs2
-rw-r--r--MediaBrowser.Api/PluginService.cs2
-rw-r--r--MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs19
-rw-r--r--MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs2
-rw-r--r--MediaBrowser.Api/SystemService.cs10
-rw-r--r--MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs4
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs5
-rw-r--r--MediaBrowser.Api/UserLibrary/UserLibraryService.cs5
-rw-r--r--MediaBrowser.Api/UserService.cs2
-rw-r--r--MediaBrowser.Api/WeatherService.cs4
-rw-r--r--MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs2
-rw-r--r--MediaBrowser.Api/WebSocket/SystemInfoWebSocketListener.cs11
-rw-r--r--MediaBrowser.Common.Implementations/BaseApplicationHost.cs94
-rw-r--r--MediaBrowser.Common.Implementations/BaseApplicationPaths.cs1
-rw-r--r--MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs2
-rw-r--r--MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj106
-rw-r--r--MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs28
-rw-r--r--MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs73
-rw-r--r--MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/SystemUpdateTask.cs13
-rw-r--r--MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs23
-rw-r--r--MediaBrowser.Common.Implementations/Updates/ApplicationUpdater.cs (renamed from MediaBrowser.Common/Updates/ApplicationUpdater.cs)10
-rw-r--r--MediaBrowser.Common.Implementations/packages.config10
-rw-r--r--MediaBrowser.Common/IApplicationHost.cs21
-rw-r--r--MediaBrowser.Common/Kernel/BaseKernel.cs167
-rw-r--r--MediaBrowser.Common/Kernel/IKernel.cs74
-rw-r--r--MediaBrowser.Common/Kernel/KernelContext.cs18
-rw-r--r--MediaBrowser.Common/MediaBrowser.Common.csproj11
-rw-r--r--MediaBrowser.Common/Net/BasePeriodicWebSocketListener.cs (renamed from MediaBrowser.Common/Kernel/BasePeriodicWebSocketListener.cs)5
-rw-r--r--MediaBrowser.Common/Net/IServerManager.cs (renamed from MediaBrowser.Common/Kernel/IServerManager.cs)2
-rw-r--r--MediaBrowser.Common/Net/IWebSocketListener.cs (renamed from MediaBrowser.Common/Kernel/IWebSocketListener.cs)5
-rw-r--r--MediaBrowser.Common/ScheduledTasks/IScheduledTaskWorker.cs19
-rw-r--r--MediaBrowser.Common/ScheduledTasks/ITaskManager.cs11
-rw-r--r--MediaBrowser.Common/ScheduledTasks/TaskCompletionEventArgs.cs12
-rw-r--r--MediaBrowser.Controller/BaseManager.cs50
-rw-r--r--MediaBrowser.Controller/IO/FileSystemManager.cs20
-rw-r--r--MediaBrowser.Controller/IServerApplicationHost.cs10
-rw-r--r--MediaBrowser.Controller/IServerApplicationPaths.cs1
-rw-r--r--MediaBrowser.Controller/Kernel.cs56
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj2
-rw-r--r--MediaBrowser.Controller/Providers/ProviderManager.cs15
-rw-r--r--MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs26
-rw-r--r--MediaBrowser.Model/Configuration/ServerConfiguration.cs25
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/BaseRestService.cs (renamed from MediaBrowser.Common.Implementations/HttpServer/BaseRestService.cs)2
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs (renamed from MediaBrowser.Common.Implementations/HttpServer/HttpServer.cs)4
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/NativeWebSocket.cs (renamed from MediaBrowser.Common.Implementations/HttpServer/NativeWebSocket.cs)2
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs (renamed from MediaBrowser.Common.Implementations/HttpServer/ServerFactory.cs)4
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/StreamWriter.cs (renamed from MediaBrowser.Common.Implementations/HttpServer/StreamWriter.cs)2
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/SwaggerService.cs (renamed from MediaBrowser.Common.Implementations/HttpServer/SwaggerService.cs)2
-rw-r--r--MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj101
-rw-r--r--MediaBrowser.Server.Implementations/README.txt (renamed from MediaBrowser.Common.Implementations/README.txt)0
-rw-r--r--MediaBrowser.Server.Implementations/ServerManager/RegisterServer.bat (renamed from MediaBrowser.Common.Implementations/ServerManager/RegisterServer.bat)0
-rw-r--r--MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs (renamed from MediaBrowser.Common.Implementations/ServerManager/ServerManager.cs)59
-rw-r--r--MediaBrowser.Server.Implementations/ServerManager/WebSocketConnection.cs (renamed from MediaBrowser.Common.Implementations/ServerManager/WebSocketConnection.cs)2
-rw-r--r--MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs1
-rw-r--r--MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs1
-rw-r--r--MediaBrowser.Server.Implementations/Sqlite/SQLiteUserDataRepository.cs1
-rw-r--r--MediaBrowser.Server.Implementations/Sqlite/SQLiteUserRepository.cs1
-rw-r--r--MediaBrowser.Server.Implementations/Udp/UdpServer.cs (renamed from MediaBrowser.Common.Implementations/Udp/UdpServer.cs)2
-rw-r--r--MediaBrowser.Server.Implementations/Updates/InstallationManager.cs14
-rw-r--r--MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs (renamed from MediaBrowser.Common.Implementations/WebSocket/AlchemyServer.cs)2
-rw-r--r--MediaBrowser.Server.Implementations/WebSocket/AlchemyWebSocket.cs (renamed from MediaBrowser.Common.Implementations/WebSocket/AlchemyWebSocket.cs)2
-rw-r--r--MediaBrowser.Server.Implementations/packages.config12
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/css/screen.css (renamed from MediaBrowser.Common.Implementations/swagger-ui/css/screen.css)0
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/images/pet_store_api.png (renamed from MediaBrowser.Common.Implementations/swagger-ui/images/pet_store_api.png)bin824 -> 824 bytes
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/images/wordnik_api.png (renamed from MediaBrowser.Common.Implementations/swagger-ui/images/wordnik_api.png)bin980 -> 980 bytes
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/index.html (renamed from MediaBrowser.Common.Implementations/swagger-ui/index.html)0
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/lib/backbone-min.js (renamed from MediaBrowser.Common.Implementations/swagger-ui/lib/backbone-min.js)0
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/lib/handlebars.runtime-1.0.0.beta.6.js (renamed from MediaBrowser.Common.Implementations/swagger-ui/lib/handlebars.runtime-1.0.0.beta.6.js)0
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/lib/jquery.ba-bbq.min.js (renamed from MediaBrowser.Common.Implementations/swagger-ui/lib/jquery.ba-bbq.min.js)0
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/lib/jquery.min.js (renamed from MediaBrowser.Common.Implementations/swagger-ui/lib/jquery.min.js)0
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/lib/jquery.slideto.min.js (renamed from MediaBrowser.Common.Implementations/swagger-ui/lib/jquery.slideto.min.js)0
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/lib/jquery.wiggle.min.js (renamed from MediaBrowser.Common.Implementations/swagger-ui/lib/jquery.wiggle.min.js)0
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/lib/swagger.js (renamed from MediaBrowser.Common.Implementations/swagger-ui/lib/swagger.js)0
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/lib/underscore-min.js (renamed from MediaBrowser.Common.Implementations/swagger-ui/lib/underscore-min.js)0
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/swagger-ui.js (renamed from MediaBrowser.Common.Implementations/swagger-ui/swagger-ui.js)0
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/swagger-ui.min.js (renamed from MediaBrowser.Common.Implementations/swagger-ui/swagger-ui.min.js)0
-rw-r--r--MediaBrowser.ServerApplication/App.xaml.cs13
-rw-r--r--MediaBrowser.ServerApplication/ApplicationHost.cs89
-rw-r--r--MediaBrowser.ServerApplication/StartupWizard.cs6
-rw-r--r--MediaBrowser.ServerApplication/WebSocketEvents.cs36
-rw-r--r--MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs14
-rw-r--r--MediaBrowser.WebDashboard/Api/DashboardService.cs14
-rw-r--r--MediaBrowser.WebDashboard/Html/css/site.css2
-rw-r--r--MediaBrowser.WebDashboard/Html/itemList.html6
-rw-r--r--MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj8
-rw-r--r--Nuget/MediaBrowser.Common.Internal.nuspec12
94 files changed, 552 insertions, 870 deletions
diff --git a/MediaBrowser.Api/EnvironmentService.cs b/MediaBrowser.Api/EnvironmentService.cs
index 56be18d86..6296711ed 100644
--- a/MediaBrowser.Api/EnvironmentService.cs
+++ b/MediaBrowser.Api/EnvironmentService.cs
@@ -1,8 +1,8 @@
-using MediaBrowser.Common.Implementations.HttpServer;
-using MediaBrowser.Common.Net;
+using MediaBrowser.Common.Net;
using MediaBrowser.Controller.IO;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Net;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs
index 1c0e6c68d..d2a612cb9 100644
--- a/MediaBrowser.Api/Images/ImageService.cs
+++ b/MediaBrowser.Api/Images/ImageService.cs
@@ -1,11 +1,11 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO;
-using MediaBrowser.Common.Implementations.HttpServer;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using ServiceStack.Text.Controller;
using System;
diff --git a/MediaBrowser.Api/Javascript/JavascriptApiClientService.cs b/MediaBrowser.Api/Javascript/JavascriptApiClientService.cs
index 165574d74..7c4d0d84f 100644
--- a/MediaBrowser.Api/Javascript/JavascriptApiClientService.cs
+++ b/MediaBrowser.Api/Javascript/JavascriptApiClientService.cs
@@ -1,6 +1,6 @@
using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.Implementations.HttpServer;
using MediaBrowser.Common.Net;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using System;
using System.IO;
diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs
index b49cc568f..39cbe6490 100644
--- a/MediaBrowser.Api/Library/LibraryService.cs
+++ b/MediaBrowser.Api/Library/LibraryService.cs
@@ -1,10 +1,8 @@
using MediaBrowser.Common;
-using MediaBrowser.Common.Implementations.HttpServer;
-using MediaBrowser.Common.Kernel;
-using MediaBrowser.Controller;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Dto;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
diff --git a/MediaBrowser.Api/Library/LibraryStructureService.cs b/MediaBrowser.Api/Library/LibraryStructureService.cs
index df8b2907d..0ae73ed45 100644
--- a/MediaBrowser.Api/Library/LibraryStructureService.cs
+++ b/MediaBrowser.Api/Library/LibraryStructureService.cs
@@ -1,7 +1,7 @@
-using MediaBrowser.Common.Implementations.HttpServer;
-using MediaBrowser.Controller;
+using MediaBrowser.Controller;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
diff --git a/MediaBrowser.Api/LocalizationService.cs b/MediaBrowser.Api/LocalizationService.cs
index 18c33a90a..1493e8e44 100644
--- a/MediaBrowser.Api/LocalizationService.cs
+++ b/MediaBrowser.Api/LocalizationService.cs
@@ -1,7 +1,7 @@
-using MediaBrowser.Common.Implementations.HttpServer;
-using MediaBrowser.Controller.Localization;
+using MediaBrowser.Controller.Localization;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Globalization;
+using MediaBrowser.Server.Implementations.HttpServer;
using MoreLinq;
using ServiceStack.ServiceHost;
using System.Collections.Generic;
diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj
index c7bba4e9a..5cedbf85f 100644
--- a/MediaBrowser.Api/MediaBrowser.Api.csproj
+++ b/MediaBrowser.Api/MediaBrowser.Api.csproj
@@ -121,10 +121,6 @@
<Compile Include="WebSocket\SystemInfoWebSocketListener.cs" />
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\MediaBrowser.Common.Implementations\MediaBrowser.Common.Implementations.csproj">
- <Project>{c4d2573a-3fd3-441f-81af-174ac4cd4e1d}</Project>
- <Name>MediaBrowser.Common.Implementations</Name>
- </ProjectReference>
<ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
<Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
<Name>MediaBrowser.Common</Name>
@@ -137,6 +133,10 @@
<Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
<Name>MediaBrowser.Model</Name>
</ProjectReference>
+ <ProjectReference Include="..\MediaBrowser.Server.Implementations\MediaBrowser.Server.Implementations.csproj">
+ <Project>{2e781478-814d-4a48-9d80-bff206441a65}</Project>
+ <Name>MediaBrowser.Server.Implementations</Name>
+ </ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
diff --git a/MediaBrowser.Api/PackageService.cs b/MediaBrowser.Api/PackageService.cs
index 1c0508c6d..e8ff02539 100644
--- a/MediaBrowser.Api/PackageService.cs
+++ b/MediaBrowser.Api/PackageService.cs
@@ -1,8 +1,8 @@
using MediaBrowser.Common;
using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.Implementations.HttpServer;
using MediaBrowser.Controller.Updates;
using MediaBrowser.Model.Updates;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs
index 5107d13c2..796366181 100644
--- a/MediaBrowser.Api/Playback/BaseStreamingService.cs
+++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.Implementations.HttpServer;
using MediaBrowser.Common.IO;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Entities;
@@ -15,6 +14,7 @@ using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Server.Implementations.HttpServer;
namespace MediaBrowser.Api.Playback
{
diff --git a/MediaBrowser.Api/PluginService.cs b/MediaBrowser.Api/PluginService.cs
index bec6835e0..847478beb 100644
--- a/MediaBrowser.Api/PluginService.cs
+++ b/MediaBrowser.Api/PluginService.cs
@@ -1,11 +1,11 @@
using MediaBrowser.Common;
using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.Implementations.HttpServer;
using MediaBrowser.Common.Security;
using MediaBrowser.Controller.Updates;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Plugins;
using MediaBrowser.Model.Serialization;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using ServiceStack.Text.Controller;
using System;
diff --git a/MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs b/MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs
index 0c18725fa..5117dc7ac 100644
--- a/MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs
+++ b/MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs
@@ -1,8 +1,8 @@
using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.Implementations.HttpServer;
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Tasks;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using ServiceStack.Text.Controller;
using System;
@@ -85,29 +85,18 @@ namespace MediaBrowser.Api.ScheduledTasks
private ITaskManager TaskManager { get; set; }
/// <summary>
- /// The _json serializer
- /// </summary>
- private readonly IJsonSerializer _jsonSerializer;
-
- /// <summary>
/// Initializes a new instance of the <see cref="ScheduledTaskService" /> class.
/// </summary>
/// <param name="taskManager">The task manager.</param>
- /// <param name="jsonSerializer">The json serializer.</param>
/// <exception cref="System.ArgumentNullException">taskManager</exception>
- public ScheduledTaskService(ITaskManager taskManager, IJsonSerializer jsonSerializer)
+ public ScheduledTaskService(ITaskManager taskManager)
{
if (taskManager == null)
{
throw new ArgumentNullException("taskManager");
}
- if (jsonSerializer == null)
- {
- throw new ArgumentNullException("jsonSerializer");
- }
TaskManager = taskManager;
- _jsonSerializer = jsonSerializer;
}
/// <summary>
@@ -157,7 +146,7 @@ namespace MediaBrowser.Api.ScheduledTasks
throw new ResourceNotFoundException("Task not found");
}
- task.Execute();
+ TaskManager.Execute(task);
}
/// <summary>
@@ -174,7 +163,7 @@ namespace MediaBrowser.Api.ScheduledTasks
throw new ResourceNotFoundException("Task not found");
}
- task.Cancel();
+ TaskManager.Cancel(task);
}
/// <summary>
diff --git a/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs b/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs
index 4ef791e23..20634301a 100644
--- a/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs
+++ b/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs
@@ -1,4 +1,4 @@
-using MediaBrowser.Common.Kernel;
+using MediaBrowser.Common.Net;
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Tasks;
diff --git a/MediaBrowser.Api/SystemService.cs b/MediaBrowser.Api/SystemService.cs
index 96ed70b8f..3fdf621c0 100644
--- a/MediaBrowser.Api/SystemService.cs
+++ b/MediaBrowser.Api/SystemService.cs
@@ -1,11 +1,11 @@
using MediaBrowser.Common;
using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.Implementations.HttpServer;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.System;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using System;
using System.IO;
@@ -66,7 +66,7 @@ namespace MediaBrowser.Api
/// <summary>
/// The _app host
/// </summary>
- private readonly IApplicationHost _appHost;
+ private readonly IServerApplicationHost _appHost;
/// <summary>
/// The _configuration manager
@@ -80,7 +80,7 @@ namespace MediaBrowser.Api
/// <param name="appHost">The app host.</param>
/// <param name="configurationManager">The configuration manager.</param>
/// <exception cref="System.ArgumentNullException">jsonSerializer</exception>
- public SystemService(IJsonSerializer jsonSerializer, IApplicationHost appHost, IServerConfigurationManager configurationManager)
+ public SystemService(IJsonSerializer jsonSerializer, IServerApplicationHost appHost, IServerConfigurationManager configurationManager)
: base()
{
if (jsonSerializer == null)
@@ -104,7 +104,7 @@ namespace MediaBrowser.Api
/// <returns>System.Object.</returns>
public object Get(GetSystemInfo request)
{
- var result = Kernel.Instance.GetSystemInfo();
+ var result = _appHost.GetSystemInfo();
return ToOptimizedResult(result);
}
@@ -132,7 +132,7 @@ namespace MediaBrowser.Api
Task.Run(async () =>
{
await Task.Delay(100);
- Kernel.Instance.PerformPendingRestart();
+ _appHost.PerformPendingRestart();
});
}
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
index e2dd0519a..9d056c699 100644
--- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
+++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
@@ -1,8 +1,8 @@
-using MediaBrowser.Common.Implementations.HttpServer;
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index b89715d1c..c2b01f9b0 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -1,10 +1,9 @@
-using MediaBrowser.Common.Implementations.HttpServer;
-using MediaBrowser.Controller;
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
index c40e59998..ca439b346 100644
--- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
+++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
@@ -1,12 +1,11 @@
-using MediaBrowser.Common.Implementations.HttpServer;
-using MediaBrowser.Controller;
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Connectivity;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Serialization;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using ServiceStack.Text.Controller;
using System;
diff --git a/MediaBrowser.Api/UserService.cs b/MediaBrowser.Api/UserService.cs
index abf07f924..d1606f954 100644
--- a/MediaBrowser.Api/UserService.cs
+++ b/MediaBrowser.Api/UserService.cs
@@ -1,8 +1,8 @@
using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.Implementations.HttpServer;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Serialization;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using ServiceStack.Text.Controller;
using System;
diff --git a/MediaBrowser.Api/WeatherService.cs b/MediaBrowser.Api/WeatherService.cs
index d71951182..f2ba68113 100644
--- a/MediaBrowser.Api/WeatherService.cs
+++ b/MediaBrowser.Api/WeatherService.cs
@@ -1,6 +1,6 @@
-using MediaBrowser.Common.Implementations.HttpServer;
-using MediaBrowser.Controller;
+using MediaBrowser.Controller;
using MediaBrowser.Model.Weather;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using System.Linq;
using System.Threading;
diff --git a/MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs b/MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs
index 2480b2af8..f11bae523 100644
--- a/MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs
+++ b/MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs
@@ -1,5 +1,5 @@
using MediaBrowser.Common.IO;
-using MediaBrowser.Common.Kernel;
+using MediaBrowser.Common.Net;
using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
diff --git a/MediaBrowser.Api/WebSocket/SystemInfoWebSocketListener.cs b/MediaBrowser.Api/WebSocket/SystemInfoWebSocketListener.cs
index 40c3f2f24..ae8f41c36 100644
--- a/MediaBrowser.Api/WebSocket/SystemInfoWebSocketListener.cs
+++ b/MediaBrowser.Api/WebSocket/SystemInfoWebSocketListener.cs
@@ -1,4 +1,4 @@
-using MediaBrowser.Common.Kernel;
+using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.System;
@@ -23,17 +23,16 @@ namespace MediaBrowser.Api.WebSocket
/// <summary>
/// The _kernel
/// </summary>
- private readonly IKernel _kernel;
+ private readonly IServerApplicationHost _appHost;
/// <summary>
/// Initializes a new instance of the <see cref="SystemInfoWebSocketListener" /> class.
/// </summary>
- /// <param name="kernel">The kernel.</param>
/// <param name="logger">The logger.</param>
- public SystemInfoWebSocketListener(Kernel kernel, ILogger logger)
+ public SystemInfoWebSocketListener(ILogger logger, IServerApplicationHost appHost)
: base(logger)
{
- _kernel = kernel;
+ _appHost = appHost;
}
/// <summary>
@@ -43,7 +42,7 @@ namespace MediaBrowser.Api.WebSocket
/// <returns>Task{SystemInfo}.</returns>
protected override Task<SystemInfo> GetDataToSend(object state)
{
- return Task.FromResult(_kernel.GetSystemInfo());
+ return Task.FromResult(_appHost.GetSystemInfo());
}
}
}
diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
index 77ff4f188..a5af2ff66 100644
--- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
+++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
@@ -1,13 +1,11 @@
using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Events;
using MediaBrowser.Common.Implementations.Logging;
using MediaBrowser.Common.Implementations.NetworkManagement;
using MediaBrowser.Common.Implementations.ScheduledTasks;
using MediaBrowser.Common.Implementations.Security;
using MediaBrowser.Common.Implementations.Serialization;
-using MediaBrowser.Common.Implementations.Udp;
using MediaBrowser.Common.Implementations.Updates;
-using MediaBrowser.Common.Implementations.WebSocket;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.Net;
using MediaBrowser.Common.Plugins;
using MediaBrowser.Common.ScheduledTasks;
@@ -15,6 +13,7 @@ using MediaBrowser.Common.Security;
using MediaBrowser.Common.Updates;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
+using MediaBrowser.Model.System;
using MediaBrowser.Model.Updates;
using SimpleInjector;
using System;
@@ -31,6 +30,22 @@ namespace MediaBrowser.Common.Implementations
where TApplicationPathsType : class, IApplicationPaths, new()
{
/// <summary>
+ /// Occurs when [has pending restart changed].
+ /// </summary>
+ public event EventHandler HasPendingRestartChanged;
+
+ /// <summary>
+ /// Occurs when [application updated].
+ /// </summary>
+ public event EventHandler<GenericEventArgs<Version>> ApplicationUpdated;
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance has changes that require the entire application to restart.
+ /// </summary>
+ /// <value><c>true</c> if this instance has pending application restart; otherwise, <c>false</c>.</value>
+ public bool HasPendingRestart { get; private set; }
+
+ /// <summary>
/// Gets or sets the logger.
/// </summary>
/// <value>The logger.</value>
@@ -132,11 +147,11 @@ namespace MediaBrowser.Common.Implementations
/// Gets the kernel.
/// </summary>
/// <value>The kernel.</value>
- protected IKernel Kernel { get; private set; }
protected ITaskManager TaskManager { get; private set; }
protected ISecurityManager SecurityManager { get; private set; }
protected IPackageManager PackageManager { get; private set; }
protected IHttpClient HttpClient { get; private set; }
+ protected INetworkManager NetworkManager { get; private set; }
protected IConfigurationManager ConfigurationManager { get; private set; }
@@ -168,15 +183,11 @@ namespace MediaBrowser.Common.Implementations
Logger.Info("Version {0} initializing", ApplicationVersion);
- Kernel = GetKernel();
-
await RegisterResources().ConfigureAwait(false);
FindParts();
Task.Run(() => ConfigureAutoRunAtStartup());
-
- Kernel.Init();
}
/// <summary>
@@ -191,7 +202,6 @@ namespace MediaBrowser.Common.Implementations
/// <value>The name of the log file prefix.</value>
protected abstract string LogFilePrefixName { get; }
- protected abstract IKernel GetKernel();
protected abstract IConfigurationManager GetConfigurationManager();
/// <summary>
@@ -199,10 +209,6 @@ namespace MediaBrowser.Common.Implementations
/// </summary>
protected virtual void FindParts()
{
- Resolve<IHttpServer>().Init(GetExports<IRestfulService>(false));
- Resolve<IServerManager>().AddWebSocketListeners(GetExports<IWebSocketListener>(false));
-
- Resolve<IServerManager>().Start();
Resolve<ITaskManager>().AddTasks(GetExports<IScheduledTask>(false));
Plugins = GetExports<IPlugin>();
@@ -239,11 +245,7 @@ namespace MediaBrowser.Common.Implementations
RegisterSingleInstance<IApplicationPaths>(ApplicationPaths);
- var networkManager = new NetworkManager();
-
- var serverManager = new ServerManager.ServerManager(this, Kernel, networkManager, JsonSerializer, Logger, ConfigurationManager);
-
- TaskManager = new TaskManager(ApplicationPaths, JsonSerializer, Logger, serverManager);
+ TaskManager = new TaskManager(ApplicationPaths, JsonSerializer, Logger);
RegisterSingleInstance(JsonSerializer);
RegisterSingleInstance(XmlSerializer);
@@ -251,25 +253,22 @@ namespace MediaBrowser.Common.Implementations
RegisterSingleInstance(LogManager);
RegisterSingleInstance(Logger);
- RegisterSingleInstance(Kernel);
-
RegisterSingleInstance(TaskManager);
- RegisterSingleInstance<IWebSocketServer>(() => new AlchemyServer(Logger));
RegisterSingleInstance(ProtobufSerializer);
- RegisterSingleInstance<IUdpServer>(new UdpServer(Logger), false);
HttpClient = new HttpClientManager.HttpClientManager(ApplicationPaths, Logger);
RegisterSingleInstance(HttpClient);
- RegisterSingleInstance<INetworkManager>(networkManager);
- RegisterSingleInstance<IServerManager>(serverManager);
+ NetworkManager = new NetworkManager();
- SecurityManager = new PluginSecurityManager(Kernel, HttpClient, JsonSerializer, ApplicationPaths);
+ RegisterSingleInstance(NetworkManager);
+
+ SecurityManager = new PluginSecurityManager(this, HttpClient, JsonSerializer, ApplicationPaths);
RegisterSingleInstance(SecurityManager);
- PackageManager = new PackageManager(SecurityManager, networkManager, HttpClient, ApplicationPaths, JsonSerializer, Logger);
+ PackageManager = new PackageManager(SecurityManager, NetworkManager, HttpClient, ApplicationPaths, JsonSerializer, Logger);
RegisterSingleInstance(PackageManager);
});
@@ -451,6 +450,34 @@ namespace MediaBrowser.Common.Implementations
}
/// <summary>
+ /// Performs the pending restart.
+ /// </summary>
+ /// <returns>Task.</returns>
+ public void PerformPendingRestart()
+ {
+ if (HasPendingRestart)
+ {
+ Logger.Info("Restarting the application");
+
+ Restart();
+ }
+ else
+ {
+ Logger.Info("PerformPendingRestart - not needed");
+ }
+ }
+
+ /// <summary>
+ /// Notifies that the kernel that a change has been made that requires a restart
+ /// </summary>
+ public void NotifyPendingRestart()
+ {
+ HasPendingRestart = true;
+
+ EventHelper.QueueEventIfNotNull(HasPendingRestartChanged, this, EventArgs.Empty, Logger);
+ }
+
+ /// <summary>
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
/// </summary>
public void Dispose()
@@ -488,7 +515,20 @@ namespace MediaBrowser.Common.Implementations
public abstract Task<CheckForUpdateResult> CheckForApplicationUpdate(CancellationToken cancellationToken, IProgress<double> progress);
- public abstract Task UpdateApplication(PackageVersionInfo package, CancellationToken cancellationToken, IProgress<double> progress);
+ /// <summary>
+ /// Updates the application.
+ /// </summary>
+ /// <param name="package">The package that contains the update</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <param name="progress">The progress.</param>
+ /// <returns>Task.</returns>
+ public async Task UpdateApplication(PackageVersionInfo package, CancellationToken cancellationToken, IProgress<double> progress)
+ {
+ var pkgManager = Resolve<IPackageManager>();
+ await pkgManager.InstallPackage(progress, package, cancellationToken).ConfigureAwait(false);
+
+ EventHelper.QueueEventIfNotNull(ApplicationUpdated, this, new GenericEventArgs<Version> { Argument = package.version }, Logger);
+ }
public abstract void Shutdown();
}
diff --git a/MediaBrowser.Common.Implementations/BaseApplicationPaths.cs b/MediaBrowser.Common.Implementations/BaseApplicationPaths.cs
index d16933616..56e699b35 100644
--- a/MediaBrowser.Common.Implementations/BaseApplicationPaths.cs
+++ b/MediaBrowser.Common.Implementations/BaseApplicationPaths.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Kernel;
using System;
using System.Configuration;
using System.IO;
diff --git a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs
index d2af8fa20..d653a5c9b 100644
--- a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs
+++ b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs
@@ -1,6 +1,5 @@
using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.IO;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.Net;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Net;
@@ -9,7 +8,6 @@ using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
-using System.Net;
using System.Net.Cache;
using System.Net.Http;
using System.Text;
diff --git a/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj b/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj
index 2f3ebdf19..f73dac71f 100644
--- a/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj
+++ b/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj
@@ -35,9 +35,6 @@
<RunPostBuildEvent>Always</RunPostBuildEvent>
</PropertyGroup>
<ItemGroup>
- <Reference Include="Alchemy">
- <HintPath>..\packages\Alchemy.2.2.1\lib\net40\Alchemy.dll</HintPath>
- </Reference>
<Reference Include="Mediabrowser.PluginSecurity">
<HintPath>..\ThirdParty\PluginSecurity\Mediabrowser.PluginSecurity.dll</HintPath>
</Reference>
@@ -47,41 +44,6 @@
<Reference Include="protobuf-net">
<HintPath>..\packages\protobuf-net.2.0.0.621\lib\net40\protobuf-net.dll</HintPath>
</Reference>
- <Reference Include="ServiceStack, Version=3.9.38.0, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\ServiceStack.3.9.38\lib\net35\ServiceStack.dll</HintPath>
- </Reference>
- <Reference Include="ServiceStack.Api.Swagger, Version=3.9.38.0, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\ServiceStack.Api.Swagger.3.9.38\lib\net35\ServiceStack.Api.Swagger.dll</HintPath>
- </Reference>
- <Reference Include="ServiceStack.Common, Version=3.9.38.0, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\ServiceStack.Common.3.9.38\lib\net35\ServiceStack.Common.dll</HintPath>
- </Reference>
- <Reference Include="ServiceStack.Interfaces, Version=3.9.38.0, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\ServiceStack.Common.3.9.38\lib\net35\ServiceStack.Interfaces.dll</HintPath>
- </Reference>
- <Reference Include="ServiceStack.Logging.NLog">
- <HintPath>..\packages\ServiceStack.Logging.NLog.1.0.6.0\lib\net35\ServiceStack.Logging.NLog.dll</HintPath>
- </Reference>
- <Reference Include="ServiceStack.OrmLite, Version=3.9.39.0, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\ServiceStack.OrmLite.SqlServer.3.9.39\lib\ServiceStack.OrmLite.dll</HintPath>
- </Reference>
- <Reference Include="ServiceStack.OrmLite.SqlServer, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\ServiceStack.OrmLite.SqlServer.3.9.39\lib\ServiceStack.OrmLite.SqlServer.dll</HintPath>
- </Reference>
- <Reference Include="ServiceStack.Redis, Version=3.9.38.0, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\ServiceStack.Redis.3.9.38\lib\net35\ServiceStack.Redis.dll</HintPath>
- </Reference>
- <Reference Include="ServiceStack.ServiceInterface, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\ServiceStack.3.9.38\lib\net35\ServiceStack.ServiceInterface.dll</HintPath>
- </Reference>
<Reference Include="ServiceStack.Text, Version=3.9.38.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\ServiceStack.Text.3.9.38\lib\net35\ServiceStack.Text.dll</HintPath>
@@ -97,16 +59,6 @@
<Reference Include="System.Net" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Net.Http.WebRequest" />
- <Reference Include="System.Reactive.Core">
- <HintPath>..\packages\Rx-Core.2.1.30214.0\lib\Net45\System.Reactive.Core.dll</HintPath>
- </Reference>
- <Reference Include="System.Reactive.Interfaces">
- <HintPath>..\packages\Rx-Interfaces.2.1.30214.0\lib\Net45\System.Reactive.Interfaces.dll</HintPath>
- </Reference>
- <Reference Include="System.Reactive.Linq">
- <HintPath>..\packages\Rx-Linq.2.1.30214.0\lib\Net45\System.Reactive.Linq.dll</HintPath>
- </Reference>
- <Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
@@ -117,12 +69,6 @@
<Compile Include="BaseApplicationPaths.cs" />
<Compile Include="Configuration\BaseConfigurationManager.cs" />
<Compile Include="HttpClientManager\HttpClientManager.cs" />
- <Compile Include="HttpServer\BaseRestService.cs" />
- <Compile Include="HttpServer\HttpServer.cs" />
- <Compile Include="HttpServer\NativeWebSocket.cs" />
- <Compile Include="HttpServer\ServerFactory.cs" />
- <Compile Include="HttpServer\StreamWriter.cs" />
- <Compile Include="HttpServer\SwaggerService.cs" />
<Compile Include="Logging\LogHelper.cs" />
<Compile Include="Logging\NLogger.cs" />
<Compile Include="Logging\NlogManager.cs" />
@@ -140,12 +86,8 @@
<Compile Include="Serialization\JsonSerializer.cs" />
<Compile Include="Serialization\ProtobufSerializer.cs" />
<Compile Include="Serialization\XmlSerializer.cs" />
- <Compile Include="ServerManager\ServerManager.cs" />
- <Compile Include="ServerManager\WebSocketConnection.cs" />
- <Compile Include="Udp\UdpServer.cs" />
+ <Compile Include="Updates\ApplicationUpdater.cs" />
<Compile Include="Updates\PackageManager.cs" />
- <Compile Include="WebSocket\AlchemyServer.cs" />
- <Compile Include="WebSocket\AlchemyWebSocket.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
@@ -159,52 +101,6 @@
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
- <EmbeddedResource Include="ServerManager\RegisterServer.bat" />
- </ItemGroup>
- <ItemGroup>
- <Content Include="README.txt" />
- <Content Include="swagger-ui\css\screen.css">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="swagger-ui\images\pet_store_api.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="swagger-ui\images\wordnik_api.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="swagger-ui\index.html">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="swagger-ui\lib\backbone-min.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="swagger-ui\lib\handlebars.runtime-1.0.0.beta.6.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="swagger-ui\lib\jquery.ba-bbq.min.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="swagger-ui\lib\jquery.min.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="swagger-ui\lib\jquery.slideto.min.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="swagger-ui\lib\jquery.wiggle.min.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="swagger-ui\lib\swagger.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="swagger-ui\lib\underscore-min.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="swagger-ui\swagger-ui.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="swagger-ui\swagger-ui.min.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
index d5adf3265..f57d48f07 100644
--- a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
+++ b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
@@ -1,6 +1,5 @@
using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
@@ -50,12 +49,6 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
private ITaskManager TaskManager { get; set; }
/// <summary>
- /// Gets or sets the server manager.
- /// </summary>
- /// <value>The server manager.</value>
- private IServerManager ServerManager { get; set; }
-
- /// <summary>
/// Initializes a new instance of the <see cref="ScheduledTaskWorker" /> class.
/// </summary>
/// <param name="scheduledTask">The scheduled task.</param>
@@ -64,7 +57,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
/// <param name="jsonSerializer">The json serializer.</param>
/// <param name="logger">The logger.</param>
/// <param name="serverManager">The server manager.</param>
- public ScheduledTaskWorker(IScheduledTask scheduledTask, IApplicationPaths applicationPaths, ITaskManager taskManager, IJsonSerializer jsonSerializer, ILogger logger, IServerManager serverManager)
+ public ScheduledTaskWorker(IScheduledTask scheduledTask, IApplicationPaths applicationPaths, ITaskManager taskManager, IJsonSerializer jsonSerializer, ILogger logger)
{
if (scheduledTask == null)
{
@@ -86,17 +79,12 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
{
throw new ArgumentNullException("logger");
}
- if (serverManager == null)
- {
- throw new ArgumentNullException("serverManager");
- }
ScheduledTask = scheduledTask;
ApplicationPaths = applicationPaths;
TaskManager = taskManager;
JsonSerializer = jsonSerializer;
Logger = logger;
- ServerManager = serverManager;
ReloadTriggerEvents(true);
}
@@ -331,6 +319,8 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
Logger.Info("Executing {0}", Name);
+ ((TaskManager)TaskManager).OnTaskExecuting(ScheduledTask);
+
var progress = new Progress<double>();
progress.ProgressChanged += progress_ProgressChanged;
@@ -338,8 +328,6 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
TaskCompletionStatus status;
CurrentExecutionStartTime = DateTime.UtcNow;
- ServerManager.SendWebSocketMessage("ScheduledTaskBeginExecute", Name);
-
try
{
await ExecuteTask(CurrentCancellationTokenSource.Token, progress).ConfigureAwait(false);
@@ -517,8 +505,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
/// <param name="startTime">The start time.</param>
/// <param name="endTime">The end time.</param>
/// <param name="status">The status.</param>
- /// <param name="sendNotification">if set to <c>true</c> [send notification].</param>
- private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status, bool sendNotification = true)
+ private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status)
{
var elapsedTime = endTime - startTime;
@@ -537,10 +524,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
LastExecutionResult = result;
- if (sendNotification)
- {
- ServerManager.SendWebSocketMessage("ScheduledTaskEndExecute", result);
- }
+ ((TaskManager) TaskManager).OnTaskCompleted(ScheduledTask, result);
}
/// <summary>
@@ -564,7 +548,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
if (State == TaskState.Running)
{
- OnTaskCompleted(CurrentExecutionStartTime, DateTime.UtcNow, TaskCompletionStatus.Aborted, false);
+ OnTaskCompleted(CurrentExecutionStartTime, DateTime.UtcNow, TaskCompletionStatus.Aborted);
}
if (CurrentCancellationTokenSource != null)
diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs
index 946887303..61e1f6329 100644
--- a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs
+++ b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs
@@ -1,5 +1,6 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Kernel;
+using System.Threading.Tasks;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Events;
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
@@ -15,6 +16,9 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
/// </summary>
public class TaskManager : ITaskManager
{
+ public event EventHandler<EventArgs> TaskExecuting;
+ public event EventHandler<GenericEventArgs<TaskResult>> TaskCompleted;
+
/// <summary>
/// Gets the list of Scheduled Tasks
/// </summary>
@@ -45,25 +49,17 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
private ILogger Logger { get; set; }
/// <summary>
- /// Gets or sets the server manager.
- /// </summary>
- /// <value>The server manager.</value>
- private IServerManager ServerManager { get; set; }
-
- /// <summary>
/// Initializes a new instance of the <see cref="TaskManager" /> class.
/// </summary>
/// <param name="applicationPaths">The application paths.</param>
/// <param name="jsonSerializer">The json serializer.</param>
/// <param name="logger">The logger.</param>
- /// <param name="serverManager">The server manager.</param>
/// <exception cref="System.ArgumentException">kernel</exception>
- public TaskManager(IApplicationPaths applicationPaths, IJsonSerializer jsonSerializer, ILogger logger, IServerManager serverManager)
+ public TaskManager(IApplicationPaths applicationPaths, IJsonSerializer jsonSerializer, ILogger logger)
{
ApplicationPaths = applicationPaths;
JsonSerializer = jsonSerializer;
Logger = logger;
- ServerManager = serverManager;
ScheduledTasks = new IScheduledTaskWorker[] { };
}
@@ -75,7 +71,9 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
public void CancelIfRunningAndQueue<T>()
where T : IScheduledTask
{
- ScheduledTasks.First(t => t.ScheduledTask.GetType() == typeof(T)).CancelIfRunning();
+ var task = ScheduledTasks.First(t => t.ScheduledTask.GetType() == typeof(T));
+ ((ScheduledTaskWorker)task).CancelIfRunning();
+
QueueScheduledTask<T>();
}
@@ -101,7 +99,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
QueueScheduledTask(scheduledTask);
}
-
+
/// <summary>
/// Queues the scheduled task.
/// </summary>
@@ -115,7 +113,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
// If it's idle just execute immediately
if (task.State == TaskState.Idle)
{
- task.Execute();
+ ((ScheduledTaskWorker)task).Execute();
return;
}
@@ -132,31 +130,6 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
}
/// <summary>
- /// Called when [task completed].
- /// </summary>
- /// <param name="task">The task.</param>
- public void OnTaskCompleted(IScheduledTask task)
- {
- // Execute queued tasks
- lock (_taskQueue)
- {
- var copy = _taskQueue.ToList();
-
- foreach (var type in copy)
- {
- var scheduledTask = ScheduledTasks.First(t => t.GetType() == type);
-
- if (scheduledTask.State == TaskState.Idle)
- {
- scheduledTask.Execute();
-
- _taskQueue.Remove(type);
- }
- }
- }
- }
-
- /// <summary>
/// Adds the tasks.
/// </summary>
/// <param name="tasks">The tasks.</param>
@@ -164,7 +137,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
{
var myTasks = ScheduledTasks.ToList();
- myTasks.AddRange(tasks.Select(t => new ScheduledTaskWorker(t, ApplicationPaths, this, JsonSerializer, Logger, ServerManager)));
+ myTasks.AddRange(tasks.Select(t => new ScheduledTaskWorker(t, ApplicationPaths, this, JsonSerializer, Logger)));
ScheduledTasks = myTasks.ToArray();
}
@@ -189,5 +162,25 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
task.Dispose();
}
}
+
+ public void Cancel(IScheduledTaskWorker task)
+ {
+ ((ScheduledTaskWorker)task).Cancel();
+ }
+
+ public Task Execute(IScheduledTaskWorker task)
+ {
+ return ((ScheduledTaskWorker)task).Execute();
+ }
+
+ internal void OnTaskExecuting(IScheduledTask task)
+ {
+ EventHelper.QueueEventIfNotNull(TaskExecuting, task, EventArgs.Empty, Logger);
+ }
+
+ internal void OnTaskCompleted(IScheduledTask task, TaskResult result)
+ {
+ EventHelper.QueueEventIfNotNull(TaskExecuting, task, new GenericEventArgs<TaskResult> { Argument = result }, Logger);
+ }
}
}
diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/SystemUpdateTask.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/SystemUpdateTask.cs
index 7da1b9c5a..e74693f93 100644
--- a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/SystemUpdateTask.cs
+++ b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/SystemUpdateTask.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Model.Logging;
using System;
@@ -31,24 +30,16 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks
private ILogger Logger { get; set; }
/// <summary>
- /// Gets or sets the kernel.
- /// </summary>
- /// <value>The kernel.</value>
- private IKernel Kernel { get; set; }
-
- /// <summary>
/// Initializes a new instance of the <see cref="SystemUpdateTask" /> class.
/// </summary>
/// <param name="appHost">The app host.</param>
/// <param name="configurationManager">The configuration manager.</param>
/// <param name="logger">The logger.</param>
- /// <param name="kernel">The kernel.</param>
- public SystemUpdateTask(IApplicationHost appHost, IConfigurationManager configurationManager, ILogger logger, IKernel kernel)
+ public SystemUpdateTask(IApplicationHost appHost, IConfigurationManager configurationManager, ILogger logger)
{
_appHost = appHost;
ConfigurationManager = configurationManager;
Logger = logger;
- Kernel = kernel;
}
/// <summary>
@@ -110,8 +101,6 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks
// Release the event handler
innerProgress.ProgressChanged -= innerProgressHandler;
-
- Kernel.OnApplicationUpdated(updateInfo.AvailableVersion);
}
else
{
diff --git a/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs b/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs
index d1a4940ef..0404ee7fe 100644
--- a/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs
+++ b/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs
@@ -3,7 +3,6 @@ using MediaBrowser.Common.Security;
using MediaBrowser.Model.Serialization;
using Mediabrowser.Model.Entities;
using Mediabrowser.PluginSecurity;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.Net;
using System;
using System.Threading;
@@ -44,29 +43,19 @@ namespace MediaBrowser.Common.Implementations.Security
private IHttpClient _httpClient;
private IJsonSerializer _jsonSerializer;
-
- /// <summary>
- /// The _kernel
- /// </summary>
- private readonly IKernel _kernel;
+ private IApplicationHost _appHost;
/// <summary>
/// Initializes a new instance of the <see cref="PluginSecurityManager" /> class.
/// </summary>
- /// <param name="kernel">The kernel.</param>
- public PluginSecurityManager(IKernel kernel, IHttpClient httpClient, IJsonSerializer jsonSerializer, IApplicationPaths appPaths)
+ public PluginSecurityManager(IApplicationHost appHost, IHttpClient httpClient, IJsonSerializer jsonSerializer, IApplicationPaths appPaths)
{
- if (kernel == null)
- {
- throw new ArgumentNullException("kernel");
- }
-
if (httpClient == null)
{
throw new ArgumentNullException("httpClient");
}
-
- _kernel = kernel;
+
+ _appHost = appHost;
_httpClient = httpClient;
_jsonSerializer = jsonSerializer;
MBRegistration.Init(appPaths);
@@ -98,7 +87,7 @@ namespace MediaBrowser.Common.Implementations.Security
// Clear this so it will re-evaluate
ResetSupporterInfo();
// And we'll need to restart to re-evaluate the status of plug-ins
- _kernel.NotifyPendingRestart();
+ _appHost.NotifyPendingRestart();
}
}
@@ -115,7 +104,7 @@ namespace MediaBrowser.Common.Implementations.Security
{
MBRegistration.LegacyKey = value;
// And we'll need to restart to re-evaluate the status of plug-ins
- _kernel.NotifyPendingRestart();
+ _appHost.NotifyPendingRestart();
}
}
diff --git a/MediaBrowser.Common/Updates/ApplicationUpdater.cs b/MediaBrowser.Common.Implementations/Updates/ApplicationUpdater.cs
index a796e1bd2..3b06f2006 100644
--- a/MediaBrowser.Common/Updates/ApplicationUpdater.cs
+++ b/MediaBrowser.Common.Implementations/Updates/ApplicationUpdater.cs
@@ -1,14 +1,8 @@
-using System;
-using System.Collections.Generic;
+using MediaBrowser.Common.Configuration;
using System.Diagnostics;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using System.IO;
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Kernel;
-namespace MediaBrowser.Common.Updates
+namespace MediaBrowser.Common.Implementations.Updates
{
public enum MBApplication
{
diff --git a/MediaBrowser.Common.Implementations/packages.config b/MediaBrowser.Common.Implementations/packages.config
index 2d6276a8e..0c064f3e4 100644
--- a/MediaBrowser.Common.Implementations/packages.config
+++ b/MediaBrowser.Common.Implementations/packages.config
@@ -1,17 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
- <package id="Alchemy" version="2.2.1" targetFramework="net45" />
<package id="NLog" version="2.0.0.2000" targetFramework="net45" />
<package id="protobuf-net" version="2.0.0.621" targetFramework="net45" />
- <package id="Rx-Core" version="2.1.30214.0" targetFramework="net45" />
- <package id="Rx-Interfaces" version="2.1.30214.0" targetFramework="net45" />
- <package id="Rx-Linq" version="2.1.30214.0" targetFramework="net45" />
- <package id="ServiceStack" version="3.9.38" targetFramework="net45" />
- <package id="ServiceStack.Api.Swagger" version="3.9.38" targetFramework="net45" />
- <package id="ServiceStack.Common" version="3.9.38" targetFramework="net45" />
- <package id="ServiceStack.Logging.NLog" version="1.0.6.0" targetFramework="net45" />
- <package id="ServiceStack.OrmLite.SqlServer" version="3.9.39" targetFramework="net45" />
- <package id="ServiceStack.Redis" version="3.9.38" targetFramework="net45" />
<package id="ServiceStack.Text" version="3.9.38" targetFramework="net45" />
<package id="SimpleInjector" version="2.0.0-beta5" targetFramework="net45" />
</packages> \ No newline at end of file
diff --git a/MediaBrowser.Common/IApplicationHost.cs b/MediaBrowser.Common/IApplicationHost.cs
index 4bd90e531..8165f7723 100644
--- a/MediaBrowser.Common/IApplicationHost.cs
+++ b/MediaBrowser.Common/IApplicationHost.cs
@@ -13,6 +13,27 @@ namespace MediaBrowser.Common
public interface IApplicationHost
{
/// <summary>
+ /// Performs the pending restart.
+ /// </summary>
+ void PerformPendingRestart();
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance has pending kernel reload.
+ /// </summary>
+ /// <value><c>true</c> if this instance has pending kernel reload; otherwise, <c>false</c>.</value>
+ bool HasPendingRestart { get; }
+
+ /// <summary>
+ /// Occurs when [has pending restart changed].
+ /// </summary>
+ event EventHandler HasPendingRestartChanged;
+
+ /// <summary>
+ /// Notifies the pending restart.
+ /// </summary>
+ void NotifyPendingRestart();
+
+ /// <summary>
/// Restarts this instance.
/// </summary>
void Restart();
diff --git a/MediaBrowser.Common/Kernel/BaseKernel.cs b/MediaBrowser.Common/Kernel/BaseKernel.cs
deleted file mode 100644
index cf8133e97..000000000
--- a/MediaBrowser.Common/Kernel/BaseKernel.cs
+++ /dev/null
@@ -1,167 +0,0 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Events;
-using MediaBrowser.Model.Logging;
-using MediaBrowser.Model.System;
-using System;
-
-namespace MediaBrowser.Common.Kernel
-{
- /// <summary>
- /// Represents a shared base kernel for both the Ui and server apps
- /// </summary>
- public abstract class BaseKernel : IKernel
- {
- /// <summary>
- /// Occurs when [has pending restart changed].
- /// </summary>
- public event EventHandler HasPendingRestartChanged;
-
- #region ApplicationUpdated Event
- /// <summary>
- /// Occurs when [application updated].
- /// </summary>
- public event EventHandler<GenericEventArgs<Version>> ApplicationUpdated;
- /// <summary>
- /// Called when [application updated].
- /// </summary>
- /// <param name="newVersion">The new version.</param>
- public void OnApplicationUpdated(Version newVersion)
- {
- EventHelper.QueueEventIfNotNull(ApplicationUpdated, this, new GenericEventArgs<Version> { Argument = newVersion }, Logger);
-
- NotifyPendingRestart();
- }
- #endregion
-
- /// <summary>
- /// Gets or sets a value indicating whether this instance has changes that require the entire application to restart.
- /// </summary>
- /// <value><c>true</c> if this instance has pending application restart; otherwise, <c>false</c>.</value>
- public bool HasPendingRestart { get; private set; }
-
- /// <summary>
- /// Gets the UDP server port number.
- /// This can't be configurable because then the user would have to configure their client to discover the server.
- /// </summary>
- /// <value>The UDP server port number.</value>
- public abstract int UdpServerPortNumber { get; }
-
- /// <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.CommonConfiguration.HttpServerPortNumber + "/" + WebApplicationName + "/";
- }
- }
-
- /// <summary>
- /// Gets the kernel context. Subclasses will have to override.
- /// </summary>
- /// <value>The kernel context.</value>
- public abstract KernelContext KernelContext { get; }
-
- /// <summary>
- /// Gets the logger.
- /// </summary>
- /// <value>The logger.</value>
- protected ILogger Logger { get; private set; }
-
- /// <summary>
- /// Gets or sets the application host.
- /// </summary>
- /// <value>The application host.</value>
- protected IApplicationHost ApplicationHost { get; private set; }
-
- private readonly IConfigurationManager _configurationManager;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="BaseKernel" /> class.
- /// </summary>
- /// <param name="appHost">The app host.</param>
- /// <param name="logManager">The log manager.</param>
- protected BaseKernel(IApplicationHost appHost, ILogManager logManager, IConfigurationManager configurationManager)
- {
- ApplicationHost = appHost;
- _configurationManager = configurationManager;
- Logger = logManager.GetLogger("Kernel");
- }
-
- /// <summary>
- /// Initializes the Kernel
- /// </summary>
- /// <returns>Task.</returns>
- public void Init()
- {
- ReloadInternal();
-
- Logger.Info("Kernel.Init Complete");
- }
-
- /// <summary>
- /// Performs initializations that can be reloaded at anytime
- /// </summary>
- /// <returns>Task.</returns>
- protected virtual void ReloadInternal()
- {
- }
-
- /// <summary>
- /// Notifies that the kernel that a change has been made that requires a restart
- /// </summary>
- public void NotifyPendingRestart()
- {
- HasPendingRestart = true;
-
- EventHelper.QueueEventIfNotNull(HasPendingRestartChanged, this, EventArgs.Empty, Logger);
- }
-
- /// <summary>
- /// Performs the pending restart.
- /// </summary>
- /// <returns>Task.</returns>
- public void PerformPendingRestart()
- {
- if (HasPendingRestart)
- {
- Logger.Info("Restarting the application");
-
- ApplicationHost.Restart();
- }
- else
- {
- Logger.Info("PerformPendingRestart - not needed");
- }
- }
-
- /// <summary>
- /// Gets the system status.
- /// </summary>
- /// <returns>SystemInfo.</returns>
- public virtual SystemInfo GetSystemInfo()
- {
- return new SystemInfo
- {
- HasPendingRestart = HasPendingRestart,
- Version = ApplicationHost.ApplicationVersion.ToString(),
- IsNetworkDeployed = ApplicationHost.CanSelfUpdate,
- WebSocketPortNumber = ApplicationHost.Resolve<IServerManager>().WebSocketPortNumber,
- SupportsNativeWebSocket = ApplicationHost.Resolve<IServerManager>().SupportsNativeWebSocket,
- FailedPluginAssemblies = ApplicationHost.FailedAssemblies.ToArray()
- };
- }
- }
-}
diff --git a/MediaBrowser.Common/Kernel/IKernel.cs b/MediaBrowser.Common/Kernel/IKernel.cs
deleted file mode 100644
index 51677677a..000000000
--- a/MediaBrowser.Common/Kernel/IKernel.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using MediaBrowser.Model.System;
-using System;
-
-namespace MediaBrowser.Common.Kernel
-{
- /// <summary>
- /// Interface IKernel
- /// </summary>
- public interface IKernel
- {
- /// <summary>
- /// Occurs when [has pending restart changed].
- /// </summary>
- event EventHandler HasPendingRestartChanged;
-
- /// <summary>
- /// Gets the kernel context.
- /// </summary>
- /// <value>The kernel context.</value>
- KernelContext KernelContext { get; }
-
- /// <summary>
- /// Inits this instance.
- /// </summary>
- /// <returns>Task.</returns>
- void Init();
-
- /// <summary>
- /// Gets or sets a value indicating whether this instance has pending kernel reload.
- /// </summary>
- /// <value><c>true</c> if this instance has pending kernel reload; otherwise, <c>false</c>.</value>
- bool HasPendingRestart { get; }
-
- /// <summary>
- /// Gets the system status.
- /// </summary>
- /// <returns>SystemInfo.</returns>
- SystemInfo GetSystemInfo();
-
- /// <summary>
- /// Called when [application updated].
- /// </summary>
- /// <param name="newVersion">The new version.</param>
- void OnApplicationUpdated(Version newVersion);
-
- /// <summary>
- /// Gets the name of the web application.
- /// </summary>
- /// <value>The name of the web application.</value>
- string WebApplicationName { get; }
-
- /// <summary>
- /// Performs the pending restart.
- /// </summary>
- void PerformPendingRestart();
-
- /// <summary>
- /// Gets the UDP server port number.
- /// </summary>
- /// <value>The UDP server port number.</value>
- int UdpServerPortNumber { get; }
-
- /// <summary>
- /// Gets the HTTP server URL prefix.
- /// </summary>
- /// <value>The HTTP server URL prefix.</value>
- string HttpServerUrlPrefix { get; }
-
- /// <summary>
- /// Notifies the pending restart.
- /// </summary>
- void NotifyPendingRestart();
- }
-}
diff --git a/MediaBrowser.Common/Kernel/KernelContext.cs b/MediaBrowser.Common/Kernel/KernelContext.cs
deleted file mode 100644
index 1f84c0242..000000000
--- a/MediaBrowser.Common/Kernel/KernelContext.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-
-namespace MediaBrowser.Common.Kernel
-{
- /// <summary>
- /// Enum KernelContext
- /// </summary>
- public enum KernelContext
- {
- /// <summary>
- /// The server
- /// </summary>
- Server,
- /// <summary>
- /// The UI
- /// </summary>
- Ui
- }
-}
diff --git a/MediaBrowser.Common/MediaBrowser.Common.csproj b/MediaBrowser.Common/MediaBrowser.Common.csproj
index 8b7aae9cb..578a76a30 100644
--- a/MediaBrowser.Common/MediaBrowser.Common.csproj
+++ b/MediaBrowser.Common/MediaBrowser.Common.csproj
@@ -59,12 +59,11 @@
<Compile Include="IO\IIsoMount.cs" />
<Compile Include="IO\ProgressStream.cs" />
<Compile Include="IO\StreamDefaults.cs" />
- <Compile Include="Kernel\BasePeriodicWebSocketListener.cs" />
+ <Compile Include="Net\BasePeriodicWebSocketListener.cs" />
<Compile Include="Configuration\IApplicationPaths.cs" />
- <Compile Include="Kernel\IServerManager.cs" />
- <Compile Include="Kernel\IWebSocketListener.cs" />
+ <Compile Include="Net\IServerManager.cs" />
+ <Compile Include="Net\IWebSocketListener.cs" />
<Compile Include="IApplicationHost.cs" />
- <Compile Include="Kernel\IKernel.cs" />
<Compile Include="Net\IHttpClient.cs" />
<Compile Include="Net\IHttpServer.cs" />
<Compile Include="Net\INetworkManager.cs" />
@@ -94,15 +93,13 @@
<Compile Include="ScheduledTasks\ScheduledTaskHelpers.cs" />
<Compile Include="ScheduledTasks\StartupTrigger.cs" />
<Compile Include="ScheduledTasks\SystemEventTrigger.cs" />
- <Compile Include="Kernel\BaseKernel.cs" />
- <Compile Include="Kernel\KernelContext.cs" />
<Compile Include="Plugins\BasePlugin.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ScheduledTasks\DailyTrigger.cs" />
<Compile Include="ScheduledTasks\IntervalTrigger.cs" />
+ <Compile Include="ScheduledTasks\TaskCompletionEventArgs.cs" />
<Compile Include="ScheduledTasks\WeeklyTrigger.cs" />
<Compile Include="Security\ISecurityManager.cs" />
- <Compile Include="Updates\ApplicationUpdater.cs" />
<Compile Include="Updates\IPackageManager.cs" />
</ItemGroup>
<ItemGroup>
diff --git a/MediaBrowser.Common/Kernel/BasePeriodicWebSocketListener.cs b/MediaBrowser.Common/Net/BasePeriodicWebSocketListener.cs
index 6a44cf372..9207ffe1d 100644
--- a/MediaBrowser.Common/Kernel/BasePeriodicWebSocketListener.cs
+++ b/MediaBrowser.Common/Net/BasePeriodicWebSocketListener.cs
@@ -1,12 +1,11 @@
-using MediaBrowser.Common.Net;
-using MediaBrowser.Model.Logging;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-namespace MediaBrowser.Common.Kernel
+namespace MediaBrowser.Common.Net
{
/// <summary>
/// Starts sending data over a web socket periodically when a message is received, and then stops when a corresponding stop message is received
diff --git a/MediaBrowser.Common/Kernel/IServerManager.cs b/MediaBrowser.Common/Net/IServerManager.cs
index a8c6a253a..0f95c775e 100644
--- a/MediaBrowser.Common/Kernel/IServerManager.cs
+++ b/MediaBrowser.Common/Net/IServerManager.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
-namespace MediaBrowser.Common.Kernel
+namespace MediaBrowser.Common.Net
{
public interface IServerManager : IDisposable
{
diff --git a/MediaBrowser.Common/Kernel/IWebSocketListener.cs b/MediaBrowser.Common/Net/IWebSocketListener.cs
index b04bb6885..4b6c4111d 100644
--- a/MediaBrowser.Common/Kernel/IWebSocketListener.cs
+++ b/MediaBrowser.Common/Net/IWebSocketListener.cs
@@ -1,7 +1,6 @@
-using MediaBrowser.Common.Net;
-using System.Threading.Tasks;
+using System.Threading.Tasks;
-namespace MediaBrowser.Common.Kernel
+namespace MediaBrowser.Common.Net
{
/// <summary>
///This is an interface for listening to messages coming through a web socket connection
diff --git a/MediaBrowser.Common/ScheduledTasks/IScheduledTaskWorker.cs b/MediaBrowser.Common/ScheduledTasks/IScheduledTaskWorker.cs
index 31cb4bcb8..2fa76472d 100644
--- a/MediaBrowser.Common/ScheduledTasks/IScheduledTaskWorker.cs
+++ b/MediaBrowser.Common/ScheduledTasks/IScheduledTaskWorker.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Model.Tasks;
using System;
using System.Collections.Generic;
-using System.Threading.Tasks;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -64,23 +63,5 @@ namespace MediaBrowser.Common.ScheduledTasks
/// </summary>
/// <value>The unique id.</value>
Guid Id { get; }
-
- /// <summary>
- /// Executes the task
- /// </summary>
- /// <returns>Task.</returns>
- /// <exception cref="System.InvalidOperationException">Cannot execute a Task that is already running</exception>
- Task Execute();
-
- /// <summary>
- /// Stops the task if it is currently executing
- /// </summary>
- /// <exception cref="System.InvalidOperationException">Cannot cancel a Task unless it is in the Running state.</exception>
- void Cancel();
-
- /// <summary>
- /// Cancels if running.
- /// </summary>
- void CancelIfRunning();
}
} \ No newline at end of file
diff --git a/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs b/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs
index d06f1f194..ec0e7c1c9 100644
--- a/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs
+++ b/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs
@@ -1,5 +1,8 @@
-using System;
+using MediaBrowser.Common.Events;
+using MediaBrowser.Model.Tasks;
+using System;
using System.Collections.Generic;
+using System.Threading.Tasks;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -36,5 +39,11 @@ namespace MediaBrowser.Common.ScheduledTasks
/// </summary>
/// <param name="tasks">The tasks.</param>
void AddTasks(IEnumerable<IScheduledTask> tasks);
+
+ void Cancel(IScheduledTaskWorker task);
+ Task Execute(IScheduledTaskWorker task);
+
+ event EventHandler<EventArgs> TaskExecuting;
+ event EventHandler<GenericEventArgs<TaskResult>> TaskCompleted;
}
} \ No newline at end of file
diff --git a/MediaBrowser.Common/ScheduledTasks/TaskCompletionEventArgs.cs b/MediaBrowser.Common/ScheduledTasks/TaskCompletionEventArgs.cs
new file mode 100644
index 000000000..8aab6b50d
--- /dev/null
+++ b/MediaBrowser.Common/ScheduledTasks/TaskCompletionEventArgs.cs
@@ -0,0 +1,12 @@
+using MediaBrowser.Model.Tasks;
+using System;
+
+namespace MediaBrowser.Common.ScheduledTasks
+{
+ public class TaskCompletionEventArgs : EventArgs
+ {
+ public IScheduledTask Task { get; set; }
+
+ public TaskResult Result { get; set; }
+ }
+}
diff --git a/MediaBrowser.Controller/BaseManager.cs b/MediaBrowser.Controller/BaseManager.cs
deleted file mode 100644
index 99395a50e..000000000
--- a/MediaBrowser.Controller/BaseManager.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-using MediaBrowser.Common.Kernel;
-using System;
-
-namespace MediaBrowser.Controller
-{
- /// <summary>
- /// Class BaseManager
- /// </summary>
- /// <typeparam name="TKernelType">The type of the T kernel type.</typeparam>
- public abstract class BaseManager<TKernelType> : IDisposable
- where TKernelType : class, IKernel
- {
- /// <summary>
- /// The _kernel
- /// </summary>
- protected readonly TKernelType Kernel;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="BaseManager" /> class.
- /// </summary>
- /// <param name="kernel">The kernel.</param>
- /// <exception cref="System.ArgumentNullException">kernel</exception>
- protected BaseManager(TKernelType kernel)
- {
- if (kernel == null)
- {
- throw new ArgumentNullException("kernel");
- }
-
- Kernel = kernel;
- }
-
- /// <summary>
- /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
- /// </summary>
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources.
- /// </summary>
- /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected virtual void Dispose(bool dispose)
- {
- }
- }
-}
diff --git a/MediaBrowser.Controller/IO/FileSystemManager.cs b/MediaBrowser.Controller/IO/FileSystemManager.cs
index 4afc8265f..463672ece 100644
--- a/MediaBrowser.Controller/IO/FileSystemManager.cs
+++ b/MediaBrowser.Controller/IO/FileSystemManager.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Common.IO;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
@@ -17,7 +16,7 @@ namespace MediaBrowser.Controller.IO
/// modify the directories that the system is watching for changes should use the methods of
/// this class to do so. This way we can have the watchers correctly respond to only external changes.
/// </summary>
- public class FileSystemManager : BaseManager<Kernel>
+ public class FileSystemManager : IDisposable
{
/// <summary>
/// Gets or sets the directory watchers.
@@ -26,22 +25,14 @@ namespace MediaBrowser.Controller.IO
private DirectoryWatchers DirectoryWatchers { get; set; }
/// <summary>
- /// The _logger
- /// </summary>
- private readonly ILogger _logger;
-
- /// <summary>
/// Initializes a new instance of the <see cref="FileSystemManager" /> class.
/// </summary>
- /// <param name="kernel">The kernel.</param>
/// <param name="logManager">The log manager.</param>
/// <param name="taskManager">The task manager.</param>
/// <param name="libraryManager">The library manager.</param>
/// <param name="configurationManager">The configuration manager.</param>
- public FileSystemManager(Kernel kernel, ILogManager logManager, ITaskManager taskManager, ILibraryManager libraryManager, IServerConfigurationManager configurationManager)
- : base(kernel)
+ public FileSystemManager(ILogManager logManager, ITaskManager taskManager, ILibraryManager libraryManager, IServerConfigurationManager configurationManager)
{
- _logger = logManager.GetLogger("FileSystemManager");
DirectoryWatchers = new DirectoryWatchers(logManager, taskManager, libraryManager, configurationManager);
}
@@ -113,14 +104,17 @@ namespace MediaBrowser.Controller.IO
/// Releases unmanaged and - optionally - managed resources.
/// </summary>
/// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected override void Dispose(bool dispose)
+ protected virtual void Dispose(bool dispose)
{
if (dispose)
{
DirectoryWatchers.Dispose();
}
+ }
- base.Dispose(dispose);
+ public void Dispose()
+ {
+ Dispose(true);
}
}
}
diff --git a/MediaBrowser.Controller/IServerApplicationHost.cs b/MediaBrowser.Controller/IServerApplicationHost.cs
new file mode 100644
index 000000000..d64067f43
--- /dev/null
+++ b/MediaBrowser.Controller/IServerApplicationHost.cs
@@ -0,0 +1,10 @@
+using MediaBrowser.Common;
+using MediaBrowser.Model.System;
+
+namespace MediaBrowser.Controller
+{
+ public interface IServerApplicationHost : IApplicationHost
+ {
+ SystemInfo GetSystemInfo();
+ }
+}
diff --git a/MediaBrowser.Controller/IServerApplicationPaths.cs b/MediaBrowser.Controller/IServerApplicationPaths.cs
index b30120d83..c9bac4dd2 100644
--- a/MediaBrowser.Controller/IServerApplicationPaths.cs
+++ b/MediaBrowser.Controller/IServerApplicationPaths.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Kernel;
namespace MediaBrowser.Controller
{
diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs
index 2cf6fd188..40c59c8cf 100644
--- a/MediaBrowser.Controller/Kernel.cs
+++ b/MediaBrowser.Controller/Kernel.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Common;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Drawing;
@@ -11,11 +10,9 @@ using MediaBrowser.Controller.MediaInfo;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Controller.Providers;
-using MediaBrowser.Controller.Updates;
using MediaBrowser.Controller.Weather;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
-using MediaBrowser.Model.System;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -27,7 +24,7 @@ namespace MediaBrowser.Controller
/// <summary>
/// Class Kernel
/// </summary>
- public class Kernel : BaseKernel, IDisposable
+ public class Kernel : IDisposable
{
/// <summary>
/// Gets the instance.
@@ -60,12 +57,25 @@ namespace MediaBrowser.Controller
public ProviderManager ProviderManager { get; private set; }
/// <summary>
- /// Gets the kernel context.
+ /// 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 kernel context.</value>
- public override KernelContext KernelContext
+ /// <value>The name of the web application.</value>
+ public string WebApplicationName
{
- get { return KernelContext.Server; }
+ 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>
@@ -145,7 +155,7 @@ namespace MediaBrowser.Controller
/// Gets the UDP server port number.
/// </summary>
/// <value>The UDP server port number.</value>
- public override int UdpServerPortNumber
+ public int UdpServerPortNumber
{
get { return 7359; }
}
@@ -154,6 +164,7 @@ namespace MediaBrowser.Controller
private readonly IServerConfigurationManager _configurationManager;
private readonly ILogManager _logManager;
+ private IApplicationHost ApplicationHost { get; set; }
/// <summary>
/// Creates a kernel based on a Data path, which is akin to our current programdata path
@@ -164,10 +175,10 @@ namespace MediaBrowser.Controller
/// <param name="configurationManager">The configuration manager.</param>
/// <exception cref="System.ArgumentNullException">isoManager</exception>
public Kernel(IApplicationHost appHost, IXmlSerializer xmlSerializer, ILogManager logManager, IServerConfigurationManager configurationManager)
- : base(appHost, logManager, configurationManager)
{
Instance = this;
+ ApplicationHost = appHost;
_configurationManager = configurationManager;
_xmlSerializer = xmlSerializer;
_logManager = logManager;
@@ -207,10 +218,8 @@ namespace MediaBrowser.Controller
/// Performs initializations that can be reloaded at anytime
/// </summary>
/// <returns>Task.</returns>
- protected override async void ReloadInternal()
+ public async Task Init()
{
- base.ReloadInternal();
-
FindParts();
await LoadRepositories().ConfigureAwait(false);
@@ -306,27 +315,8 @@ namespace MediaBrowser.Controller
{
DisposeFileSystemManager();
- FileSystemManager = new FileSystemManager(this, _logManager, ApplicationHost.Resolve<ITaskManager>(), ApplicationHost.Resolve<ILibraryManager>(), _configurationManager);
+ FileSystemManager = new FileSystemManager(_logManager, ApplicationHost.Resolve<ITaskManager>(), ApplicationHost.Resolve<ILibraryManager>(), _configurationManager);
FileSystemManager.StartWatchers();
}
-
- /// <summary>
- /// Gets the system info.
- /// </summary>
- /// <returns>SystemInfo.</returns>
- public override SystemInfo GetSystemInfo()
- {
- var info = base.GetSystemInfo();
-
- var installationManager = ApplicationHost.Resolve<IInstallationManager>();
-
- if (installationManager != null)
- {
- info.InProgressInstallations = installationManager.CurrentInstallations.Select(i => i.Item1).ToArray();
- info.CompletedInstallations = installationManager.CompletedInstallations.ToArray();
- }
-
- return info;
- }
}
}
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index 018b3960d..c07713d7d 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -70,7 +70,6 @@
<Compile Include="..\SharedVersion.cs">
<Link>Properties\SharedVersion.cs</Link>
</Compile>
- <Compile Include="BaseManager.cs" />
<Compile Include="Configuration\IServerConfigurationManager.cs" />
<Compile Include="Drawing\ImageExtensions.cs" />
<Compile Include="Drawing\ImageHeader.cs" />
@@ -105,6 +104,7 @@
<Compile Include="IO\FileSystem.cs" />
<Compile Include="IO\FileSystemManager.cs" />
<Compile Include="IO\NativeMethods.cs" />
+ <Compile Include="IServerApplicationHost.cs" />
<Compile Include="IServerApplicationPaths.cs" />
<Compile Include="Library\ChildrenChangedEventArgs.cs" />
<Compile Include="Library\DtoBuilder.cs" />
diff --git a/MediaBrowser.Controller/Providers/ProviderManager.cs b/MediaBrowser.Controller/Providers/ProviderManager.cs
index 16e862fb9..0df5f64d3 100644
--- a/MediaBrowser.Controller/Providers/ProviderManager.cs
+++ b/MediaBrowser.Controller/Providers/ProviderManager.cs
@@ -18,7 +18,7 @@ namespace MediaBrowser.Controller.Providers
/// <summary>
/// Class ProviderManager
/// </summary>
- public class ProviderManager : BaseManager<Kernel>
+ public class ProviderManager : IDisposable
{
/// <summary>
/// The remote image cache
@@ -42,7 +42,9 @@ namespace MediaBrowser.Controller.Providers
private readonly IHttpClient _httpClient;
private IServerConfigurationManager ConfigurationManager { get; set; }
-
+
+ private Kernel Kernel { get; set; }
+
/// <summary>
/// Initializes a new instance of the <see cref="ProviderManager" /> class.
/// </summary>
@@ -50,9 +52,9 @@ namespace MediaBrowser.Controller.Providers
/// <param name="httpClient">The HTTP client.</param>
/// <param name="logger">The logger.</param>
public ProviderManager(Kernel kernel, IHttpClient httpClient, ILogger logger, IServerConfigurationManager configurationManager)
- : base(kernel)
{
_logger = logger;
+ Kernel = kernel;
_httpClient = httpClient;
ConfigurationManager = configurationManager;
_remoteImageCache = new FileSystemRepository(ImagesDataPath);
@@ -354,14 +356,17 @@ namespace MediaBrowser.Controller.Providers
/// Releases unmanaged and - optionally - managed resources.
/// </summary>
/// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected override void Dispose(bool dispose)
+ protected virtual void Dispose(bool dispose)
{
if (dispose)
{
_remoteImageCache.Dispose();
}
+ }
- base.Dispose(dispose);
+ public void Dispose()
+ {
+ Dispose(true);
}
}
}
diff --git a/MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs b/MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs
index 74241ac02..9fc8d824f 100644
--- a/MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs
@@ -19,20 +19,6 @@ namespace MediaBrowser.Model.Configuration
public bool EnableDebugLevelLogging { get; set; }
/// <summary>
- /// Gets or sets a value indicating whether [enable HTTP level logging].
- /// </summary>
- /// <value><c>true</c> if [enable HTTP level logging]; otherwise, <c>false</c>.</value>
- [ProtoMember(56)]
- public bool EnableHttpLevelLogging { get; set; }
-
- /// <summary>
- /// Gets or sets the HTTP server port number.
- /// </summary>
- /// <value>The HTTP server port number.</value>
- [ProtoMember(2)]
- public int HttpServerPortNumber { get; set; }
-
- /// <summary>
/// Enable automatically and silently updating of the application
/// </summary>
/// <value><c>true</c> if [enable auto update]; otherwise, <c>false</c>.</value>
@@ -60,13 +46,6 @@ namespace MediaBrowser.Model.Configuration
public bool RunAtStartup { get; set; }
/// <summary>
- /// Gets or sets the legacy web socket port number.
- /// </summary>
- /// <value>The legacy web socket port number.</value>
- [ProtoMember(59)]
- public int LegacyWebSocketPortNumber { get; set; }
-
- /// <summary>
/// Gets or sets a value indicating whether this instance is first run.
/// </summary>
/// <value><c>true</c> if this instance is first run; otherwise, <c>false</c>.</value>
@@ -78,14 +57,9 @@ namespace MediaBrowser.Model.Configuration
/// </summary>
public BaseApplicationConfiguration()
{
- HttpServerPortNumber = 8096;
- LegacyWebSocketPortNumber = 8945;
-
EnableAutoUpdate = true;
LogFileRetentionDays = 14;
- EnableHttpLevelLogging = true;
-
#if (DEBUG)
EnableDebugLevelLogging = true;
#endif
diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
index ff7f5221b..0ddafe19a 100644
--- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
@@ -13,6 +13,27 @@ namespace MediaBrowser.Model.Configuration
public class ServerConfiguration : BaseApplicationConfiguration
{
/// <summary>
+ /// Gets or sets a value indicating whether [enable HTTP level logging].
+ /// </summary>
+ /// <value><c>true</c> if [enable HTTP level logging]; otherwise, <c>false</c>.</value>
+ [ProtoMember(56)]
+ public bool EnableHttpLevelLogging { get; set; }
+
+ /// <summary>
+ /// Gets or sets the HTTP server port number.
+ /// </summary>
+ /// <value>The HTTP server port number.</value>
+ [ProtoMember(2)]
+ public int HttpServerPortNumber { get; set; }
+
+ /// <summary>
+ /// Gets or sets the legacy web socket port number.
+ /// </summary>
+ /// <value>The legacy web socket port number.</value>
+ [ProtoMember(59)]
+ public int LegacyWebSocketPortNumber { get; set; }
+
+ /// <summary>
/// Gets or sets a value indicating whether [enable internet providers].
/// </summary>
/// <value><c>true</c> if [enable internet providers]; otherwise, <c>false</c>.</value>
@@ -255,6 +276,10 @@ namespace MediaBrowser.Model.Configuration
public ServerConfiguration()
: base()
{
+ HttpServerPortNumber = 8096;
+ LegacyWebSocketPortNumber = 8945;
+ EnableHttpLevelLogging = true;
+
#if (DEBUG)
EnableDeveloperTools = true;
#endif
diff --git a/MediaBrowser.Common.Implementations/HttpServer/BaseRestService.cs b/MediaBrowser.Server.Implementations/HttpServer/BaseRestService.cs
index 382183b58..b84708437 100644
--- a/MediaBrowser.Common.Implementations/HttpServer/BaseRestService.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/BaseRestService.cs
@@ -14,7 +14,7 @@ using System.Linq;
using System.Threading.Tasks;
using MimeTypes = MediaBrowser.Common.Net.MimeTypes;
-namespace MediaBrowser.Common.Implementations.HttpServer
+namespace MediaBrowser.Server.Implementations.HttpServer
{
/// <summary>
/// Class BaseRestService
diff --git a/MediaBrowser.Common.Implementations/HttpServer/HttpServer.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs
index 785ca56c6..ee5009e21 100644
--- a/MediaBrowser.Common.Implementations/HttpServer/HttpServer.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs
@@ -1,6 +1,6 @@
using Funq;
+using MediaBrowser.Common;
using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.Net;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
@@ -26,7 +26,7 @@ using System.Reflection;
using System.Text;
using System.Threading.Tasks;
-namespace MediaBrowser.Common.Implementations.HttpServer
+namespace MediaBrowser.Server.Implementations.HttpServer
{
/// <summary>
/// Class HttpServer
diff --git a/MediaBrowser.Common.Implementations/HttpServer/NativeWebSocket.cs b/MediaBrowser.Server.Implementations/HttpServer/NativeWebSocket.cs
index 97bab96f8..9f5d14eaf 100644
--- a/MediaBrowser.Common.Implementations/HttpServer/NativeWebSocket.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/NativeWebSocket.cs
@@ -7,7 +7,7 @@ using System.Threading.Tasks;
using WebSocketMessageType = MediaBrowser.Common.Net.WebSocketMessageType;
using WebSocketState = MediaBrowser.Common.Net.WebSocketState;
-namespace MediaBrowser.Common.Implementations.HttpServer
+namespace MediaBrowser.Server.Implementations.HttpServer
{
/// <summary>
/// Class NativeWebSocket
diff --git a/MediaBrowser.Common.Implementations/HttpServer/ServerFactory.cs b/MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs
index 743bd60c4..75e077c38 100644
--- a/MediaBrowser.Common.Implementations/HttpServer/ServerFactory.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs
@@ -1,9 +1,9 @@
-using MediaBrowser.Common.Kernel;
+using MediaBrowser.Common;
using MediaBrowser.Common.Net;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
-namespace MediaBrowser.Common.Implementations.HttpServer
+namespace MediaBrowser.Server.Implementations.HttpServer
{
/// <summary>
/// Class ServerFactory
diff --git a/MediaBrowser.Common.Implementations/HttpServer/StreamWriter.cs b/MediaBrowser.Server.Implementations/HttpServer/StreamWriter.cs
index c92bfe0b9..c4524280d 100644
--- a/MediaBrowser.Common.Implementations/HttpServer/StreamWriter.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/StreamWriter.cs
@@ -2,7 +2,7 @@
using System.IO;
using System.Threading.Tasks;
-namespace MediaBrowser.Common.Implementations.HttpServer
+namespace MediaBrowser.Server.Implementations.HttpServer
{
/// <summary>
/// Class StreamWriter
diff --git a/MediaBrowser.Common.Implementations/HttpServer/SwaggerService.cs b/MediaBrowser.Server.Implementations/HttpServer/SwaggerService.cs
index a4808834d..18ab40d93 100644
--- a/MediaBrowser.Common.Implementations/HttpServer/SwaggerService.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/SwaggerService.cs
@@ -2,7 +2,7 @@
using System.Diagnostics;
using System.IO;
-namespace MediaBrowser.Common.Implementations.HttpServer
+namespace MediaBrowser.Server.Implementations.HttpServer
{
/// <summary>
/// Class GetDashboardResource
diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
index 45aa3e530..e56c79ded 100644
--- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
+++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
@@ -32,6 +32,9 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
+ <Reference Include="Alchemy">
+ <HintPath>..\packages\Alchemy.2.2.1\lib\net40\Alchemy.dll</HintPath>
+ </Reference>
<Reference Include="BdInfo, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.BdInfo.1.0.0.2\lib\net45\BdInfo.dll</HintPath>
@@ -39,6 +42,39 @@
<Reference Include="MoreLinq">
<HintPath>..\packages\morelinq.1.0.15631-beta\lib\net35\MoreLinq.dll</HintPath>
</Reference>
+ <Reference Include="NLog">
+ <HintPath>..\packages\NLog.2.0.0.2000\lib\net40\NLog.dll</HintPath>
+ </Reference>
+ <Reference Include="ServiceStack">
+ <HintPath>..\packages\ServiceStack.3.9.38\lib\net35\ServiceStack.dll</HintPath>
+ </Reference>
+ <Reference Include="ServiceStack.Api.Swagger">
+ <HintPath>..\packages\ServiceStack.Api.Swagger.3.9.38\lib\net35\ServiceStack.Api.Swagger.dll</HintPath>
+ </Reference>
+ <Reference Include="ServiceStack.Common">
+ <HintPath>..\packages\ServiceStack.Common.3.9.38\lib\net35\ServiceStack.Common.dll</HintPath>
+ </Reference>
+ <Reference Include="ServiceStack.Interfaces">
+ <HintPath>..\packages\ServiceStack.Common.3.9.38\lib\net35\ServiceStack.Interfaces.dll</HintPath>
+ </Reference>
+ <Reference Include="ServiceStack.Logging.NLog">
+ <HintPath>..\packages\ServiceStack.Logging.NLog.1.0.6.0\lib\net35\ServiceStack.Logging.NLog.dll</HintPath>
+ </Reference>
+ <Reference Include="ServiceStack.OrmLite">
+ <HintPath>..\packages\ServiceStack.OrmLite.SqlServer.3.9.39\lib\ServiceStack.OrmLite.dll</HintPath>
+ </Reference>
+ <Reference Include="ServiceStack.OrmLite.SqlServer">
+ <HintPath>..\packages\ServiceStack.OrmLite.SqlServer.3.9.39\lib\ServiceStack.OrmLite.SqlServer.dll</HintPath>
+ </Reference>
+ <Reference Include="ServiceStack.Redis">
+ <HintPath>..\packages\ServiceStack.Redis.3.9.38\lib\net35\ServiceStack.Redis.dll</HintPath>
+ </Reference>
+ <Reference Include="ServiceStack.ServiceInterface">
+ <HintPath>..\packages\ServiceStack.3.9.38\lib\net35\ServiceStack.ServiceInterface.dll</HintPath>
+ </Reference>
+ <Reference Include="ServiceStack.Text">
+ <HintPath>..\packages\ServiceStack.Text.3.9.38\lib\net35\ServiceStack.Text.dll</HintPath>
+ </Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data.SQLite">
@@ -47,6 +83,16 @@
<Reference Include="System.Data.SQLite.Linq">
<HintPath>..\packages\System.Data.SQLite.1.0.84.0\lib\net45\System.Data.SQLite.Linq.dll</HintPath>
</Reference>
+ <Reference Include="System.Reactive.Core">
+ <HintPath>..\packages\Rx-Core.2.1.30214.0\lib\Net45\System.Reactive.Core.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Reactive.Interfaces">
+ <HintPath>..\packages\Rx-Interfaces.2.1.30214.0\lib\Net45\System.Reactive.Interfaces.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Reactive.Linq">
+ <HintPath>..\packages\Rx-Linq.2.1.30214.0\lib\Net45\System.Reactive.Linq.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@@ -59,6 +105,12 @@
</Compile>
<Compile Include="BdInfo\BdInfoExaminer.cs" />
<Compile Include="Configuration\ServerConfigurationManager.cs" />
+ <Compile Include="HttpServer\BaseRestService.cs" />
+ <Compile Include="HttpServer\HttpServer.cs" />
+ <Compile Include="HttpServer\NativeWebSocket.cs" />
+ <Compile Include="HttpServer\ServerFactory.cs" />
+ <Compile Include="HttpServer\StreamWriter.cs" />
+ <Compile Include="HttpServer\SwaggerService.cs" />
<Compile Include="Library\CoreResolutionIgnoreRule.cs" />
<Compile Include="Library\LibraryManager.cs" />
<Compile Include="Library\ResolverHelper.cs" />
@@ -82,13 +134,18 @@
<Compile Include="ScheduledTasks\ImageCleanupTask.cs" />
<Compile Include="ScheduledTasks\PluginUpdateTask.cs" />
<Compile Include="ServerApplicationPaths.cs" />
+ <Compile Include="ServerManager\ServerManager.cs" />
+ <Compile Include="ServerManager\WebSocketConnection.cs" />
<Compile Include="Sqlite\SQLiteDisplayPreferencesRepository.cs" />
<Compile Include="Sqlite\SQLiteExtensions.cs" />
<Compile Include="Sqlite\SQLiteItemRepository.cs" />
<Compile Include="Sqlite\SQLiteRepository.cs" />
<Compile Include="Sqlite\SQLiteUserDataRepository.cs" />
<Compile Include="Sqlite\SQLiteUserRepository.cs" />
+ <Compile Include="Udp\UdpServer.cs" />
<Compile Include="Updates\InstallationManager.cs" />
+ <Compile Include="WebSocket\AlchemyServer.cs" />
+ <Compile Include="WebSocket\AlchemyWebSocket.cs" />
<Compile Include="WorldWeatherOnline\WeatherProvider.cs" />
</ItemGroup>
<ItemGroup>
@@ -110,6 +167,49 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
+ <Content Include="README.txt" />
+ <Content Include="swagger-ui\css\screen.css">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="swagger-ui\images\pet_store_api.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="swagger-ui\images\wordnik_api.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="swagger-ui\index.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="swagger-ui\lib\backbone-min.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="swagger-ui\lib\handlebars.runtime-1.0.0.beta.6.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="swagger-ui\lib\jquery.ba-bbq.min.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="swagger-ui\lib\jquery.min.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="swagger-ui\lib\jquery.slideto.min.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="swagger-ui\lib\jquery.wiggle.min.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="swagger-ui\lib\swagger.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="swagger-ui\lib\underscore-min.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="swagger-ui\swagger-ui.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="swagger-ui\swagger-ui.min.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="x64\SQLite.Interop.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
@@ -119,6 +219,7 @@
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
+ <EmbeddedResource Include="ServerManager\RegisterServer.bat" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
diff --git a/MediaBrowser.Common.Implementations/README.txt b/MediaBrowser.Server.Implementations/README.txt
index e8ce34205..e8ce34205 100644
--- a/MediaBrowser.Common.Implementations/README.txt
+++ b/MediaBrowser.Server.Implementations/README.txt
diff --git a/MediaBrowser.Common.Implementations/ServerManager/RegisterServer.bat b/MediaBrowser.Server.Implementations/ServerManager/RegisterServer.bat
index d762dfaf7..d762dfaf7 100644
--- a/MediaBrowser.Common.Implementations/ServerManager/RegisterServer.bat
+++ b/MediaBrowser.Server.Implementations/ServerManager/RegisterServer.bat
diff --git a/MediaBrowser.Common.Implementations/ServerManager/ServerManager.cs b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs
index d18971f72..e4cb83e96 100644
--- a/MediaBrowser.Common.Implementations/ServerManager/ServerManager.cs
+++ b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs
@@ -1,6 +1,7 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Kernel;
+using MediaBrowser.Common;
using MediaBrowser.Common.Net;
+using MediaBrowser.Controller;
+using MediaBrowser.Controller.Configuration;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
using System;
@@ -15,7 +16,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
-namespace MediaBrowser.Common.Implementations.ServerManager
+namespace MediaBrowser.Server.Implementations.ServerManager
{
/// <summary>
/// Manages the Http Server, Udp Server and WebSocket connections
@@ -74,15 +75,10 @@ namespace MediaBrowser.Common.Implementations.ServerManager
private readonly IApplicationHost _applicationHost;
/// <summary>
- /// The _kernel
- /// </summary>
- private readonly IKernel _kernel;
-
- /// <summary>
/// Gets or sets the configuration manager.
/// </summary>
/// <value>The configuration manager.</value>
- private IConfigurationManager ConfigurationManager { get; set; }
+ private IServerConfigurationManager ConfigurationManager { get; set; }
/// <summary>
/// Gets a value indicating whether [supports web socket].
@@ -99,7 +95,7 @@ namespace MediaBrowser.Common.Implementations.ServerManager
/// <value>The web socket port number.</value>
public int WebSocketPortNumber
{
- get { return SupportsNativeWebSocket ? ConfigurationManager.CommonConfiguration.HttpServerPortNumber : ConfigurationManager.CommonConfiguration.LegacyWebSocketPortNumber; }
+ get { return SupportsNativeWebSocket ? ConfigurationManager.Configuration.HttpServerPortNumber : ConfigurationManager.Configuration.LegacyWebSocketPortNumber; }
}
/// <summary>
@@ -108,26 +104,23 @@ namespace MediaBrowser.Common.Implementations.ServerManager
/// <value>The web socket listeners.</value>
private readonly List<IWebSocketListener> _webSocketListeners = new List<IWebSocketListener>();
+ private Kernel _kernel;
+
/// <summary>
/// Initializes a new instance of the <see cref="ServerManager" /> class.
/// </summary>
/// <param name="applicationHost">The application host.</param>
- /// <param name="kernel">The kernel.</param>
/// <param name="networkManager">The network manager.</param>
/// <param name="jsonSerializer">The json serializer.</param>
/// <param name="logger">The logger.</param>
/// <param name="configurationManager">The configuration manager.</param>
/// <exception cref="System.ArgumentNullException">applicationHost</exception>
- public ServerManager(IApplicationHost applicationHost, IKernel kernel, INetworkManager networkManager, IJsonSerializer jsonSerializer, ILogger logger, IConfigurationManager configurationManager)
+ public ServerManager(IApplicationHost applicationHost, INetworkManager networkManager, IJsonSerializer jsonSerializer, ILogger logger, IServerConfigurationManager configurationManager, Kernel kernel)
{
if (applicationHost == null)
{
throw new ArgumentNullException("applicationHost");
}
- if (kernel == null)
- {
- throw new ArgumentNullException("kernel");
- }
if (networkManager == null)
{
throw new ArgumentNullException("networkManager");
@@ -143,10 +136,10 @@ namespace MediaBrowser.Common.Implementations.ServerManager
_logger = logger;
_jsonSerializer = jsonSerializer;
- _kernel = kernel;
_applicationHost = applicationHost;
_networkManager = networkManager;
ConfigurationManager = configurationManager;
+ _kernel = kernel;
}
/// <summary>
@@ -175,17 +168,11 @@ namespace MediaBrowser.Common.Implementations.ServerManager
/// </summary>
private void ReloadExternalWebSocketServer()
{
- // Avoid windows firewall prompts in the ui
- if (_kernel.KernelContext != KernelContext.Server)
- {
- return;
- }
-
DisposeExternalWebSocketServer();
ExternalWebSocketServer = _applicationHost.Resolve<IWebSocketServer>();
- ExternalWebSocketServer.Start(ConfigurationManager.CommonConfiguration.LegacyWebSocketPortNumber);
+ ExternalWebSocketServer.Start(ConfigurationManager.Configuration.LegacyWebSocketPortNumber);
ExternalWebSocketServer.WebSocketConnected += HttpServer_WebSocketConnected;
}
@@ -208,7 +195,7 @@ namespace MediaBrowser.Common.Implementations.ServerManager
try
{
HttpServer = _applicationHost.Resolve<IHttpServer>();
- HttpServer.EnableHttpRequestLogging = ConfigurationManager.CommonConfiguration.EnableHttpLevelLogging;
+ HttpServer.EnableHttpRequestLogging = ConfigurationManager.Configuration.EnableHttpLevelLogging;
HttpServer.Start(_kernel.HttpServerUrlPrefix);
}
catch (HttpListenerException ex)
@@ -275,12 +262,6 @@ namespace MediaBrowser.Common.Implementations.ServerManager
return;
}
- // Avoid windows firewall prompts in the ui
- if (_kernel.KernelContext != KernelContext.Server)
- {
- return;
- }
-
DisposeUdpServer();
try
@@ -305,7 +286,9 @@ namespace MediaBrowser.Common.Implementations.ServerManager
/// <param name="e">The <see cref="UdpMessageReceivedEventArgs" /> instance containing the event data.</param>
async void UdpServer_MessageReceived(object sender, UdpMessageReceivedEventArgs e)
{
- var expectedMessage = String.Format("who is MediaBrowser{0}?", _kernel.KernelContext);
+ var context = "Server";
+
+ var expectedMessage = String.Format("who is MediaBrowser{0}?", context);
var expectedMessageBytes = Encoding.UTF8.GetBytes(expectedMessage);
if (expectedMessageBytes.SequenceEqual(e.Bytes))
@@ -313,7 +296,7 @@ namespace MediaBrowser.Common.Implementations.ServerManager
_logger.Info("Received UDP server request from " + e.RemoteEndPoint);
// Send a response back with our ip address and port
- var response = String.Format("MediaBrowser{0}|{1}:{2}", _kernel.KernelContext, _networkManager.GetLocalIpAddress(), _kernel.UdpServerPortNumber);
+ var response = String.Format("MediaBrowser{0}|{1}:{2}", context, _networkManager.GetLocalIpAddress(), _kernel.UdpServerPortNumber);
await UdpServer.SendAsync(Encoding.UTF8.GetBytes(response), e.RemoteEndPoint);
}
@@ -447,7 +430,7 @@ namespace MediaBrowser.Common.Implementations.ServerManager
var tmpFile = Path.Combine(ConfigurationManager.CommonApplicationPaths.TempDirectory, Guid.NewGuid() + ".bat");
// Extract the bat file
- using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MediaBrowser.Common.Implementations.ServerManager.RegisterServer.bat"))
+ using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MediaBrowser.Server.Implementations.ServerManager.RegisterServer.bat"))
{
using (var fileStream = File.Create(tmpFile))
{
@@ -459,10 +442,10 @@ namespace MediaBrowser.Common.Implementations.ServerManager
{
FileName = tmpFile,
- Arguments = string.Format("{0} {1} {2} {3}", ConfigurationManager.CommonConfiguration.HttpServerPortNumber,
+ Arguments = string.Format("{0} {1} {2} {3}", ConfigurationManager.Configuration.HttpServerPortNumber,
_kernel.HttpServerUrlPrefix,
_kernel.UdpServerPortNumber,
- ConfigurationManager.CommonConfiguration.LegacyWebSocketPortNumber),
+ ConfigurationManager.Configuration.LegacyWebSocketPortNumber),
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
@@ -517,14 +500,14 @@ namespace MediaBrowser.Common.Implementations.ServerManager
/// <exception cref="System.NotImplementedException"></exception>
void _kernel_ConfigurationUpdated(object sender, EventArgs e)
{
- HttpServer.EnableHttpRequestLogging = ConfigurationManager.CommonConfiguration.EnableHttpLevelLogging;
+ HttpServer.EnableHttpRequestLogging = ConfigurationManager.Configuration.EnableHttpLevelLogging;
if (!string.Equals(HttpServer.UrlPrefix, _kernel.HttpServerUrlPrefix, StringComparison.OrdinalIgnoreCase))
{
ReloadHttpServer();
}
- if (!SupportsNativeWebSocket && ExternalWebSocketServer != null && ExternalWebSocketServer.Port != ConfigurationManager.CommonConfiguration.LegacyWebSocketPortNumber)
+ if (!SupportsNativeWebSocket && ExternalWebSocketServer != null && ExternalWebSocketServer.Port != ConfigurationManager.Configuration.LegacyWebSocketPortNumber)
{
ReloadExternalWebSocketServer();
}
diff --git a/MediaBrowser.Common.Implementations/ServerManager/WebSocketConnection.cs b/MediaBrowser.Server.Implementations/ServerManager/WebSocketConnection.cs
index f826b02cc..d92c60773 100644
--- a/MediaBrowser.Common.Implementations/ServerManager/WebSocketConnection.cs
+++ b/MediaBrowser.Server.Implementations/ServerManager/WebSocketConnection.cs
@@ -6,7 +6,7 @@ using System.IO;
using System.Threading;
using System.Threading.Tasks;
-namespace MediaBrowser.Common.Implementations.ServerManager
+namespace MediaBrowser.Server.Implementations.ServerManager
{
/// <summary>
/// Class WebSocketConnection
diff --git a/MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs b/MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs
index d6a0858af..ddf44d407 100644
--- a/MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs
+++ b/MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Model.Entities;
diff --git a/MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs b/MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs
index 87cce1785..6a9a9f6f5 100644
--- a/MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs
+++ b/MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Model.Logging;
diff --git a/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserDataRepository.cs b/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserDataRepository.cs
index 64ba4d1e2..dafdce798 100644
--- a/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserDataRepository.cs
+++ b/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserDataRepository.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Model.Logging;
diff --git a/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserRepository.cs b/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserRepository.cs
index 89d2900dd..43dffc596 100644
--- a/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserRepository.cs
+++ b/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserRepository.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Model.Logging;
diff --git a/MediaBrowser.Common.Implementations/Udp/UdpServer.cs b/MediaBrowser.Server.Implementations/Udp/UdpServer.cs
index e0435ab3c..c6869c12d 100644
--- a/MediaBrowser.Common.Implementations/Udp/UdpServer.cs
+++ b/MediaBrowser.Server.Implementations/Udp/UdpServer.cs
@@ -8,7 +8,7 @@ using System.Reactive.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace MediaBrowser.Common.Implementations.Udp
+namespace MediaBrowser.Server.Implementations.Udp
{
/// <summary>
/// Provides a Udp Server
diff --git a/MediaBrowser.Server.Implementations/Updates/InstallationManager.cs b/MediaBrowser.Server.Implementations/Updates/InstallationManager.cs
index e17ed0301..bdbf3896f 100644
--- a/MediaBrowser.Server.Implementations/Updates/InstallationManager.cs
+++ b/MediaBrowser.Server.Implementations/Updates/InstallationManager.cs
@@ -1,11 +1,9 @@
using MediaBrowser.Common;
using MediaBrowser.Common.Events;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.Net;
using MediaBrowser.Common.Plugins;
using MediaBrowser.Common.Progress;
using MediaBrowser.Common.Updates;
-using MediaBrowser.Controller;
using MediaBrowser.Controller.Updates;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
@@ -72,7 +70,7 @@ namespace MediaBrowser.Server.Implementations.Updates
EventHelper.QueueEventIfNotNull(PluginUpdated, this, new GenericEventArgs<Tuple<IPlugin, PackageVersionInfo>> { Argument = new Tuple<IPlugin, PackageVersionInfo>(plugin, newVersion) }, _logger);
- Kernel.NotifyPendingRestart();
+ ApplicationHost.NotifyPendingRestart();
}
#endregion
@@ -91,7 +89,7 @@ namespace MediaBrowser.Server.Implementations.Updates
EventHelper.QueueEventIfNotNull(PluginInstalled, this, new GenericEventArgs<PackageVersionInfo> { Argument = package }, _logger);
- Kernel.NotifyPendingRestart();
+ ApplicationHost.NotifyPendingRestart();
}
#endregion
@@ -123,19 +121,16 @@ namespace MediaBrowser.Server.Implementations.Updates
/// <value>The application host.</value>
protected IApplicationHost ApplicationHost { get; private set; }
- private IKernel Kernel { get; set; }
-
/// <summary>
/// Initializes a new instance of the <see cref="InstallationManager" /> class.
/// </summary>
- /// <param name="kernel">The kernel.</param>
/// <param name="httpClient">The HTTP client.</param>
/// <param name="packageManager">The package manager.</param>
/// <param name="jsonSerializer">The json serializer.</param>
/// <param name="logger">The logger.</param>
/// <param name="appHost">The app host.</param>
/// <exception cref="System.ArgumentNullException">zipClient</exception>
- public InstallationManager(IKernel kernel, IHttpClient httpClient, IPackageManager packageManager, IJsonSerializer jsonSerializer, ILogger logger, IApplicationHost appHost)
+ public InstallationManager(IHttpClient httpClient, IPackageManager packageManager, IJsonSerializer jsonSerializer, ILogger logger, IApplicationHost appHost)
{
if (packageManager == null)
{
@@ -161,7 +156,6 @@ namespace MediaBrowser.Server.Implementations.Updates
ApplicationHost = appHost;
_packageManager = packageManager;
_logger = logger;
- Kernel = kernel;
}
/// <summary>
@@ -454,7 +448,7 @@ namespace MediaBrowser.Server.Implementations.Updates
OnPluginUninstalled(plugin);
- Kernel.NotifyPendingRestart();
+ ApplicationHost.NotifyPendingRestart();
}
/// <summary>
diff --git a/MediaBrowser.Common.Implementations/WebSocket/AlchemyServer.cs b/MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs
index 236bd27b7..37490c3d5 100644
--- a/MediaBrowser.Common.Implementations/WebSocket/AlchemyServer.cs
+++ b/MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs
@@ -5,7 +5,7 @@ using MediaBrowser.Model.Logging;
using System;
using System.Net;
-namespace MediaBrowser.Common.Implementations.WebSocket
+namespace MediaBrowser.Server.Implementations.WebSocket
{
/// <summary>
/// Class AlchemyServer
diff --git a/MediaBrowser.Common.Implementations/WebSocket/AlchemyWebSocket.cs b/MediaBrowser.Server.Implementations/WebSocket/AlchemyWebSocket.cs
index 1ecc38f2c..13a9ce050 100644
--- a/MediaBrowser.Common.Implementations/WebSocket/AlchemyWebSocket.cs
+++ b/MediaBrowser.Server.Implementations/WebSocket/AlchemyWebSocket.cs
@@ -6,7 +6,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
-namespace MediaBrowser.Common.Implementations.WebSocket
+namespace MediaBrowser.Server.Implementations.WebSocket
{
/// <summary>
/// Class AlchemyWebSocket
diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config
index fb84d9aa7..002d5974e 100644
--- a/MediaBrowser.Server.Implementations/packages.config
+++ b/MediaBrowser.Server.Implementations/packages.config
@@ -1,6 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
+ <package id="Alchemy" version="2.2.1" targetFramework="net45" />
<package id="MediaBrowser.BdInfo" version="1.0.0.2" targetFramework="net45" />
<package id="morelinq" version="1.0.15631-beta" targetFramework="net45" />
+ <package id="NLog" version="2.0.0.2000" targetFramework="net45" />
+ <package id="Rx-Core" version="2.1.30214.0" targetFramework="net45" />
+ <package id="Rx-Interfaces" version="2.1.30214.0" targetFramework="net45" />
+ <package id="Rx-Linq" version="2.1.30214.0" targetFramework="net45" />
+ <package id="ServiceStack" version="3.9.38" targetFramework="net45" />
+ <package id="ServiceStack.Api.Swagger" version="3.9.38" targetFramework="net45" />
+ <package id="ServiceStack.Common" version="3.9.38" targetFramework="net45" />
+ <package id="ServiceStack.Logging.NLog" version="1.0.6.0" targetFramework="net45" />
+ <package id="ServiceStack.OrmLite.SqlServer" version="3.9.39" targetFramework="net45" />
+ <package id="ServiceStack.Redis" version="3.9.38" targetFramework="net45" />
+ <package id="ServiceStack.Text" version="3.9.38" targetFramework="net45" />
<package id="System.Data.SQLite" version="1.0.84.0" targetFramework="net45" />
</packages> \ No newline at end of file
diff --git a/MediaBrowser.Common.Implementations/swagger-ui/css/screen.css b/MediaBrowser.Server.Implementations/swagger-ui/css/screen.css
index 07773f9ef..07773f9ef 100644
--- a/MediaBrowser.Common.Implementations/swagger-ui/css/screen.css
+++ b/MediaBrowser.Server.Implementations/swagger-ui/css/screen.css
diff --git a/MediaBrowser.Common.Implementations/swagger-ui/images/pet_store_api.png b/MediaBrowser.Server.Implementations/swagger-ui/images/pet_store_api.png
index f9f9cd4ae..f9f9cd4ae 100644
--- a/MediaBrowser.Common.Implementations/swagger-ui/images/pet_store_api.png
+++ b/MediaBrowser.Server.Implementations/swagger-ui/images/pet_store_api.png
Binary files differ
diff --git a/MediaBrowser.Common.Implementations/swagger-ui/images/wordnik_api.png b/MediaBrowser.Server.Implementations/swagger-ui/images/wordnik_api.png
index dca4f1455..dca4f1455 100644
--- a/MediaBrowser.Common.Implementations/swagger-ui/images/wordnik_api.png
+++ b/MediaBrowser.Server.Implementations/swagger-ui/images/wordnik_api.png
Binary files differ
diff --git a/MediaBrowser.Common.Implementations/swagger-ui/index.html b/MediaBrowser.Server.Implementations/swagger-ui/index.html
index 0b2b02b10..0b2b02b10 100644
--- a/MediaBrowser.Common.Implementations/swagger-ui/index.html
+++ b/MediaBrowser.Server.Implementations/swagger-ui/index.html
diff --git a/MediaBrowser.Common.Implementations/swagger-ui/lib/backbone-min.js b/MediaBrowser.Server.Implementations/swagger-ui/lib/backbone-min.js
index c1c0d4fff..c1c0d4fff 100644
--- a/MediaBrowser.Common.Implementations/swagger-ui/lib/backbone-min.js
+++ b/MediaBrowser.Server.Implementations/swagger-ui/lib/backbone-min.js
diff --git a/MediaBrowser.Common.Implementations/swagger-ui/lib/handlebars.runtime-1.0.0.beta.6.js b/MediaBrowser.Server.Implementations/swagger-ui/lib/handlebars.runtime-1.0.0.beta.6.js
index 987a5cd4d..987a5cd4d 100644
--- a/MediaBrowser.Common.Implementations/swagger-ui/lib/handlebars.runtime-1.0.0.beta.6.js
+++ b/MediaBrowser.Server.Implementations/swagger-ui/lib/handlebars.runtime-1.0.0.beta.6.js
diff --git a/MediaBrowser.Common.Implementations/swagger-ui/lib/jquery.ba-bbq.min.js b/MediaBrowser.Server.Implementations/swagger-ui/lib/jquery.ba-bbq.min.js
index bcbf24834..bcbf24834 100644
--- a/MediaBrowser.Common.Implementations/swagger-ui/lib/jquery.ba-bbq.min.js
+++ b/MediaBrowser.Server.Implementations/swagger-ui/lib/jquery.ba-bbq.min.js
diff --git a/MediaBrowser.Common.Implementations/swagger-ui/lib/jquery.min.js b/MediaBrowser.Server.Implementations/swagger-ui/lib/jquery.min.js
index 16ad06c5a..16ad06c5a 100644
--- a/MediaBrowser.Common.Implementations/swagger-ui/lib/jquery.min.js
+++ b/MediaBrowser.Server.Implementations/swagger-ui/lib/jquery.min.js
diff --git a/MediaBrowser.Common.Implementations/swagger-ui/lib/jquery.slideto.min.js b/MediaBrowser.Server.Implementations/swagger-ui/lib/jquery.slideto.min.js
index ba32cff36..ba32cff36 100644
--- a/MediaBrowser.Common.Implementations/swagger-ui/lib/jquery.slideto.min.js
+++ b/MediaBrowser.Server.Implementations/swagger-ui/lib/jquery.slideto.min.js
diff --git a/MediaBrowser.Common.Implementations/swagger-ui/lib/jquery.wiggle.min.js b/MediaBrowser.Server.Implementations/swagger-ui/lib/jquery.wiggle.min.js
index 2adb0d6d5..2adb0d6d5 100644
--- a/MediaBrowser.Common.Implementations/swagger-ui/lib/jquery.wiggle.min.js
+++ b/MediaBrowser.Server.Implementations/swagger-ui/lib/jquery.wiggle.min.js
diff --git a/MediaBrowser.Common.Implementations/swagger-ui/lib/swagger.js b/MediaBrowser.Server.Implementations/swagger-ui/lib/swagger.js
index 68d8e40cc..68d8e40cc 100644
--- a/MediaBrowser.Common.Implementations/swagger-ui/lib/swagger.js
+++ b/MediaBrowser.Server.Implementations/swagger-ui/lib/swagger.js
diff --git a/MediaBrowser.Common.Implementations/swagger-ui/lib/underscore-min.js b/MediaBrowser.Server.Implementations/swagger-ui/lib/underscore-min.js
index 5a0cb3b00..5a0cb3b00 100644
--- a/MediaBrowser.Common.Implementations/swagger-ui/lib/underscore-min.js
+++ b/MediaBrowser.Server.Implementations/swagger-ui/lib/underscore-min.js
diff --git a/MediaBrowser.Common.Implementations/swagger-ui/swagger-ui.js b/MediaBrowser.Server.Implementations/swagger-ui/swagger-ui.js
index 4cdcc3976..4cdcc3976 100644
--- a/MediaBrowser.Common.Implementations/swagger-ui/swagger-ui.js
+++ b/MediaBrowser.Server.Implementations/swagger-ui/swagger-ui.js
diff --git a/MediaBrowser.Common.Implementations/swagger-ui/swagger-ui.min.js b/MediaBrowser.Server.Implementations/swagger-ui/swagger-ui.min.js
index 6ab803707..6ab803707 100644
--- a/MediaBrowser.Common.Implementations/swagger-ui/swagger-ui.min.js
+++ b/MediaBrowser.Server.Implementations/swagger-ui/swagger-ui.min.js
diff --git a/MediaBrowser.ServerApplication/App.xaml.cs b/MediaBrowser.ServerApplication/App.xaml.cs
index 470b7fc55..a3e273438 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.
/// </summary>
/// <param name="page">The page.</param>
- 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 d22c522e7..df3765818 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
/// <summary>
/// Class CompositionRoot
/// </summary>
- public class ApplicationHost : BaseApplicationHost<ServerApplicationPaths>
+ public class ApplicationHost : BaseApplicationHost<ServerApplicationPaths>, IServerApplicationHost
{
/// <summary>
/// Gets the server kernel.
/// </summary>
/// <value>The server kernel.</value>
- protected Kernel ServerKernel
- {
- get { return (Kernel)Kernel; }
- }
+ protected Kernel ServerKernel { get; set; }
/// <summary>
/// Gets the server configuration manager.
@@ -62,15 +61,6 @@ namespace MediaBrowser.ServerApplication
}
/// <summary>
- /// Gets the kernel.
- /// </summary>
- /// <returns>IKernel.</returns>
- protected override IKernel GetKernel()
- {
- return new Kernel(this, XmlSerializer, LogManager, ServerConfigurationManager);
- }
-
- /// <summary>
/// Gets the name of the log file prefix.
/// </summary>
/// <value>The name of the log file prefix.</value>
@@ -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);
+ }
+
/// <summary>
/// Registers resources that classes will depend on
/// </summary>
protected override async Task RegisterResources()
{
+ ServerKernel = new Kernel(this, XmlSerializer, LogManager, ServerConfigurationManager);
+
await base.RegisterResources().ConfigureAwait(false);
+ RegisterSingleInstance<IServerApplicationHost>(this);
RegisterSingleInstance<IServerApplicationPaths>(ApplicationPaths);
-
+
RegisterSingleInstance(ServerKernel);
RegisterSingleInstance(ServerConfigurationManager);
+ RegisterSingleInstance<IWebSocketServer>(() => new AlchemyServer(Logger));
+ RegisterSingleInstance<IUdpServer>(new UdpServer(Logger), false);
+
RegisterSingleInstance<IIsoManager>(new PismoIsoManager(Logger));
RegisterSingleInstance<IBlurayExaminer>(new BdInfoExaminer());
RegisterSingleInstance<IZipClient>(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<IUserManager>(userManager);
RegisterSingleInstance<ILibraryManager>(new LibraryManager(ServerKernel, Logger, TaskManager, userManager, ServerConfigurationManager));
- RegisterSingleInstance<IInstallationManager>(new InstallationManager(Kernel, HttpClient, PackageManager, JsonSerializer, Logger, this));
+ InstallationManager = new InstallationManager(HttpClient, PackageManager, JsonSerializer, Logger, this);
+ RegisterSingleInstance(InstallationManager);
}
/// <summary>
@@ -121,6 +131,11 @@ namespace MediaBrowser.ServerApplication
{
base.FindParts();
+ Resolve<IHttpServer>().Init(GetExports<IRestfulService>(false));
+ Resolve<IServerManager>().AddWebSocketListeners(GetExports<IWebSocketListener>(false));
+
+ Resolve<IServerManager>().Start();
+
Resolve<ILibraryManager>().AddParts(GetExports<IResolverIgnoreRule>(), GetExports<IVirtualFolderCreator>(), GetExports<IItemResolver>(), GetExports<IIntroProvider>());
}
@@ -158,19 +173,6 @@ namespace MediaBrowser.ServerApplication
}
/// <summary>
- /// Updates the application.
- /// </summary>
- /// <param name="package">The package that contains the update</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <param name="progress">The progress.</param>
- /// <returns>Task.</returns>
- public override Task UpdateApplication(PackageVersionInfo package, CancellationToken cancellationToken, IProgress<double> progress)
- {
- var pkgManager = Resolve<IPackageManager>();
- return pkgManager.InstallPackage(progress, package, cancellationToken);
- }
-
- /// <summary>
/// Gets the composable part assemblies.
/// </summary>
/// <returns>IEnumerable{Assembly}.</returns>
@@ -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;
@@ -211,6 +213,25 @@ namespace MediaBrowser.ServerApplication
}
/// <summary>
+ /// Gets the system status.
+ /// </summary>
+ /// <returns>SystemInfo.</returns>
+ 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()
+ };
+ }
+
+ /// <summary>
/// Shuts down.
/// </summary>
public override void Shutdown()
diff --git a/MediaBrowser.ServerApplication/StartupWizard.cs b/MediaBrowser.ServerApplication/StartupWizard.cs
index 57a90ea81..f7946c711 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
/// </summary>
private readonly IUserManager _userManager;
- private readonly IConfigurationManager _configurationManager;
+ private readonly IServerConfigurationManager _configurationManager;
/// <summary>
/// Initializes a new instance of the <see cref="StartupWizard" /> class.
/// </summary>
/// <param name="appHost">The app host.</param>
/// <param name="userManager">The user manager.</param>
- 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 caa4ca2ab..43972bafc 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
/// <summary>
/// The _kernel
/// </summary>
- private readonly IKernel _kernel;
+ private readonly IServerApplicationHost _appHost;
+
+ private readonly ITaskManager _taskManager;
/// <summary>
/// Initializes a new instance of the <see cref="WebSocketEvents" /> class.
@@ -51,14 +56,15 @@ namespace MediaBrowser.ServerApplication
/// <param name="serverManager">The server manager.</param>
/// <param name="logger">The logger.</param>
/// <param name="userManager">The user manager.</param>
- 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<TaskResult> e)
+ {
+ _serverManager.SendWebSocketMessage("ScheduledTaskEndExecute", e.Argument);
+ }
+
+ void _taskManager_TaskExecuting(object sender, EventArgs e)
+ {
+ var task = (IScheduledTask) sender;
+ _serverManager.SendWebSocketMessage("ScheduledTaskBeginExecute", task.Name);
}
/// <summary>
@@ -144,9 +164,7 @@ namespace MediaBrowser.ServerApplication
/// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
void kernel_HasPendingRestartChanged(object sender, EventArgs e)
{
- var kernel = (IKernel)sender;
-
- _serverManager.SendWebSocketMessage("HasPendingRestartChanged", kernel.GetSystemInfo());
+ _serverManager.SendWebSocketMessage("HasPendingRestartChanged", _appHost.GetSystemInfo());
}
/// <summary>
@@ -196,7 +214,7 @@ namespace MediaBrowser.ServerApplication
_installationManager.PackageInstallationCompleted -= installationManager_PackageInstallationCompleted;
_installationManager.PackageInstallationFailed -= installationManager_PackageInstallationFailed;
- _kernel.HasPendingRestartChanged -= kernel_HasPendingRestartChanged;
+ _appHost.HasPendingRestartChanged -= kernel_HasPendingRestartChanged;
}
}
}
diff --git a/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs b/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs
index 93b23b943..cdcdb49dc 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs
@@ -1,4 +1,4 @@
-using MediaBrowser.Common.Kernel;
+using MediaBrowser.Common.Net;
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Library;
@@ -23,10 +23,7 @@ namespace MediaBrowser.WebDashboard.Api
get { return "DashboardInfo"; }
}
- /// <summary>
- /// The _kernel
- /// </summary>
- private readonly Kernel _kernel;
+ private readonly IServerApplicationHost _appHost;
/// <summary>
/// Gets or sets the task manager.
@@ -42,14 +39,13 @@ namespace MediaBrowser.WebDashboard.Api
/// <summary>
/// Initializes a new instance of the <see cref="DashboardInfoWebSocketListener" /> class.
/// </summary>
- /// <param name="kernel">The kernel.</param>
/// <param name="logger">The logger.</param>
/// <param name="taskManager">The task manager.</param>
/// <param name="userManager">The user manager.</param>
- public DashboardInfoWebSocketListener(Kernel kernel, ILogger logger, ITaskManager taskManager, IUserManager userManager)
+ public DashboardInfoWebSocketListener(IServerApplicationHost appHost, ILogger logger, ITaskManager taskManager, IUserManager userManager)
: base(logger)
{
- _kernel = kernel;
+ _appHost = appHost;
_taskManager = taskManager;
_userManager = userManager;
}
@@ -61,7 +57,7 @@ namespace MediaBrowser.WebDashboard.Api
/// <returns>Task{IEnumerable{TaskInfo}}.</returns>
protected override Task<DashboardInfo> GetDataToSend(object state)
{
- return Task.FromResult(DashboardService.GetDashboardInfo(_kernel, Logger, _taskManager, _userManager));
+ return Task.FromResult(DashboardService.GetDashboardInfo(_appHost, Logger, _taskManager, _userManager));
}
}
}
diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs
index 0c63e00b2..136a9170e 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardService.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.Implementations.HttpServer;
using MediaBrowser.Common.Net;
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Controller;
@@ -7,6 +6,7 @@ using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Tasks;
+using MediaBrowser.Server.Implementations.HttpServer;
using ServiceStack.ServiceHost;
using System;
using System.Collections.Generic;
@@ -89,15 +89,18 @@ namespace MediaBrowser.WebDashboard.Api
/// </summary>
private readonly IUserManager _userManager;
+ private readonly IServerApplicationHost _appHost;
+
/// <summary>
/// Initializes a new instance of the <see cref="DashboardService" /> class.
/// </summary>
/// <param name="taskManager">The task manager.</param>
/// <param name="userManager">The user manager.</param>
- public DashboardService(ITaskManager taskManager, IUserManager userManager)
+ public DashboardService(ITaskManager taskManager, IUserManager userManager, IServerApplicationHost appHost)
{
_taskManager = taskManager;
_userManager = userManager;
+ _appHost = appHost;
}
/// <summary>
@@ -107,18 +110,17 @@ namespace MediaBrowser.WebDashboard.Api
/// <returns>System.Object.</returns>
public object Get(GetDashboardInfo request)
{
- return GetDashboardInfo(Kernel.Instance, Logger, _taskManager, _userManager);
+ return GetDashboardInfo(_appHost, Logger, _taskManager, _userManager);
}
/// <summary>
/// Gets the dashboard info.
/// </summary>
- /// <param name="kernel">The kernel.</param>
/// <param name="logger">The logger.</param>
/// <param name="taskManager">The task manager.</param>
/// <param name="userManager">The user manager.</param>
/// <returns>DashboardInfo.</returns>
- public static DashboardInfo GetDashboardInfo(Kernel kernel, ILogger logger, ITaskManager taskManager, IUserManager userManager)
+ public static DashboardInfo GetDashboardInfo(IServerApplicationHost appHost, ILogger logger, ITaskManager taskManager, IUserManager userManager)
{
var connections = userManager.ConnectedUsers.ToArray();
@@ -126,7 +128,7 @@ namespace MediaBrowser.WebDashboard.Api
return new DashboardInfo
{
- SystemInfo = kernel.GetSystemInfo(),
+ SystemInfo = appHost.GetSystemInfo(),
RunningTasks = taskManager.ScheduledTasks.Where(i => i.State == TaskState.Running || i.State == TaskState.Cancelling)
.Select(ScheduledTaskHelpers.GetTaskInfo)
diff --git a/MediaBrowser.WebDashboard/Html/css/site.css b/MediaBrowser.WebDashboard/Html/css/site.css
index 7fb09381f..6b7081b90 100644
--- a/MediaBrowser.WebDashboard/Html/css/site.css
+++ b/MediaBrowser.WebDashboard/Html/css/site.css
@@ -82,7 +82,7 @@ pre, textarea.pre {
background-attachment: fixed;
}
-.libraryPage, .libraryPage .ui-content {
+.libraryPage, .itemListContent {
background: #262626!important;
background-attachment: fixed!important;
}
diff --git a/MediaBrowser.WebDashboard/Html/itemList.html b/MediaBrowser.WebDashboard/Html/itemList.html
index 728f38a28..4be44b821 100644
--- a/MediaBrowser.WebDashboard/Html/itemList.html
+++ b/MediaBrowser.WebDashboard/Html/itemList.html
@@ -5,10 +5,10 @@
</head>
<body>
<div id="itemListPage" data-role="page" class="page libraryPage" data-theme="a">
- <div data-role="content">
-<!-- <div style="text-align: right;">
+ <div data-role="content" class="itemListContent">
+ <div style="text-align: right;">
<button type="button" onclick="$( '#optionsPanel', $.mobile.activePage ).panel( 'open' );" data-mini="true" data-inline="true">Options</button>
- </div>-->
+ </div>
<h1 id="itemName" class="listHeader"></h1>
diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
index 7132cd792..e57d7ad2f 100644
--- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
+++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
@@ -88,10 +88,6 @@
<Compile Include="ServerEntryPoint.cs" />
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\MediaBrowser.Common.Implementations\MediaBrowser.Common.Implementations.csproj">
- <Project>{c4d2573a-3fd3-441f-81af-174ac4cd4e1d}</Project>
- <Name>MediaBrowser.Common.Implementations</Name>
- </ProjectReference>
<ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
<Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
<Name>MediaBrowser.Common</Name>
@@ -104,6 +100,10 @@
<Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
<Name>MediaBrowser.Model</Name>
</ProjectReference>
+ <ProjectReference Include="..\MediaBrowser.Server.Implementations\MediaBrowser.Server.Implementations.csproj">
+ <Project>{2e781478-814d-4a48-9d80-bff206441a65}</Project>
+ <Name>MediaBrowser.Server.Implementations</Name>
+ </ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Html\index.html" />
diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec
index 3baa1c2c5..c29c3a260 100644
--- a/Nuget/MediaBrowser.Common.Internal.nuspec
+++ b/Nuget/MediaBrowser.Common.Internal.nuspec
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
+<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common.Internal</id>
<version>3.0.33</version>
@@ -7,23 +7,21 @@
<authors>Luke</authors>
<owners>ebr,Luke,scottisafool</owners>
<projectUrl>https://github.com/MediaBrowser/MediaBrowser</projectUrl>
- <iconUrl>http://www.mb3admin.com/images/mb3icons1-1.png</iconUrl>
+ <iconUrl>http://www.mb3admin.com/images/mb3icons1-1.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Contains common components shared by Media Browser Theatre and Media Browser Server. Not intended for plugin developer consumption.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
<dependency id="MediaBrowser.Common" version="3.0.33" />
<dependency id="NLog" version="2.0.0.2000" />
- <dependency id="ServiceStack" version="3.9.38" />
- <dependency id="ServiceStack.Api.Swagger" version="3.9.38" />
- <dependency id="ServiceStack.Logging.NLog" version="1.0.6.0" />
- <dependency id="Rx-Main" version="2.1.30214.0" />
+ <dependency id="ServiceStack.Text" version="3.9.38" />
+ <dependency id="protobuf-net" version="2.0.0.621" />
</dependencies>
</metadata>
<files>
<file src="dlls\MediaBrowser.Common.Implementations.dll" target="lib\net45\MediaBrowser.Common.Implementations.dll" />
<file src="dlls\MediaBrowser.IsoMounter.dll" target="lib\net45\MediaBrowser.IsoMounter.dll" />
- <file src="dlls\pfmclrapi.dll" target="lib\net45\pfmclrapi.dll" />
<file src="dlls\Mediabrowser.PluginSecurity.dll" target="lib\net45\Mediabrowser.PluginSecurity.dll" />
+ <file src="dlls\pfmclrapi.dll" target="lib\net45\pfmclrapi.dll" />
</files>
</package> \ No newline at end of file