123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- using EVCB_OCPP.WSServer.Jobs;
- using EVCB_OCPP.WSServer.Message;
- using EVCB_OCPP.WSServer.Service;
- using EVCB_OCPP.WSServer.SuperSocket;
- using Microsoft.Extensions.DependencyInjection;
- using Quartz;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace EVCB_OCPP.WSServer
- {
- public static class HostedProtalServer
- {
- public static void AddProtalServer(this IServiceCollection services)
- {
- services.AddBusinessServiceFactory();
- services.AddTransient<OCPPWSServer>();
- services.AddTransient<IOCPPWSServerFactory, OCPPWSServerFactory>();
- services.AddSingleton<WebDbService>();
- services.AddSingleton<IMainDbService, MainDbService>();
- services.AddSingleton<IConnectionLogdbService, ConnectionLogdbService>();
- services.AddTransient<ProfileHandler>();
- services.AddSingleton<ProtalServer>();
- services.AddHostedService<ProtalServer>(p => p.GetRequiredService<ProtalServer>());
- services.AddProtalServerJob();
- }
- public static void AddProtalServerJob(this IServiceCollection services)
- {
- services.AddQuartz(q => {
- q.UseMicrosoftDependencyInjectionJobFactory();
- q.ScheduleJob<ServerUpdateJob>(trigger =>
- trigger
- .WithIdentity("ServerUpdateJobTrigger")
- .StartNow()
- .WithSimpleSchedule(x => x
- .WithIntervalInMinutes(3)
- .RepeatForever())
- );
- q.ScheduleJob<ServerSetFeeJob>(trigger =>
- trigger
- .WithIdentity("ServerSetFeeJobTrigger")
- .StartNow()
- .WithSimpleSchedule(x => x
- .WithIntervalInMinutes(1)
- .RepeatForever())
- );
- q.ScheduleJob<ServerMessageJob>(trigger =>
- trigger
- .WithIdentity("ServerMessageJobTrigger")
- .StartNow()
- .WithSimpleSchedule(x => x
- .WithInterval(TimeSpan.FromMilliseconds(500))
- .RepeatForever())
- );
- q.ScheduleJob<HeartBeatCheckJob>(trigger =>
- trigger
- .WithIdentity("HeartBeatCheckJobTrigger")
- .StartNow()
- .WithSimpleSchedule(x => x
- .WithIntervalInSeconds(30)
- .RepeatForever())
- );
- q.ScheduleJob<ServerWeatherNotificationJob>(trigger =>
- trigger
- .WithIdentity("ServerWeatherNotificationJobTrigger")
- .StartNow()
- .WithSimpleSchedule(x => x
- .WithIntervalInMinutes(1)
- .RepeatForever())
- );
- q.ScheduleJob<HealthCheckTriggerJob>(trigger =>
- trigger
- .WithIdentity("HealthCheckTriggerJobTrigger")
- .StartNow()
- .WithSimpleSchedule(x => x
- .WithIntervalInMinutes(1)
- .RepeatForever())
- );
- q.ScheduleJob<SmartChargingJob>(trigger =>
- trigger
- .WithIdentity("SmartChargingJobTrigger")
- .StartNow()
- .WithSimpleSchedule(x => x
- .WithIntervalInMinutes(1)
- .RepeatForever())
- );
- q.ScheduleJob<DenyModelCheckJob>(trigger =>
- trigger
- .WithIdentity("DenyModelCheckJobTrigger")
- .StartNow()
- .WithSimpleSchedule(x => x
- .WithIntervalInMinutes(5)
- .RepeatForever())
- );
- });
- services.AddQuartzHostedService(opt =>
- {
- opt.WaitForJobsToComplete = true;
- });
- }
- }
- }
|