| 
														
															@@ -3,6 +3,7 @@ using System.Collections.Generic; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using System.Threading.Tasks; 
														 | 
														
														 | 
														
															 using System.Threading.Tasks; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using Emby.Server.Implementations.HttpServer; 
														 | 
														
														 | 
														
															 using Emby.Server.Implementations.HttpServer; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using MediaBrowser.Model.Services; 
														 | 
														
														 | 
														
															 using MediaBrowser.Model.Services; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+using Microsoft.Extensions.Logging; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 namespace Emby.Server.Implementations.Services 
														 | 
														
														 | 
														
															 namespace Emby.Server.Implementations.Services 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -11,6 +12,13 @@ namespace Emby.Server.Implementations.Services 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public class ServiceController 
														 | 
														
														 | 
														
															     public class ServiceController 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     { 
														 | 
														
														 | 
														
															     { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        private readonly ILogger _log; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        public ServiceController(ILogger<ServiceController> log) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            _log = log; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         public void Init(HttpListenerHost appHost, IEnumerable<Type> serviceTypes) 
														 | 
														
														 | 
														
															         public void Init(HttpListenerHost appHost, IEnumerable<Type> serviceTypes) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             foreach (var serviceType in serviceTypes) 
														 | 
														
														 | 
														
															             foreach (var serviceType in serviceTypes) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -21,6 +29,13 @@ namespace Emby.Server.Implementations.Services 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         public void RegisterService(HttpListenerHost appHost, Type serviceType) 
														 | 
														
														 | 
														
															         public void RegisterService(HttpListenerHost appHost, Type serviceType) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            // Make sure the provided type implements IService 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if (!serviceType.IsAssignableFrom(typeof(IService))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                _log.LogWarning("Tried to register a service that does not implement IService: {ServiceType}", serviceType); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                return; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var processedReqs = new HashSet<Type>(); 
														 | 
														
														 | 
														
															             var processedReqs = new HashSet<Type>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var actions = ServiceExecGeneral.Reset(serviceType); 
														 | 
														
														 | 
														
															             var actions = ServiceExecGeneral.Reset(serviceType); 
														 |