public PacketBase Get(IDataKey key) { if (key is DoubleHeightKey heightKey) { TransactionsRegistryBlock transactionsRegistryBlock = DataAccessService.Instance.GetTransactionsRegistryBlock(heightKey.Height1, heightKey.Height2); PacketBase blockBase = _translatorsRepository.GetInstance <TransactionsRegistryBlock, PacketBase>().Translate(transactionsRegistryBlock); return(blockBase); } else if (key is SyncHashKey syncTransactionKey) { List <TransactionsRegistryBlock> transactionsRegistryBlocks = DataAccessService.Instance.GetTransactionsRegistryBlocks(syncTransactionKey.SyncBlockHeight); TransactionsRegistryBlock transactionsRegistryBlock = transactionsRegistryBlocks.FirstOrDefault(t => syncTransactionKey.Hash.Equals32(t.Hash)); if (transactionsRegistryBlock == null) { transactionsRegistryBlocks = DataAccessService.Instance.GetTransactionsRegistryBlocks(syncTransactionKey.SyncBlockHeight - 1); transactionsRegistryBlock = transactionsRegistryBlocks.FirstOrDefault(t => syncTransactionKey.Hash.Equals32(t.Hash)); } PacketBase blockBase = null; if (transactionsRegistryBlock != null) { blockBase = _translatorsRepository.GetInstance <TransactionsRegistryBlock, PacketBase>().Translate(transactionsRegistryBlock); } return(blockBase); } return(null); }
public BlockBase Get(IDataKey key) { if (key is DoubleHeightKey heightKey) { TransactionsRegistryBlock transactionsRegistryBlock = DataAccessService.Instance.GetTransactionsRegistryBlock(heightKey.Height1, heightKey.Height2); BlockBase blockBase = _translatorsRepository.GetInstance <TransactionsRegistryBlock, BlockBase>().Translate(transactionsRegistryBlock); return(blockBase); } else if (key is SyncHashKey syncTransactionKey) { List <TransactionsRegistryBlock> transactionsRegistryBlocks = DataAccessService.Instance.GetTransactionsRegistryBlocks(syncTransactionKey.SyncBlockHeight); //TODO: !!! move storing default hash into database for reducing computational costs TransactionsRegistryBlock transactionsRegistryBlock = transactionsRegistryBlocks.FirstOrDefault(t => syncTransactionKey.Hash.Equals32(_defaultHashCalculation.CalculateHash(t.Content))); BlockBase blockBase = _translatorsRepository.GetInstance <TransactionsRegistryBlock, BlockBase>().Translate(transactionsRegistryBlock); return(blockBase); } return(null); }