public IEnumerable <IJob> GetJobs() { var jobs = new List <IJob>(); // Blocks indexers if (_indexerInstanceSettings.IndexBlocks) { var lastRpcBlock = (ulong)_rpcBlockReader.GetBlockCount().Result; var from = _indexerInstanceSettings.StartBlock; var to = _indexerInstanceSettings.StopBlock ?? lastRpcBlock; var partSize = (to - from) / (ulong)_indexerInstanceSettings.ThreadAmount; ulong?toBlock = from; for (var i = 0; i < _indexerInstanceSettings.ThreadAmount; i++) { var fromBlock = (ulong)toBlock + 1; toBlock = fromBlock + partSize; toBlock = toBlock < to ? toBlock : _indexerInstanceSettings.StopBlock; var indexerId = $"{_indexerInstanceSettings.IndexerId}_thread_{i}"; var job = _blockIndexingFactory.GetJob(new IndexingSettings { IndexerId = indexerId, From = fromBlock, To = toBlock }); jobs.Add(job); } } // Balances indexer if (_indexerInstanceSettings.IndexBalances) { jobs.Add(_erc20BalanceIndexingJobFactory.GetJob(_indexerInstanceSettings.BalancesStartBlock)); } // Contracts indexer if (_indexerInstanceSettings.IndexContracts) { for (var i = 0; i < _indexerInstanceSettings.ContractsIndexerThreadAmount; i++) { var job = _erc20ContractIndexingJobFactory.GetJob(); jobs.Add(job); } } return(jobs); }
public async Task <IActionResult> IsAlive() { var version = PlatformServices.Default.Application.ApplicationVersion; var lastRpcBlock = await _rpcBlockReader.GetBlockCount(); var syncedBlocksCount = await _blockRepository.GetSyncedBlocksCountAsync(); return(new JsonResult(new { syncedBlocksCount = syncedBlocksCount, blockchainTip = lastRpcBlock.ToString(), version = version })); }