예제 #1
0
        public MainLogic(IConfiguration config
                         , ILogger <MainLogic> logger
                         , ISchedulesManager schManager
                         , IVmExporter vmExporter
                         , IVmArchiver vmArchiver
                         , IBackupRemover backupRemover
                         , IProgressReporter progressReporter
                         , IBackupTaskService backupTaskService
                         , ICentralServer centralServer)
        {
            _config            = config;
            _logger            = logger;
            _schManager        = schManager;
            _vmArchiver        = vmArchiver;
            _vmExporter        = vmExporter;
            _backupRemover     = backupRemover;
            _progressReporter  = progressReporter;
            _backupTaskService = backupTaskService;
            _centralServer     = centralServer;

            _schManager.EventOccurred             += Schedules_EventOccurred;
            _backupTaskService.OnBackupTaskChange += BackupTaskChanged;

            LoadNewTask();

            if (_centralServer.PingSuccess)
            {
                SendInfoToCentralServer();
            }
        }
예제 #2
0
        public Worker(ILogger <Worker> logger, ISchedulesManager manager, IConfiguration config)
        {
            _logger  = logger;
            _manager = manager;
            _config  = config;

            // Set the event handler

            _manager.EventOccurred += Schedules_EventOccurred;

            // creates a schedule, which will fire event every day every 30 seconds from 07:00:00 till 23:00:00

            var daily1 = new DailySchedule(DailyIntervalUnit.Second, 30,
                                           new Time(7, 0, 0), new Time(23, 0, 0),
                                           enabled: true, description: "every day every 30 seconds");

            // creates a schedule, which will fire event every day every 2 minutes from 00:00:00 till 23:59:59,
            // schedule will be created disabled

            var daily2 = new DailySchedule(DailyIntervalUnit.Minute, 2, null, null,
                                           enabled: false, description: "every day every 2 minutes");

            // creates a schedule, which will fire event every day at 12:15:00

            var daily3 = new DailySchedule(new Time(12, 50, 0));

            // creates a schedule, which will fire event on every Monday and Wednesday,
            // every hour from 00:00:00 till 23:59:59

            var weekly1 = new WeeklySchedule(new DayOfWeek[] { DayOfWeek.Monday, DayOfWeek.Wednesday },
                                             DailyIntervalUnit.Hour, 1, null, null);

            // creates a schedule, which will fire event on 1, 2, 15 day of every month at 14:20:15

            var monthly1 = new MonthlySchedule(new int[] { 1, 2, 15 }, new Time("14:20:15"));

            _manager.AddSchedules(daily1, daily2, daily3, weekly1, monthly1);

            // Load from IConfiguration, section "SimpleSchedules" (see appsettings.json)

            _manager.LoadFrom(_config);
        }