Do not create unnecessary instances of IService at server startup

This commit is contained in:
Mark Monteiro 2020-03-21 23:17:30 +01:00
parent aa546dd36a
commit dc140429fe
3 changed files with 7 additions and 8 deletions

View File

@ -1046,7 +1046,7 @@ namespace Emby.Server.Implementations
.Where(i => i != null) .Where(i => i != null)
.ToArray(); .ToArray();
HttpServer.Init(GetExports<IService>(false), GetExports<IWebSocketListener>(), GetUrlPrefixes()); HttpServer.Init(GetExportTypes<IService>(), GetExports<IWebSocketListener>(), GetUrlPrefixes());
LibraryManager.AddParts( LibraryManager.AddParts(
GetExports<IResolverIgnoreRule>(), GetExports<IResolverIgnoreRule>(),

View File

@ -594,17 +594,16 @@ namespace Emby.Server.Implementations.HttpServer
/// <summary> /// <summary>
/// Adds the rest handlers. /// Adds the rest handlers.
/// </summary> /// </summary>
/// <param name="services">The services.</param> /// <param name="serviceTypes">The service types to register with the <see cref="ServiceController"/>.</param>
/// <param name="listeners"></param> /// <param name="listeners">The web socket listeners.</param>
/// <param name="urlPrefixes"></param> /// <param name="urlPrefixes">The URL prefixes. See <see cref="UrlPrefixes"/>.</param>
public void Init(IEnumerable<IService> services, IEnumerable<IWebSocketListener> listeners, IEnumerable<string> urlPrefixes) public void Init(IEnumerable<Type> serviceTypes, IEnumerable<IWebSocketListener> listeners, IEnumerable<string> urlPrefixes)
{ {
_webSocketListeners = listeners.ToArray(); _webSocketListeners = listeners.ToArray();
UrlPrefixes = urlPrefixes.ToArray(); UrlPrefixes = urlPrefixes.ToArray();
ServiceController = new ServiceController(); ServiceController = new ServiceController();
var types = services.Select(r => r.GetType()); ServiceController.Init(this, serviceTypes);
ServiceController.Init(this, types);
ResponseFilters = new Action<IRequest, HttpResponse, object>[] ResponseFilters = new Action<IRequest, HttpResponse, object>[]
{ {

View File

@ -32,7 +32,7 @@ namespace MediaBrowser.Controller.Net
/// <summary> /// <summary>
/// Inits this instance. /// Inits this instance.
/// </summary> /// </summary>
void Init(IEnumerable<IService> services, IEnumerable<IWebSocketListener> listener, IEnumerable<string> urlPrefixes); void Init(IEnumerable<Type> serviceTypes, IEnumerable<IWebSocketListener> listener, IEnumerable<string> urlPrefixes);
/// <summary> /// <summary>
/// If set, all requests will respond with this message /// If set, all requests will respond with this message