HostedProtalServer.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. using EVCB_OCPP.WSServer.Jobs;
  2. using EVCB_OCPP.WSServer.Message;
  3. using EVCB_OCPP.WSServer.Service;
  4. using EVCB_OCPP.WSServer.SuperSocket;
  5. using Microsoft.Extensions.DependencyInjection;
  6. using Quartz;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace EVCB_OCPP.WSServer
  13. {
  14. public static class HostedProtalServer
  15. {
  16. public static void AddProtalServer(this IServiceCollection services)
  17. {
  18. services.AddBusinessServiceFactory();
  19. services.AddTransient<OCPPWSServer>();
  20. services.AddTransient<IOCPPWSServerFactory, OCPPWSServerFactory>();
  21. services.AddSingleton<WebDbService>();
  22. services.AddSingleton<IMainDbService, MainDbService>();
  23. services.AddSingleton<IConnectionLogdbService, ConnectionLogdbService>();
  24. services.AddTransient<ProfileHandler>();
  25. services.AddSingleton<ProtalServer>();
  26. services.AddHostedService<ProtalServer>(p => p.GetRequiredService<ProtalServer>());
  27. services.AddProtalServerJob();
  28. }
  29. public static void AddProtalServerJob(this IServiceCollection services)
  30. {
  31. services.AddQuartz(q => {
  32. q.UseMicrosoftDependencyInjectionJobFactory();
  33. q.ScheduleJob<ServerUpdateJob>(trigger =>
  34. trigger
  35. .WithIdentity("ServerUpdateJobTrigger")
  36. .StartNow()
  37. .WithSimpleSchedule(x => x
  38. .WithIntervalInMinutes(3)
  39. .RepeatForever())
  40. );
  41. q.ScheduleJob<ServerSetFeeJob>(trigger =>
  42. trigger
  43. .WithIdentity("ServerSetFeeJobTrigger")
  44. .StartNow()
  45. .WithSimpleSchedule(x => x
  46. .WithIntervalInMinutes(1)
  47. .RepeatForever())
  48. );
  49. q.ScheduleJob<ServerMessageJob>(trigger =>
  50. trigger
  51. .WithIdentity("ServerMessageJobTrigger")
  52. .StartNow()
  53. .WithSimpleSchedule(x => x
  54. .WithInterval(TimeSpan.FromMilliseconds(500))
  55. .RepeatForever())
  56. );
  57. q.ScheduleJob<HeartBeatCheckJob>(trigger =>
  58. trigger
  59. .WithIdentity("HeartBeatCheckJobTrigger")
  60. .StartNow()
  61. .WithSimpleSchedule(x => x
  62. .WithIntervalInSeconds(30)
  63. .RepeatForever())
  64. );
  65. q.ScheduleJob<ServerWeatherNotificationJob>(trigger =>
  66. trigger
  67. .WithIdentity("ServerWeatherNotificationJobTrigger")
  68. .StartNow()
  69. .WithSimpleSchedule(x => x
  70. .WithIntervalInMinutes(1)
  71. .RepeatForever())
  72. );
  73. q.ScheduleJob<HealthCheckTriggerJob>(trigger =>
  74. trigger
  75. .WithIdentity("HealthCheckTriggerJobTrigger")
  76. .StartNow()
  77. .WithSimpleSchedule(x => x
  78. .WithIntervalInMinutes(1)
  79. .RepeatForever())
  80. );
  81. q.ScheduleJob<SmartChargingJob>(trigger =>
  82. trigger
  83. .WithIdentity("SmartChargingJobTrigger")
  84. .StartNow()
  85. .WithSimpleSchedule(x => x
  86. .WithIntervalInMinutes(1)
  87. .RepeatForever())
  88. );
  89. q.ScheduleJob<DenyModelCheckJob>(trigger =>
  90. trigger
  91. .WithIdentity("DenyModelCheckJobTrigger")
  92. .StartNow()
  93. .WithSimpleSchedule(x => x
  94. .WithIntervalInMinutes(5)
  95. .RepeatForever())
  96. );
  97. });
  98. services.AddQuartzHostedService(opt =>
  99. {
  100. opt.WaitForJobsToComplete = true;
  101. });
  102. }
  103. }
  104. }