Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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
            }));
        }