diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-05-23 18:01:13 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-05-23 18:01:13 -0400 |
| commit | fb48dd34870d5ef8d1d636d83af5132e26b99449 (patch) | |
| tree | 9e7255544f2ada5494ac4c20b6bd54d72ad47038 /MediaBrowser.Server.Mono/Program.cs | |
| parent | d0c9273d679cfec73c10e6f863c5cf9012a3aa2f (diff) | |
support mono restarts
Diffstat (limited to 'MediaBrowser.Server.Mono/Program.cs')
| -rw-r--r-- | MediaBrowser.Server.Mono/Program.cs | 33 |
1 files changed, 32 insertions, 1 deletions
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 |
