Remotely/Server/Services/RemoteControlSessionCleaner.cs
2024-07-16 09:25:15 -07:00

36 lines
1.0 KiB
C#

using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace Remotely.Server.Services;
public class RemoteControlSessionCleaner : BackgroundService
{
private readonly IRemoteControlSessionCache _sessionCache;
private readonly ILogger<RemoteControlSessionCleaner> _logger;
public RemoteControlSessionCleaner(
IRemoteControlSessionCache sessionCache,
ILogger<RemoteControlSessionCleaner> logger)
{
_sessionCache = sessionCache;
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
using var timer = new PeriodicTimer(TimeSpan.FromSeconds(30));
while (await timer.WaitForNextTickAsync(stoppingToken))
{
try
{
await _sessionCache.RemoveExpiredSessions();
}
catch (Exception ex)
{
_logger.LogError(ex, "Error while removing expired desktop sessions.");
}
}
}
}