/
MaintenanceModeCommand.cs
37 lines (30 loc) · 1.3 KB
/
MaintenanceModeCommand.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
namespace ServiceControl.Audit.Infrastructure.Hosting.Commands
{
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Hosting.WindowsServices;
using Persistence;
class MaintenanceModeCommand : AbstractCommand
{
public override async Task Execute(HostArguments args, Settings.Settings settings)
{
var persistenceConfiguration = PersistenceConfigurationFactory.LoadPersistenceConfiguration(settings.PersistenceType);
var persistenceSettings = persistenceConfiguration.BuildPersistenceSettings(settings);
persistenceSettings.MaintenanceMode = true;
var hostBuilder = Host.CreateApplicationBuilder();
hostBuilder.Services.AddPersistence(persistenceSettings, persistenceConfiguration);
using var host = hostBuilder.Build();
if (WindowsServiceHelpers.IsWindowsService())
{
await host.RunAsync();
}
else
{
await Console.Out.WriteLineAsync("Running in Maintenance Mode - Press CTRL+C to exit");
await host.RunAsync();
await Console.Out.WriteLineAsync("Disposing persister (this might take a while)...");
}
}
}
}