| 
														
															@@ -613,7 +613,7 @@ namespace Emby.Server.Implementations 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             DiscoverTypes(); 
														 | 
														
														 | 
														
															             DiscoverTypes(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            await RegisterResources(serviceCollection, startupConfig).ConfigureAwait(false); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            await RegisterServices(serviceCollection, startupConfig).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             ContentRoot = ServerConfigurationManager.Configuration.DashboardSourcePath; 
														 | 
														
														 | 
														
															             ContentRoot = ServerConfigurationManager.Configuration.DashboardSourcePath; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (string.IsNullOrEmpty(ContentRoot)) 
														 | 
														
														 | 
														
															             if (string.IsNullOrEmpty(ContentRoot)) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -650,9 +650,9 @@ namespace Emby.Server.Implementations 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         /// <summary> 
														 | 
														
														 | 
														
															         /// <summary> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        /// Registers resources that classes will depend on 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        /// Registers services/resources with the service collection that will be available via DI. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         /// </summary> 
														 | 
														
														 | 
														
															         /// </summary> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        protected async Task RegisterResources(IServiceCollection serviceCollection, IConfiguration startupConfig) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        protected async Task RegisterServices(IServiceCollection serviceCollection, IConfiguration startupConfig) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             serviceCollection.AddMemoryCache(); 
														 | 
														
														 | 
														
															             serviceCollection.AddMemoryCache(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -770,20 +770,8 @@ namespace Emby.Server.Implementations 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             CertificateInfo = GetCertificateInfo(true); 
														 | 
														
														 | 
														
															             CertificateInfo = GetCertificateInfo(true); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             Certificate = GetCertificate(CertificateInfo); 
														 | 
														
														 | 
														
															             Certificate = GetCertificate(CertificateInfo); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            HttpServer = new HttpListenerHost( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                this, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                LoggerFactory.CreateLogger<HttpListenerHost>(), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                ServerConfigurationManager, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                startupConfig, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                NetworkManager, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                JsonSerializer, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                XmlSerializer, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                CreateHttpListener()) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                GlobalResponse = LocalizationManager.GetLocalizedString("StartupEmbyServerIsLoading") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            }; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            serviceCollection.AddSingleton(HttpServer); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            serviceCollection.AddSingleton<IHttpListener, WebSocketSharpListener>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            serviceCollection.AddSingleton<IHttpServer, HttpListenerHost>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             ImageProcessor = new ImageProcessor(LoggerFactory.CreateLogger<ImageProcessor>(), ServerConfigurationManager.ApplicationPaths, FileSystemManager, ImageEncoder, () => LibraryManager, () => MediaEncoder); 
														 | 
														
														 | 
														
															             ImageProcessor = new ImageProcessor(LoggerFactory.CreateLogger<ImageProcessor>(), ServerConfigurationManager.ApplicationPaths, FileSystemManager, ImageEncoder, () => LibraryManager, () => MediaEncoder); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             serviceCollection.AddSingleton(ImageProcessor); 
														 | 
														
														 | 
														
															             serviceCollection.AddSingleton(ImageProcessor); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -891,6 +879,14 @@ namespace Emby.Server.Implementations 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             ((LibraryManager)LibraryManager).ItemRepository = ItemRepository; 
														 | 
														
														 | 
														
															             ((LibraryManager)LibraryManager).ItemRepository = ItemRepository; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        /// <summary> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        /// Create services registered with the service container that need to be initialized at application startup. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        /// </summary> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        public void InitializeServices() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            HttpServer = Resolve<IHttpServer>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         public static void LogEnvironmentInfo(ILogger logger, IApplicationPaths appPaths) 
														 | 
														
														 | 
														
															         public static void LogEnvironmentInfo(ILogger logger, IApplicationPaths appPaths) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             // Distinct these to prevent users from reporting problems that aren't actually problems 
														 | 
														
														 | 
														
															             // Distinct these to prevent users from reporting problems that aren't actually problems 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1196,8 +1192,6 @@ namespace Emby.Server.Implementations 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             }); 
														 | 
														
														 | 
														
															             }); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        protected IHttpListener CreateHttpListener() => new WebSocketSharpListener(LoggerFactory.CreateLogger<WebSocketSharpListener>()); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         private CertificateInfo GetCertificateInfo(bool generateCertificate) 
														 | 
														
														 | 
														
															         private CertificateInfo GetCertificateInfo(bool generateCertificate) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             // Custom cert 
														 | 
														
														 | 
														
															             // Custom cert 
														 |