Exemplo n.º 1
0
        public Task RunAsync(CancellationToken cancellationToken)
        {
            return(Task.Factory.StartNew(async() =>
            {
                var indexerId = _indexingSettings.IndexerId;
                var currentBlockNumber = _indexingSettings.From;
                var checkDelegate = GetCheckDelegate(cancellationToken);
                var lastSyncedNumber = await _indexingService.GetLastBlockForIndexerAsync(indexerId);

                currentBlockNumber = lastSyncedNumber.HasValue && (lastSyncedNumber.Value > currentBlockNumber)
                                 ? lastSyncedNumber.Value
                                 : currentBlockNumber;

                var lastProcessedBlockNumber = await IndexBlocksAsync(indexerId, currentBlockNumber, checkDelegate);

                await _logger.WriteInfoAsync
                (
                    "BlockIndexingJob",
                    "RunAsync",
                    indexerId,
                    $"Indexing {indexerId} completed. LastProcessed - {lastProcessedBlockNumber - 1}",
                    DateTime.UtcNow
                );
            }, cancellationToken).Unwrap());
        }