53 lines
1.4 KiB
C#
53 lines
1.4 KiB
C#
using System;
|
|
using MonsterMonitor.Models;
|
|
|
|
namespace MonsterMonitor.Services
|
|
{
|
|
public sealed class AppController : IDisposable
|
|
{
|
|
private readonly LogService _log;
|
|
private readonly PowerManagementService _power;
|
|
private readonly SsConfigService _ssConfig;
|
|
private ProcessMonitorService _processMonitor;
|
|
private SshTunnelService _sshTunnel;
|
|
|
|
public AppController(LogService log, PowerManagementService power)
|
|
{
|
|
_log = log;
|
|
_power = power;
|
|
_ssConfig = new SsConfigService(_log);
|
|
}
|
|
|
|
public void Start(AppSettings settings)
|
|
{
|
|
Stop();
|
|
|
|
_power.PreventSleep();
|
|
_processMonitor = new ProcessMonitorService(_log);
|
|
_sshTunnel = new SshTunnelService(_log);
|
|
|
|
_ssConfig.EnsureConfig(settings);
|
|
_processMonitor.Start(settings.SsProcessPath, settings.SsArguments);
|
|
_sshTunnel.Start(settings);
|
|
|
|
_log.Info("Сервисы приложения запущены.");
|
|
}
|
|
|
|
public void Stop()
|
|
{
|
|
_sshTunnel?.Dispose();
|
|
_sshTunnel = null;
|
|
|
|
_processMonitor?.Dispose();
|
|
_processMonitor = null;
|
|
|
|
_power.RestoreDefault();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
Stop();
|
|
}
|
|
}
|
|
}
|