|
@@ -33,6 +33,9 @@ namespace MediaBrowser.Server.Mono
|
|
private static ILogger _logger;
|
|
private static ILogger _logger;
|
|
private static IFileSystem FileSystem;
|
|
private static IFileSystem FileSystem;
|
|
|
|
|
|
|
|
+ private static readonly TaskCompletionSource<bool> ApplicationTaskCompletionSource = new TaskCompletionSource<bool>();
|
|
|
|
+ private static bool _restartOnShutdown;
|
|
|
|
+
|
|
public static void Main(string[] args)
|
|
public static void Main(string[] args)
|
|
{
|
|
{
|
|
var applicationPath = Assembly.GetEntryAssembly().Location;
|
|
var applicationPath = Assembly.GetEntryAssembly().Location;
|
|
@@ -63,9 +66,13 @@ namespace MediaBrowser.Server.Mono
|
|
}
|
|
}
|
|
finally
|
|
finally
|
|
{
|
|
{
|
|
- logger.Info("Shutting down");
|
|
|
|
-
|
|
|
|
|
|
+ _logger.Info("Disposing app host");
|
|
_appHost.Dispose();
|
|
_appHost.Dispose();
|
|
|
|
+
|
|
|
|
+ if (_restartOnShutdown)
|
|
|
|
+ {
|
|
|
|
+ StartNewInstance(options);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -86,8 +93,6 @@ namespace MediaBrowser.Server.Mono
|
|
return new ServerApplicationPaths(programDataPath, appFolderPath, Path.GetDirectoryName(applicationPath));
|
|
return new ServerApplicationPaths(programDataPath, appFolderPath, Path.GetDirectoryName(applicationPath));
|
|
}
|
|
}
|
|
|
|
|
|
- private static readonly TaskCompletionSource<bool> ApplicationTaskCompletionSource = new TaskCompletionSource<bool>();
|
|
|
|
-
|
|
|
|
private static void RunApplication(ServerApplicationPaths appPaths, ILogManager logManager, StartupOptions options)
|
|
private static void RunApplication(ServerApplicationPaths appPaths, ILogManager logManager, StartupOptions options)
|
|
{
|
|
{
|
|
// Allow all https requests
|
|
// Allow all https requests
|
|
@@ -243,11 +248,15 @@ namespace MediaBrowser.Server.Mono
|
|
ApplicationTaskCompletionSource.SetResult(true);
|
|
ApplicationTaskCompletionSource.SetResult(true);
|
|
}
|
|
}
|
|
|
|
|
|
- public static void Restart(StartupOptions startupOptions)
|
|
|
|
|
|
+ public static void Restart()
|
|
{
|
|
{
|
|
- _logger.Info("Disposing app host");
|
|
|
|
- _appHost.Dispose();
|
|
|
|
|
|
+ _restartOnShutdown = true;
|
|
|
|
+
|
|
|
|
+ Shutdown();
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ private static void StartNewInstance(StartupOptions startupOptions)
|
|
|
|
+ {
|
|
_logger.Info("Starting new instance");
|
|
_logger.Info("Starting new instance");
|
|
|
|
|
|
string module = startupOptions.GetOption("-restartpath");
|
|
string module = startupOptions.GetOption("-restartpath");
|
|
@@ -260,9 +269,9 @@ namespace MediaBrowser.Server.Mono
|
|
if (!startupOptions.ContainsOption("-restartargs"))
|
|
if (!startupOptions.ContainsOption("-restartargs"))
|
|
{
|
|
{
|
|
var args = Environment.GetCommandLineArgs()
|
|
var args = Environment.GetCommandLineArgs()
|
|
- .Skip(1)
|
|
|
|
- .Select(NormalizeCommandLineArgument)
|
|
|
|
- .ToArray();
|
|
|
|
|
|
+ .Skip(1)
|
|
|
|
+ .Select(NormalizeCommandLineArgument)
|
|
|
|
+ .ToArray();
|
|
|
|
|
|
commandLineArgsString = string.Join(" ", args);
|
|
commandLineArgsString = string.Join(" ", args);
|
|
}
|
|
}
|
|
@@ -271,9 +280,6 @@ namespace MediaBrowser.Server.Mono
|
|
_logger.Info("Arguments: {0}", commandLineArgsString);
|
|
_logger.Info("Arguments: {0}", commandLineArgsString);
|
|
|
|
|
|
Process.Start(module, commandLineArgsString);
|
|
Process.Start(module, commandLineArgsString);
|
|
-
|
|
|
|
- _logger.Info("Calling Environment.Exit");
|
|
|
|
- Environment.Exit(0);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
private static string NormalizeCommandLineArgument(string arg)
|
|
private static string NormalizeCommandLineArgument(string arg)
|