Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }