mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-12-16 05:53:03 +03:00
update .net core startup
This commit is contained in:
@@ -142,7 +142,7 @@ namespace Emby.Server.Core
|
||||
/// <summary>
|
||||
/// Class CompositionRoot
|
||||
/// </summary>
|
||||
public class ApplicationHost : BaseApplicationHost<ServerApplicationPaths>, IServerApplicationHost, IDependencyContainer
|
||||
public abstract class ApplicationHost : BaseApplicationHost<ServerApplicationPaths>, IServerApplicationHost, IDependencyContainer
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the server configuration manager.
|
||||
@@ -257,11 +257,9 @@ namespace Emby.Server.Core
|
||||
|
||||
protected IAuthService AuthService { get; private set; }
|
||||
|
||||
private readonly StartupOptions _startupOptions;
|
||||
protected readonly StartupOptions StartupOptions;
|
||||
private readonly string _releaseAssetFilename;
|
||||
|
||||
internal INativeApp NativeApp { get; set; }
|
||||
|
||||
internal IPowerManagement PowerManagement { get; private set; }
|
||||
internal IImageEncoder ImageEncoder { get; private set; }
|
||||
|
||||
@@ -275,7 +273,6 @@ namespace Emby.Server.Core
|
||||
ILogManager logManager,
|
||||
StartupOptions options,
|
||||
IFileSystem fileSystem,
|
||||
INativeApp nativeApp,
|
||||
IPowerManagement powerManagement,
|
||||
string releaseAssetFilename,
|
||||
IEnvironmentInfo environmentInfo,
|
||||
@@ -293,11 +290,10 @@ namespace Emby.Server.Core
|
||||
memoryStreamFactory,
|
||||
networkManager)
|
||||
{
|
||||
_startupOptions = options;
|
||||
StartupOptions = options;
|
||||
_certificateGenerator = certificateGenerator;
|
||||
_releaseAssetFilename = releaseAssetFilename;
|
||||
_defaultUserNameFactory = defaultUsernameFactory;
|
||||
NativeApp = nativeApp;
|
||||
PowerManagement = powerManagement;
|
||||
|
||||
ImageEncoder = imageEncoder;
|
||||
@@ -314,19 +310,11 @@ namespace Emby.Server.Core
|
||||
{
|
||||
get
|
||||
{
|
||||
return _version ?? (_version = GetAssembly(NativeApp.GetType()).GetName().Version);
|
||||
return _version ?? (_version = GetAssembly(GetType()).GetName().Version);
|
||||
}
|
||||
}
|
||||
|
||||
public override bool IsRunningAsService
|
||||
{
|
||||
get { return NativeApp.IsRunningAsService; }
|
||||
}
|
||||
|
||||
public bool SupportsRunningAsService
|
||||
{
|
||||
get { return NativeApp.SupportsRunningAsService; }
|
||||
}
|
||||
public abstract bool SupportsRunningAsService { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the name.
|
||||
@@ -345,19 +333,7 @@ namespace Emby.Server.Core
|
||||
return type.GetTypeInfo().Assembly;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this instance can self restart.
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if this instance can self restart; otherwise, <c>false</c>.</value>
|
||||
public override bool CanSelfRestart
|
||||
{
|
||||
get { return NativeApp.CanSelfRestart; }
|
||||
}
|
||||
|
||||
public bool SupportsAutoRunAtStartup
|
||||
{
|
||||
get { return NativeApp.SupportsAutoRunAtStartup; }
|
||||
}
|
||||
public abstract bool SupportsAutoRunAtStartup { get; }
|
||||
|
||||
private void SetBaseExceptionMessage()
|
||||
{
|
||||
@@ -580,11 +556,11 @@ namespace Emby.Server.Core
|
||||
|
||||
UserRepository = await GetUserRepository().ConfigureAwait(false);
|
||||
|
||||
var displayPreferencesRepo = new SqliteDisplayPreferencesRepository(LogManager, JsonSerializer, ApplicationPaths, NativeApp.GetDbConnector(), MemoryStreamFactory);
|
||||
var displayPreferencesRepo = new SqliteDisplayPreferencesRepository(LogManager, JsonSerializer, ApplicationPaths, GetDbConnector(), MemoryStreamFactory);
|
||||
DisplayPreferencesRepository = displayPreferencesRepo;
|
||||
RegisterSingleInstance(DisplayPreferencesRepository);
|
||||
|
||||
var itemRepo = new SqliteItemRepository(ServerConfigurationManager, JsonSerializer, LogManager, NativeApp.GetDbConnector(), MemoryStreamFactory);
|
||||
var itemRepo = new SqliteItemRepository(ServerConfigurationManager, JsonSerializer, LogManager, GetDbConnector(), MemoryStreamFactory);
|
||||
ItemRepository = itemRepo;
|
||||
RegisterSingleInstance(ItemRepository);
|
||||
|
||||
@@ -707,7 +683,7 @@ namespace Emby.Server.Core
|
||||
EncodingManager = new EncodingManager(FileSystemManager, Logger, MediaEncoder, ChapterManager, LibraryManager);
|
||||
RegisterSingleInstance(EncodingManager);
|
||||
|
||||
var sharingRepo = new SharingRepository(LogManager, ApplicationPaths, NativeApp.GetDbConnector());
|
||||
var sharingRepo = new SharingRepository(LogManager, ApplicationPaths, GetDbConnector());
|
||||
await sharingRepo.Initialize().ConfigureAwait(false);
|
||||
RegisterSingleInstance<ISharingManager>(new SharingManager(sharingRepo, ServerConfigurationManager, LibraryManager, this));
|
||||
|
||||
@@ -727,7 +703,7 @@ namespace Emby.Server.Core
|
||||
|
||||
await displayPreferencesRepo.Initialize().ConfigureAwait(false);
|
||||
|
||||
var userDataRepo = new SqliteUserDataRepository(LogManager, ApplicationPaths, NativeApp.GetDbConnector());
|
||||
var userDataRepo = new SqliteUserDataRepository(LogManager, ApplicationPaths, GetDbConnector());
|
||||
|
||||
((UserDataManager)UserDataManager).Repository = userDataRepo;
|
||||
await itemRepo.Initialize(userDataRepo).ConfigureAwait(false);
|
||||
@@ -770,14 +746,16 @@ namespace Emby.Server.Core
|
||||
{
|
||||
var maxConcurrentImageProcesses = Math.Max(Environment.ProcessorCount, 4);
|
||||
|
||||
if (_startupOptions.ContainsOption("-imagethreads"))
|
||||
if (StartupOptions.ContainsOption("-imagethreads"))
|
||||
{
|
||||
int.TryParse(_startupOptions.GetOption("-imagethreads"), NumberStyles.Any, CultureInfo.InvariantCulture, out maxConcurrentImageProcesses);
|
||||
int.TryParse(StartupOptions.GetOption("-imagethreads"), NumberStyles.Any, CultureInfo.InvariantCulture, out maxConcurrentImageProcesses);
|
||||
}
|
||||
|
||||
return new ImageProcessor(LogManager.GetLogger("ImageProcessor"), ServerConfigurationManager.ApplicationPaths, FileSystemManager, JsonSerializer, ImageEncoder, maxConcurrentImageProcesses, () => LibraryManager, TimerFactory);
|
||||
}
|
||||
|
||||
protected abstract FFMpegInstallInfo GetFfmpegInstallInfo();
|
||||
|
||||
/// <summary>
|
||||
/// Registers the media encoder.
|
||||
/// </summary>
|
||||
@@ -787,8 +765,8 @@ namespace Emby.Server.Core
|
||||
string encoderPath = null;
|
||||
string probePath = null;
|
||||
|
||||
var info = await new FFMpegLoader(Logger, ApplicationPaths, HttpClient, ZipClient, FileSystemManager, NativeApp.GetFfmpegInstallInfo())
|
||||
.GetFFMpegInfo(_startupOptions, progress).ConfigureAwait(false);
|
||||
var info = await new FFMpegLoader(Logger, ApplicationPaths, HttpClient, ZipClient, FileSystemManager, GetFfmpegInstallInfo())
|
||||
.GetFFMpegInfo(StartupOptions, progress).ConfigureAwait(false);
|
||||
|
||||
encoderPath = info.EncoderPath;
|
||||
probePath = info.ProbePath;
|
||||
@@ -825,7 +803,7 @@ namespace Emby.Server.Core
|
||||
/// <returns>Task{IUserRepository}.</returns>
|
||||
private async Task<IUserRepository> GetUserRepository()
|
||||
{
|
||||
var repo = new SqliteUserRepository(LogManager, ApplicationPaths, JsonSerializer, NativeApp.GetDbConnector(), MemoryStreamFactory);
|
||||
var repo = new SqliteUserRepository(LogManager, ApplicationPaths, JsonSerializer, GetDbConnector(), MemoryStreamFactory);
|
||||
|
||||
await repo.Initialize().ConfigureAwait(false);
|
||||
|
||||
@@ -838,7 +816,7 @@ namespace Emby.Server.Core
|
||||
/// <returns>Task{IUserRepository}.</returns>
|
||||
private async Task<IFileOrganizationRepository> GetFileOrganizationRepository()
|
||||
{
|
||||
var repo = new SqliteFileOrganizationRepository(LogManager, ServerConfigurationManager.ApplicationPaths, NativeApp.GetDbConnector());
|
||||
var repo = new SqliteFileOrganizationRepository(LogManager, ServerConfigurationManager.ApplicationPaths, GetDbConnector());
|
||||
|
||||
await repo.Initialize().ConfigureAwait(false);
|
||||
|
||||
@@ -847,7 +825,7 @@ namespace Emby.Server.Core
|
||||
|
||||
private async Task<IAuthenticationRepository> GetAuthenticationRepository()
|
||||
{
|
||||
var repo = new AuthenticationRepository(LogManager, ServerConfigurationManager.ApplicationPaths, NativeApp.GetDbConnector());
|
||||
var repo = new AuthenticationRepository(LogManager, ServerConfigurationManager.ApplicationPaths, GetDbConnector());
|
||||
|
||||
await repo.Initialize().ConfigureAwait(false);
|
||||
|
||||
@@ -856,7 +834,7 @@ namespace Emby.Server.Core
|
||||
|
||||
private async Task<IActivityRepository> GetActivityLogRepository()
|
||||
{
|
||||
var repo = new ActivityRepository(LogManager, ServerConfigurationManager.ApplicationPaths, NativeApp.GetDbConnector());
|
||||
var repo = new ActivityRepository(LogManager, ServerConfigurationManager.ApplicationPaths, GetDbConnector());
|
||||
|
||||
await repo.Initialize().ConfigureAwait(false);
|
||||
|
||||
@@ -865,7 +843,7 @@ namespace Emby.Server.Core
|
||||
|
||||
private async Task<ISyncRepository> GetSyncRepository()
|
||||
{
|
||||
var repo = new SyncRepository(LogManager, JsonSerializer, ServerConfigurationManager.ApplicationPaths, NativeApp.GetDbConnector());
|
||||
var repo = new SyncRepository(LogManager, JsonSerializer, ServerConfigurationManager.ApplicationPaths, GetDbConnector());
|
||||
|
||||
await repo.Initialize().ConfigureAwait(false);
|
||||
|
||||
@@ -877,7 +855,7 @@ namespace Emby.Server.Core
|
||||
/// </summary>
|
||||
private async Task ConfigureNotificationsRepository()
|
||||
{
|
||||
var repo = new SqliteNotificationsRepository(LogManager, ApplicationPaths, NativeApp.GetDbConnector());
|
||||
var repo = new SqliteNotificationsRepository(LogManager, ApplicationPaths, GetDbConnector());
|
||||
|
||||
await repo.Initialize().ConfigureAwait(false);
|
||||
|
||||
@@ -1123,24 +1101,12 @@ namespace Emby.Server.Core
|
||||
Logger.ErrorException("Error sending server restart notification", ex);
|
||||
}
|
||||
|
||||
Logger.Info("Calling NativeApp.Restart");
|
||||
Logger.Info("Calling RestartInternal");
|
||||
|
||||
NativeApp.Restart(_startupOptions);
|
||||
RestartInternal();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether this instance can self update.
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if this instance can self update; otherwise, <c>false</c>.</value>
|
||||
public override bool CanSelfUpdate
|
||||
{
|
||||
get
|
||||
{
|
||||
#pragma warning disable 162
|
||||
return NativeApp.CanSelfUpdate;
|
||||
#pragma warning restore 162
|
||||
}
|
||||
}
|
||||
protected abstract void RestartInternal();
|
||||
|
||||
/// <summary>
|
||||
/// Gets the composable part assemblies.
|
||||
@@ -1196,14 +1162,16 @@ namespace Emby.Server.Core
|
||||
// Xbmc
|
||||
list.Add(GetAssembly(typeof(ArtistNfoProvider)));
|
||||
|
||||
list.AddRange(NativeApp.GetAssembliesWithParts());
|
||||
list.AddRange(GetAssembliesWithPartsInternal());
|
||||
|
||||
// Include composable parts in the running assembly
|
||||
list.Add(GetAssembly(GetType()));
|
||||
list.Add(GetAssembly(typeof(ApplicationHost)));
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
protected abstract List<Assembly> GetAssembliesWithPartsInternal();
|
||||
|
||||
/// <summary>
|
||||
/// Gets the plugin assemblies.
|
||||
/// </summary>
|
||||
@@ -1280,7 +1248,7 @@ namespace Emby.Server.Core
|
||||
EncoderLocationType = MediaEncoder.EncoderLocationType,
|
||||
SystemArchitecture = EnvironmentInfo.SystemArchitecture,
|
||||
SystemUpdateLevel = ConfigurationManager.CommonConfiguration.SystemUpdateLevel,
|
||||
PackageName = _startupOptions.GetOption("-package")
|
||||
PackageName = StartupOptions.GetOption("-package")
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1456,9 +1424,11 @@ namespace Emby.Server.Core
|
||||
Logger.ErrorException("Error sending server shutdown notification", ex);
|
||||
}
|
||||
|
||||
NativeApp.Shutdown();
|
||||
ShutdownInternal();
|
||||
}
|
||||
|
||||
protected abstract void ShutdownInternal();
|
||||
|
||||
/// <summary>
|
||||
/// Registers the server with administrator access.
|
||||
/// </summary>
|
||||
@@ -1468,7 +1438,7 @@ namespace Emby.Server.Core
|
||||
|
||||
try
|
||||
{
|
||||
NativeApp.AuthorizeServer(
|
||||
AuthorizeServer(
|
||||
UdpServerEntryPoint.PortNumber,
|
||||
ServerConfigurationManager.Configuration.HttpServerPortNumber,
|
||||
ServerConfigurationManager.Configuration.HttpsPortNumber,
|
||||
@@ -1481,6 +1451,9 @@ namespace Emby.Server.Core
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void AuthorizeServer(int udpPort, int httpServerPort, int httpsServerPort, string applicationPath, string tempDirectory);
|
||||
protected abstract IDbConnector GetDbConnector();
|
||||
|
||||
public event EventHandler HasUpdateAvailableChanged;
|
||||
|
||||
private bool _hasUpdateAvailable;
|
||||
@@ -1551,10 +1524,12 @@ namespace Emby.Server.Core
|
||||
{
|
||||
if (SupportsAutoRunAtStartup)
|
||||
{
|
||||
NativeApp.ConfigureAutoRun(autorun);
|
||||
ConfigureAutoRunInternal(autorun);
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void ConfigureAutoRunInternal(bool autorun);
|
||||
|
||||
/// <summary>
|
||||
/// This returns localhost in the case of no external dns, and the hostname if the
|
||||
/// dns is prefixed with a valid Uri prefix.
|
||||
@@ -1578,16 +1553,15 @@ namespace Emby.Server.Core
|
||||
}
|
||||
}
|
||||
|
||||
public void LaunchUrl(string url)
|
||||
{
|
||||
NativeApp.LaunchUrl(url);
|
||||
}
|
||||
public abstract void LaunchUrl(string url);
|
||||
|
||||
public void EnableLoopback(string appName)
|
||||
{
|
||||
NativeApp.EnableLoopback(appName);
|
||||
EnableLoopbackInternal(appName);
|
||||
}
|
||||
|
||||
protected abstract void EnableLoopbackInternal(string appName);
|
||||
|
||||
private void RegisterModules()
|
||||
{
|
||||
var moduleTypes = GetExportTypes<IDependencyModule>();
|
||||
|
||||
Reference in New Issue
Block a user