You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

44 lines
1.8 KiB

  1. using JT808.DotNetty.Core.Configurations;
  2. using Microsoft.Extensions.Logging;
  3. using Microsoft.Extensions.Options;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Text;
  7. using System.Threading;
  8. using System.Threading.Tasks;
  9. namespace JT808.DotNetty.Core.Jobs
  10. {
  11. public class JT808UdpMaintainSessionJob : JT808BackgroundService
  12. {
  13. private readonly ILogger<JT808UdpMaintainSessionJob> _logger;
  14. private readonly JT808UdpSessionManager jT808UdpSessionManager;
  15. private readonly IOptionsMonitor<JT808Configuration> jT808ConfigurationAccessor;
  16. public JT808UdpMaintainSessionJob(
  17. JT808UdpSessionManager jT808UdpSessionManager,
  18. IOptionsMonitor<JT808Configuration> jT808ConfigurationAccessor,
  19. ILoggerFactory loggerFactory)
  20. {
  21. this.jT808UdpSessionManager = jT808UdpSessionManager;
  22. this.jT808ConfigurationAccessor = jT808ConfigurationAccessor;
  23. _logger = loggerFactory.CreateLogger<JT808UdpMaintainSessionJob>();
  24. }
  25. public override string ServiceName => nameof(JT808UdpMaintainSessionJob);
  26. protected override async Task ExecuteAsync(CancellationToken stoppingToken)
  27. {
  28. _logger.LogInformation($"{ServiceName} is starting.");
  29. stoppingToken.Register(() => _logger.LogInformation($"{ServiceName} background task is stopping."));
  30. while (!stoppingToken.IsCancellationRequested)
  31. {
  32. _logger.LogInformation($"{ServiceName} task doing background work.");
  33. jT808UdpSessionManager.TimerToRemoveExpiredData();
  34. await Task.Delay(TimeSpan.FromSeconds(jT808ConfigurationAccessor.CurrentValue.UdpSlidingExpirationTimeSeconds), stoppingToken);
  35. }
  36. _logger.LogInformation($"{ServiceName} background task is stopping.");
  37. }
  38. }
  39. }