public IntegrityCheck(
     IActivitiesScan scanner,
     IActivitiesFix fixer,
     IAzureBlobRepository blobRepo,
     IIntegrityCheckConfiguration integrityCheckConfiguration)
 {
     _scanner  = scanner;
     _fixer    = fixer;
     _blobRepo = blobRepo;
     _integrityCheckConfiguration = integrityCheckConfiguration;
 }
Esempio n. 2
0
        private IEnumerable <ActivityDiscrepancy> BuildQueue(IIntegrityCheckConfiguration scanParameters, IFixActionReaderLogger logger)
        {
            var parameters = new ActivityDiscrepancyFinderParameters
            {
                BatchSize      = scanParameters.CosmosPageSize,
                MaxInspections = scanParameters.MaxInspections,
                ReaderLogger   = logger
            };

            IEnumerable <ActivityDiscrepancy> discrepancies = _finder.Scan(parameters);

            if (scanParameters.MaxDiscrepancies.HasValue && scanParameters.MaxDiscrepancies > -1)
            {
                discrepancies = discrepancies.Take(scanParameters.MaxDiscrepancies.Value);
            }

            return(discrepancies);
        }
Esempio n. 3
0
        public Task ScanForDiscrepanciesAsync(IIntegrityCheckConfiguration scanParameters, IFixActionReaderLogger logger, CancellationToken cancellationToken)
        {
            return(Task.Run(() =>
            {
                var discrepancies = BuildQueue(scanParameters, logger);

                foreach (var discrepancy in discrepancies)
                {
                    if (cancellationToken.IsCancellationRequested)
                    {
                        return;
                    }

                    _discrepancyQueue.Push(discrepancy);
                }

                _discrepancyQueue.AddComplete();
            }, cancellationToken));
        }