Example #1
0
        static void Main(string[] args)
        {
            var log      = GetProductionLogger();
            var assembly = System.Reflection.Assembly.GetExecutingAssembly();
            var fvi      = FileVersionInfo.GetVersionInfo(assembly.Location);
            var c        = new RealClock();

            log.LogInformation($"Starting PBXConnector Console Runner {fvi.FileVersion}");

            RegistryConfigurationProvider config;

            try {
                config = new RegistryConfigurationProvider(log);
            }
            catch (Exception ex) {
                log.LogError("Error starting PBXConnector Console Runner", ex);
                throw;
            }
            var ac = new ApplicationClient(
                new PBXApplicationClientConfigurationProvider(config),
                log, "CJASDBYCOKYIWBWNFPQHOBGIQPEJUBSYNEOUEKJZTOSWWCPGCRWNYGBOOUZE");
            var connector = new PBXConnection(log, config, ac, c);

            connector.Start();
        }
Example #2
0
        public void TryGet_ExistingKey_ShouldReturn()
        {
            // Arrange
            var target = new RegistryConfigurationProvider(new RegistryConfigurationSource(
                                                               @"SOFTWARE\Microsoft\Shell",
                                                               () => Microsoft.Win32.Registry.LocalMachine));

            target.Load();

            // Act
            target.TryGet("USB:NotifyOnUsbErrors", out string actual);

            // Assert
            Assert.Equal("1", actual);
        }
        protected override void OnStart(string[] args)
        {
            var assembly = System.Reflection.Assembly.GetExecutingAssembly();
            var fvi      = FileVersionInfo.GetVersionInfo(assembly.Location);

            _log.LogInformation($"Starting PBXConnector service {fvi.FileVersion}");

            try {
                _config = new RegistryConfigurationProvider(_log);
            } catch (Exception ex) {
                _log.LogError($"Error starting PBXConnectorService: {ex}");
                throw;
            }
            _log.LogInformation($"Completed Configuration Read");

            _ac = new ApplicationClient(new PBXApplicationClientConfigurationProvider(_config),
                                        _log, "CJASDBYCOKYIWBWNFPQHOBGIQPEJUBSYNEOUEKJZTOSWWCPGCRWNYGBOOUZE");
            _connection = new PBXConnection(_log, _config, _ac, _c);
            _log.LogInformation("Initialized PBX Connection Object");
            _connection.Start();
        }
        protected override void OnStart(string[] args)
        {
            if (args.Contains("--debugger"))
            {
                Debugger.Launch();
            }
            var logger = Globals.Logger;

            RegistryConfigurationProvider.VerifyConfiguration(logger);

            var assembly = System.Reflection.Assembly.GetExecutingAssembly();
            var fvi      = FileVersionInfo.GetVersionInfo(assembly.Location);

            logger.LogInformation($"Starting HOLMS Scheduler Service {fvi.FileVersion}. Creating tasks.");

            // Run every n minutes
            _jobSchedulers.Add(new RecurringJobScheduler <DailyOpExEmailJob>(logger, _schedulerFactory,
                                                                             DailyOpExEmailJob.JobGroupString, DailyOpExEmailJob.JobNameString,
                                                                             DailyOpExEmailJob.JobPeriod));
            _jobSchedulers.Add(new RecurringJobScheduler <HousekeepingDirtyRolloverJob>(logger,
                                                                                        _schedulerFactory, HousekeepingDirtyRolloverJob.JobGroupString,
                                                                                        HousekeepingDirtyRolloverJob.JobNameString, HousekeepingDirtyRolloverJob.JobPeriod));
            _jobSchedulers.Add(new RecurringJobScheduler <OTASyncJob>(logger, _schedulerFactory,
                                                                      OTASyncJob.JobGroupString, OTASyncJob.JobNameString, OTASyncJob.JobPeriod));
            _jobSchedulers.Add(new RecurringJobScheduler <SupplyHistorySnapshotJob>(
                                   logger, _schedulerFactory, SupplyHistorySnapshotJob.JobGroupString,
                                   SupplyHistorySnapshotJob.JobNameString, SupplyHistorySnapshotJob.JobPeriod));

            // Run at same time every day
            _jobSchedulers.Add(new FixedTimeOfDayScheduler <AccountingTransactionExportJob>(
                                   logger, _schedulerFactory,
                                   AccountingTransactionExportJob.JobGroupString,
                                   AccountingTransactionExportJob.JobNameString,
                                   AccountingTransactionExportJob.RunAtTimeOfDay));
            _jobSchedulers.Add(new FixedTimeOfDayScheduler <AuthorizationCleanupJob>(
                                   logger, _schedulerFactory, AuthorizationCleanupJob.JobGroupString,
                                   AuthorizationCleanupJob.JobNameString, AuthorizationCleanupJob.RunAtTimeOfDay));
            _jobSchedulers.Add(new FixedTimeOfDayScheduler <GuaranteeAuthorizerJob>(
                                   logger, _schedulerFactory, GuaranteeAuthorizerJob.JobGroupString,
                                   GuaranteeAuthorizerJob.JobNameString, GuaranteeAuthorizerJob.RunAtTimeOfDay));

            logger.LogInformation("Scheduling tasks");
            foreach (var t in _jobSchedulers)
            {
                t.Schedule();
            }

            logger.LogInformation("Scheduling rollover chime job");
            var propResp = Globals.AC.PropertySvc.All(new Empty());

            foreach (var p in propResp.Properties)
            {
                var checkinTs = p.CheckinTimeOfDay.ToTimeSpan();
                logger.LogInformation($"Rollover chimes 1 minute after checkin time: {checkinTs}. desc={p.Description}");
                var s = new FixedTimeOfDayScheduler <CheckinChimeJob>(logger, _schedulerFactory,
                                                                      CheckinChimeJob.JobGroup,
                                                                      CheckinChimeJob.JobName(p.EntityId),
                                                                      // Run 1 minute after checkin
                                                                      // https://www.youtube.com/watch?v=2AKhvbBuvVw
                                                                      checkinTs + new TimeSpan(0, 0, 1, 0));
                s.Schedule(CheckinChimeJob.MakeMap(p.EntityId));
            }

            logger.LogInformation("Starting main execution loop");
            var scheduler = _schedulerFactory.GetScheduler();

            scheduler.Start();
        }