2013-11-25 22:53:36 -08:00
|
|
|
using NLog;
|
2011-10-22 22:26:43 -07:00
|
|
|
using NzbDrone.Common;
|
2011-10-08 19:16:11 -07:00
|
|
|
|
2013-08-06 22:32:22 -07:00
|
|
|
namespace NzbDrone.Host
|
2011-10-08 19:16:11 -07:00
|
|
|
{
|
2011-10-12 19:24:30 -07:00
|
|
|
public class Router
|
2011-10-08 19:16:11 -07:00
|
|
|
{
|
2013-04-15 21:52:41 -07:00
|
|
|
private readonly INzbDroneServiceFactory _nzbDroneServiceFactory;
|
2013-05-10 16:53:50 -07:00
|
|
|
private readonly IServiceProvider _serviceProvider;
|
2013-04-15 21:52:41 -07:00
|
|
|
private readonly IConsoleService _consoleService;
|
2013-02-28 16:50:50 -08:00
|
|
|
private readonly Logger _logger;
|
2011-10-08 19:16:11 -07:00
|
|
|
|
2013-11-25 22:53:36 -08:00
|
|
|
public Router(INzbDroneServiceFactory nzbDroneServiceFactory, IServiceProvider serviceProvider,
|
|
|
|
IConsoleService consoleService, Logger logger)
|
2011-10-08 19:16:11 -07:00
|
|
|
{
|
2013-04-15 21:52:41 -07:00
|
|
|
_nzbDroneServiceFactory = nzbDroneServiceFactory;
|
2011-10-08 19:16:11 -07:00
|
|
|
_serviceProvider = serviceProvider;
|
2013-04-15 21:52:41 -07:00
|
|
|
_consoleService = consoleService;
|
2013-02-28 16:50:50 -08:00
|
|
|
_logger = logger;
|
2011-10-08 19:16:11 -07:00
|
|
|
}
|
|
|
|
|
2013-02-28 16:50:50 -08:00
|
|
|
public void Route(ApplicationModes applicationModes)
|
2011-10-13 18:22:51 -07:00
|
|
|
{
|
2013-02-28 16:50:50 -08:00
|
|
|
_logger.Info("Application mode: {0}", applicationModes);
|
2013-01-15 15:17:12 -08:00
|
|
|
|
2013-02-28 16:50:50 -08:00
|
|
|
switch (applicationModes)
|
2013-01-06 00:11:14 -08:00
|
|
|
{
|
2013-02-28 16:50:50 -08:00
|
|
|
case ApplicationModes.Service:
|
2013-01-06 00:11:14 -08:00
|
|
|
{
|
2013-02-28 16:50:50 -08:00
|
|
|
_logger.Trace("Service selected");
|
2013-04-15 21:52:41 -07:00
|
|
|
_serviceProvider.Run(_nzbDroneServiceFactory.Build());
|
2013-01-06 00:11:14 -08:00
|
|
|
break;
|
|
|
|
}
|
2011-10-13 18:22:51 -07:00
|
|
|
|
2013-08-06 22:32:22 -07:00
|
|
|
case ApplicationModes.Interactive:
|
2013-01-06 00:11:14 -08:00
|
|
|
{
|
2013-02-28 16:50:50 -08:00
|
|
|
_logger.Trace("Console selected");
|
2013-04-15 21:52:41 -07:00
|
|
|
_nzbDroneServiceFactory.Start();
|
2013-01-06 00:11:14 -08:00
|
|
|
break;
|
|
|
|
}
|
2013-02-28 16:50:50 -08:00
|
|
|
case ApplicationModes.InstallService:
|
2013-01-06 00:11:14 -08:00
|
|
|
{
|
2013-02-28 16:50:50 -08:00
|
|
|
_logger.Trace("Install Service selected");
|
2013-01-06 00:11:14 -08:00
|
|
|
if (_serviceProvider.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME))
|
2011-10-13 18:22:51 -07:00
|
|
|
{
|
2013-04-15 21:52:41 -07:00
|
|
|
_consoleService.PrintServiceAlreadyExist();
|
2011-10-13 18:22:51 -07:00
|
|
|
}
|
2013-01-06 00:11:14 -08:00
|
|
|
else
|
2011-10-13 18:22:51 -07:00
|
|
|
{
|
2013-01-06 00:11:14 -08:00
|
|
|
_serviceProvider.Install(ServiceProvider.NZBDRONE_SERVICE_NAME);
|
|
|
|
_serviceProvider.Start(ServiceProvider.NZBDRONE_SERVICE_NAME);
|
2011-10-13 18:22:51 -07:00
|
|
|
}
|
2013-01-06 00:11:14 -08:00
|
|
|
break;
|
|
|
|
}
|
2013-02-28 16:50:50 -08:00
|
|
|
case ApplicationModes.UninstallService:
|
2013-01-06 00:11:14 -08:00
|
|
|
{
|
2013-02-28 16:50:50 -08:00
|
|
|
_logger.Trace("Uninstall Service selected");
|
2013-01-06 00:11:14 -08:00
|
|
|
if (!_serviceProvider.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME))
|
2011-10-13 18:22:51 -07:00
|
|
|
{
|
2013-07-08 17:47:09 -07:00
|
|
|
_consoleService.PrintServiceDoesNotExist();
|
2011-10-13 18:22:51 -07:00
|
|
|
}
|
2013-01-06 00:11:14 -08:00
|
|
|
else
|
2011-10-13 18:22:51 -07:00
|
|
|
{
|
2013-01-06 00:11:14 -08:00
|
|
|
_serviceProvider.UnInstall(ServiceProvider.NZBDRONE_SERVICE_NAME);
|
2011-10-13 18:22:51 -07:00
|
|
|
}
|
2013-01-06 00:11:14 -08:00
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
{
|
2013-04-15 21:52:41 -07:00
|
|
|
_consoleService.PrintHelp();
|
2013-01-06 00:11:14 -08:00
|
|
|
break;
|
|
|
|
}
|
2011-10-13 18:22:51 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2011-10-08 19:16:11 -07:00
|
|
|
}
|
|
|
|
}
|