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