public async Task <List <SideChainBlockData> > GetSideChainBlockDataAsync(Hash currentBlockHash, long currentBlockHeight) { var sideChainBlockData = new List <SideChainBlockData>(); var dict = await _crossChainContractReader.GetSideChainIdAndHeightAsync(currentBlockHash, currentBlockHeight); foreach (var idHeight in dict) { var i = 0; var targetHeight = idHeight.Value + 1; while (i < CrossChainConstants.MaximalCountForIndexingSideChainBlock) { var blockInfo = _crossChainDataConsumer.TryTake <SideChainBlockData>(idHeight.Key, targetHeight, true); if (blockInfo == null) { // no more available parent chain block info break; } sideChainBlockData.Add(blockInfo); Logger.LogTrace($"Got height {blockInfo.Height} of side chain {ChainHelpers.ConvertChainIdToBase58(idHeight.Key)}"); targetHeight++; i++; } } Logger.LogTrace($"Side chain block data count {sideChainBlockData.Count}"); return(sideChainBlockData); }
public void TryTake_EmptyCache() { int chainId = 123; var blockInfo = _crossChainDataConsumer.TryTake <SideChainBlockData>(chainId, 1, false); Assert.Null(blockInfo); }