mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-14 02:37:08 -07:00
More work on WindowsService, still broken
This commit is contained in:
parent
6b7923bd52
commit
6f3065d5ab
13 changed files with 289 additions and 183 deletions
|
@ -1,7 +1,9 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using NLog;
|
||||
using NzbDrone.Model;
|
||||
using NzbDrone.Providers;
|
||||
|
@ -15,42 +17,89 @@ namespace NzbDrone
|
|||
private readonly ApplicationServer _applicationServer;
|
||||
private readonly ServiceProvider _serviceProvider;
|
||||
private readonly ConsoleProvider _consoleProvider;
|
||||
private readonly EnviromentProvider _enviromentProvider;
|
||||
|
||||
public Router(ApplicationServer applicationServer, ServiceProvider serviceProvider, ConsoleProvider consoleProvider)
|
||||
public Router(ApplicationServer applicationServer, ServiceProvider serviceProvider, ConsoleProvider consoleProvider, EnviromentProvider enviromentProvider)
|
||||
{
|
||||
_applicationServer = applicationServer;
|
||||
_serviceProvider = serviceProvider;
|
||||
_consoleProvider = consoleProvider;
|
||||
_enviromentProvider = enviromentProvider;
|
||||
}
|
||||
|
||||
public void Route()
|
||||
public void Route(IEnumerable<string> args)
|
||||
{
|
||||
Logger.Info("Application mode: {0}", CentralDispatch.ApplicationMode);
|
||||
switch (CentralDispatch.ApplicationMode)
|
||||
{
|
||||
Route(GetApplicationMode(args));
|
||||
}
|
||||
|
||||
case ApplicationMode.Console:
|
||||
{
|
||||
_applicationServer.Start();
|
||||
_consoleProvider.WaitForClose();
|
||||
break;
|
||||
}
|
||||
case ApplicationMode.InstallService:
|
||||
{
|
||||
_serviceProvider.Install();
|
||||
break;
|
||||
}
|
||||
case ApplicationMode.UninstallService:
|
||||
{
|
||||
_serviceProvider.UnInstall();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
_consoleProvider.PrintHelp();
|
||||
break;
|
||||
}
|
||||
public void Route(ApplicationMode applicationMode)
|
||||
{
|
||||
Logger.Info("Application mode: {0}", applicationMode);
|
||||
|
||||
_applicationServer.IsRunningAsService();
|
||||
|
||||
while (!Debugger.IsAttached)
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
|
||||
|
||||
if (_enviromentProvider.IsRunningAsService)
|
||||
{
|
||||
_applicationServer.StartService();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (applicationMode)
|
||||
{
|
||||
|
||||
case ApplicationMode.Console:
|
||||
{
|
||||
_applicationServer.Start();
|
||||
_consoleProvider.WaitForClose();
|
||||
break;
|
||||
}
|
||||
case ApplicationMode.InstallService:
|
||||
{
|
||||
if (_serviceProvider.ServiceExist(ServiceProvider.NzbDroneServiceName))
|
||||
{
|
||||
_consoleProvider.PrintServiceAlreadyExist();
|
||||
}
|
||||
else
|
||||
{
|
||||
_serviceProvider.Install();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ApplicationMode.UninstallService:
|
||||
{
|
||||
_serviceProvider.UnInstall();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
_consoleProvider.PrintHelp();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static ApplicationMode GetApplicationMode(IEnumerable<string> args)
|
||||
{
|
||||
if (args == null) return ApplicationMode.Console;
|
||||
|
||||
var cleanArgs = args.Where(c => c != null && !String.IsNullOrWhiteSpace(c)).ToList();
|
||||
if (cleanArgs.Count == 0) return ApplicationMode.Console;
|
||||
if (cleanArgs.Count != 1) return ApplicationMode.Help;
|
||||
|
||||
var arg = cleanArgs.First().Trim('/', '\\', '-').ToLower();
|
||||
|
||||
if (arg == "i") return ApplicationMode.InstallService;
|
||||
if (arg == "u") return ApplicationMode.UninstallService;
|
||||
|
||||
return ApplicationMode.Help;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue