DenyModelCheckJob.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using EVCB_OCPP.WSServer.Service;
  2. using EVCB_OCPP.WSServer.Service.WsService;
  3. using Microsoft.Extensions.Logging;
  4. using Quartz;
  5. namespace EVCB_OCPP.WSServer.Jobs;
  6. [DisallowConcurrentExecution]
  7. public class DenyModelCheckJob : IJob
  8. {
  9. public DenyModelCheckJob(
  10. ProtalServer protalServer,
  11. WebDbService webDbService,
  12. //IConfiguration configuration,
  13. ILogger<DenyModelCheckJob> logger)
  14. {
  15. //this.webConnectionString = configuration.GetConnectionString("WebDBContext");
  16. this.protalServer = protalServer;
  17. this.webDbService = webDbService;
  18. this.logger = logger;
  19. }
  20. //private readonly string webConnectionString;
  21. private readonly ProtalServer protalServer;
  22. private readonly WebDbService webDbService;
  23. private readonly ILogger<DenyModelCheckJob> logger;
  24. public async Task Execute(IJobExecutionContext context)
  25. {
  26. //logger.LogDebug("{0} Started", nameof(DenyModelCheckJob));
  27. try
  28. {
  29. GlobalConfig.DenyModelNames = await webDbService.GetDenyModelNames(context.CancellationToken);
  30. logger.LogDebug("Current DenyList:[{0}]", string.Join(",", GlobalConfig.DenyModelNames));
  31. if (string.IsNullOrEmpty(GlobalConfig.DenyModelNames[0]))
  32. {
  33. return;
  34. }
  35. Dictionary<string, WsClientData> _copyClientDic = protalServer.GetClientDic();
  36. foreach (var denyName in GlobalConfig.DenyModelNames)
  37. {
  38. var removeClients = _copyClientDic.Where(x => x.Key.StartsWith(denyName)).Select(x => x.Value).ToList();
  39. foreach (var session in removeClients)
  40. {
  41. //Console.WriteLine(string.Format("Server forced to shut down ChargeBox ({0}: Reason: DenyModelName-{1}", session.ChargeBoxId, denyName));
  42. logger.LogInformation(string.Format("Server forced to shut down ChargeBox ({0}: Reason: DenyModelName-{1}", session.ChargeBoxId, denyName));
  43. protalServer.RemoveClient(session);
  44. }
  45. }
  46. }
  47. catch (Exception ex)
  48. {
  49. logger.LogError("DenyModelCheckTrigger Ex:{0}", ex.ToString());
  50. }
  51. }
  52. }