From fb48dd34870d5ef8d1d636d83af5132e26b99449 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 23 May 2015 18:01:13 -0400 Subject: support mono restarts --- MediaBrowser.Server.Mono/Program.cs | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'MediaBrowser.Server.Mono/Program.cs') diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs index 10a6c6fb9..7cd80f5c9 100644 --- a/MediaBrowser.Server.Mono/Program.cs +++ b/MediaBrowser.Server.Mono/Program.cs @@ -1,4 +1,3 @@ -using System.IO; using MediaBrowser.Common.Implementations.IO; using MediaBrowser.Common.Implementations.Logging; using MediaBrowser.Model.Logging; @@ -8,6 +7,8 @@ using MediaBrowser.Server.Startup.Common; using Microsoft.Win32; using System; using System.Diagnostics; +using System.IO; +using System.Linq; using System.Net; using System.Net.Security; using System.Reflection; @@ -136,6 +137,36 @@ namespace MediaBrowser.Server.Mono { ApplicationTaskCompletionSource.SetResult (true); } + + public static void Restart() + { + _logger.Info("Disposing app host"); + _appHost.Dispose(); + + _logger.Info("Starting new instance"); + + var currentProcess = Process.GetCurrentProcess(); + + var args = Environment.GetCommandLineArgs() + .Select(NormalizeCommandLineArgument); + + var commandLineArgsString = string.Join(" ", args.ToArray()); + + Process.Start(currentProcess.MainModule.FileName, commandLineArgsString); + + _logger.Info("Calling Environment.Exit"); + Environment.Exit(0); + } + + private static string NormalizeCommandLineArgument(string arg) + { + if (arg.IndexOf(" ", StringComparison.OrdinalIgnoreCase) == -1) + { + return arg; + } + + return "\"" + arg + "\""; + } } class NoCheckCertificatePolicy : ICertificatePolicy -- cgit v1.2.3