HostedProtalServer.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. using EVCB_OCPP.Domain;
  2. using EVCB_OCPP.Service;
  3. using EVCB_OCPP.WSServer.Fake;
  4. using EVCB_OCPP.WSServer.Helper;
  5. using EVCB_OCPP.WSServer.Jobs;
  6. using EVCB_OCPP.WSServer.Message;
  7. using EVCB_OCPP.WSServer.Service;
  8. using EVCB_OCPP.WSServer.Service.WsService;
  9. using EVCB_OCPP.WSServer.SuperSocket;
  10. using Microsoft.EntityFrameworkCore;
  11. using Microsoft.Extensions.Caching.Memory;
  12. using Microsoft.Extensions.Configuration;
  13. using Microsoft.Extensions.DependencyInjection;
  14. using Quartz;
  15. using System;
  16. using System.Collections.Generic;
  17. using System.Linq;
  18. using System.Text;
  19. using System.Threading.Tasks;
  20. namespace EVCB_OCPP.WSServer
  21. {
  22. public static class HostedProtalServer
  23. {
  24. public static void AddProtalServer(this IServiceCollection services, IConfiguration configuration)
  25. {
  26. services.AddMemoryCache();
  27. //services.AddSingleton<IMemoryCache, DummyMemoryCache>();
  28. services.AddPortalServerDatabase(configuration);
  29. services.AddBusinessServiceFactory();
  30. //services.AddTransient<OCPPWSServer>();
  31. //services.AddTransient<IOCPPWSServerFactory, OCPPWSServerFactory>();
  32. services.AddHeaderRecordService();
  33. services.AddOcppWsServer();
  34. services.AddSingleton<ServerMessageService>();
  35. services.AddSingleton<MeterValueDbService>();
  36. services.AddSingleton<WebDbService>();
  37. services.AddSingleton<IMainDbService, MainDbService>();
  38. services.AddSingleton<IConnectionLogdbService, ConnectionLogdbService>();
  39. services.AddTransient<ProfileHandler>();
  40. services.AddSingleton<ProtalServer>();
  41. services.AddHostedService<ProtalServer>(p => p.GetRequiredService<ProtalServer>());
  42. services.AddProtalServerJob();
  43. }
  44. internal static void AddPortalServerDatabase(this IServiceCollection services, IConfiguration configuration)
  45. {
  46. services
  47. .AddMainDbContext(configuration)
  48. .AddMeterValueDbContext(configuration)
  49. .AddConnectionLogDbContext(configuration)
  50. .AddWebDBConetext(configuration);
  51. }
  52. public static void AddProtalServerJob(this IServiceCollection services)
  53. {
  54. services.AddQuartz(q => {
  55. q.UseMicrosoftDependencyInjectionJobFactory();
  56. q.ScheduleJob<ServerUpdateJob>(trigger =>
  57. trigger
  58. .WithIdentity("ServerUpdateJobTrigger")
  59. .StartNow()
  60. .WithSimpleSchedule(x => x
  61. .WithIntervalInMinutes(3)
  62. .RepeatForever())
  63. );
  64. q.ScheduleJob<ServerSetFeeJob>(trigger =>
  65. trigger
  66. .WithIdentity("ServerSetFeeJobTrigger")
  67. .StartNow()
  68. .WithSimpleSchedule(x => x
  69. .WithIntervalInMinutes(1)
  70. .RepeatForever())
  71. );
  72. q.ScheduleJob<ServerMessageJob>(trigger =>
  73. trigger
  74. .WithIdentity("ServerMessageJobTrigger")
  75. .StartNow()
  76. .WithSimpleSchedule(x => x
  77. .WithInterval(TimeSpan.FromMilliseconds(500))
  78. .RepeatForever())
  79. );
  80. q.ScheduleJob<HeartBeatCheckJob>(trigger =>
  81. trigger
  82. .WithIdentity("HeartBeatCheckJobTrigger")
  83. .StartNow()
  84. .WithSimpleSchedule(x => x
  85. .WithIntervalInSeconds(30)
  86. .RepeatForever())
  87. );
  88. q.ScheduleJob<HealthCheckTriggerJob>(trigger =>
  89. trigger
  90. .WithIdentity("HealthCheckTriggerJobTrigger")
  91. .StartNow()
  92. .WithSimpleSchedule(x => x
  93. .WithIntervalInMinutes(1)
  94. .RepeatForever())
  95. );
  96. q.ScheduleJob<SmartChargingJob>(trigger =>
  97. trigger
  98. .WithIdentity("SmartChargingJobTrigger")
  99. .StartNow()
  100. .WithSimpleSchedule(x => x
  101. .WithIntervalInMinutes(1)
  102. .RepeatForever())
  103. );
  104. q.ScheduleJob<DenyModelCheckJob>(trigger =>
  105. trigger
  106. .WithIdentity("DenyModelCheckJobTrigger")
  107. .StartNow()
  108. .WithSimpleSchedule(x => x
  109. .WithIntervalInMinutes(5)
  110. .RepeatForever())
  111. );
  112. //q.ScheduleJob<GoogleCheckJob>(trigger =>
  113. // trigger
  114. // .WithIdentity("GoogleCheckJobTrigger")
  115. // .StartNow()
  116. // .WithSimpleSchedule(x => x
  117. // .WithIntervalInSeconds(5)
  118. // .RepeatForever())
  119. //);
  120. });
  121. services.AddQuartzHostedService(opt =>
  122. {
  123. opt.WaitForJobsToComplete = true;
  124. });
  125. }
  126. }
  127. }