public BlockStoreInnerStepContext(CancellationToken cancellationToken, BlockStoreLoop blockStoreLoop, ChainedBlock nextChainedBlock, ILoggerFactory loggerFactory, IDateTimeProvider dateTimeProvider)
        {
            Guard.NotNull(blockStoreLoop, nameof(blockStoreLoop));
            Guard.NotNull(nextChainedBlock, nameof(nextChainedBlock));

            this.loggerFactory = loggerFactory;
            this.logger        = loggerFactory.CreateLogger(GetType().FullName);
            this.logger.LogTrace("({0}:'{1}/{2}')", nameof(nextChainedBlock), nextChainedBlock.HashBlock, nextChainedBlock.Height);

            this.BlockStoreLoop    = blockStoreLoop;
            this.CancellationToken = cancellationToken;
            this.DateTimeProvider  = dateTimeProvider;
            this.DownloadStack     = new Queue <ChainedBlock>();
            this.InnerSteps        = new List <BlockStoreInnerStep>()
            {
                new BlockStoreInnerStepFindBlocks(this.loggerFactory), new BlockStoreInnerStepReadBlocks(this.loggerFactory)
            };
            this.InsertBlockSize            = 0;
            this.LastDownloadStackFlushTime = this.DateTimeProvider.GetUtcNow();
            this.NextChainedBlock           = nextChainedBlock;
            this.StallCount = 0;
            this.Store      = new List <BlockPair>();

            this.logger.LogTrace("(-)");
        }
 internal ProcessPendingStorageContext(ILogger logger, BlockStoreLoop blockStoreLoop, ChainedBlock nextChainedBlock, CancellationToken cancellationToken)
 {
     this.logger            = logger;
     this.BlockStoreLoop    = blockStoreLoop;
     this.NextChainedBlock  = nextChainedBlock;
     this.CancellationToken = cancellationToken;
 }
        internal BlockStoreLoop CreateBlockStoreLoop(ConcurrentChain chain, BlockRepository blockRepository, string testFolder)
        {
            ConfigureLogger();

            Mock <IConnectionManager> connectionManager = ConfigureConnectionManager();
            var blockPuller = new StoreBlockPuller(chain, connectionManager.Object, this.loggerFactory.Object);

            FullNode fullNode = new Mock <FullNode>().Object;

            fullNode.DateTimeProvider = new DateTimeProvider();

            var chainState = new Mock <ChainState>(fullNode);

            chainState.Object.SetIsInitialBlockDownload(false, DateTime.Today);

            IAsyncLoopFactory asyncLoopFactory = new Mock <IAsyncLoopFactory>().Object;

            INodeLifetime nodeLifeTime = new Mock <INodeLifetime>().Object;

            var blockStoreLoop = new BlockStoreLoop(
                asyncLoopFactory,
                blockPuller,
                blockRepository,
                null,
                chain,
                chainState.Object,
                NodeSettings.FromArguments(new string[] { string.Format("-datadir={0}", testFolder) }),
                nodeLifeTime,
                this.loggerFactory.Object);

            return(blockStoreLoop);
        }
Beispiel #4
0
        public BlockStoreInnerStepContext(CancellationToken cancellationToken, BlockStoreLoop blockStoreLoop)
        {
            Guard.NotNull(blockStoreLoop, "blockStoreLoop");

            this.BlockStoreLoop    = blockStoreLoop;
            this.CancellationToken = cancellationToken;
        }
Beispiel #5
0
        public BlockStoreInnerStepContext(CancellationToken cancellationToken, BlockStoreLoop blockStoreLoop, ChainedHeader nextChainedHeader, ILoggerFactory loggerFactory, IDateTimeProvider dateTimeProvider)
        {
            Guard.NotNull(blockStoreLoop, nameof(blockStoreLoop));
            Guard.NotNull(nextChainedHeader, nameof(nextChainedHeader));

            this.logger = loggerFactory.CreateLogger(this.GetType().FullName);

            this.BlockStoreLoop    = blockStoreLoop;
            this.CancellationToken = cancellationToken;
            this.DateTimeProvider  = dateTimeProvider;
            this.DownloadStack     = new Queue <ChainedHeader>();
            this.InnerSteps        = new List <BlockStoreInnerStep> {
                new BlockStoreInnerStepFindBlocks(loggerFactory), new BlockStoreInnerStepReadBlocks(loggerFactory)
            };
            this.InsertBlockSize            = 0;
            this.LastDownloadStackFlushTime = this.DateTimeProvider.GetUtcNow();
            this.NextChainedHeader          = nextChainedHeader;
            this.StallCount = 0;
            this.Store      = new List <BlockPair>();
        }
        internal void Create(ConcurrentChain chain)
        {
            this.blockPuller = new StoreBlockPuller(chain, this.connectionManager.Object, this.loggerFactory.Object);

            if (this.asyncLoopFactory == null)
            {
                this.asyncLoopFactory = new Mock <IAsyncLoopFactory>().Object;
            }

            this.Loop = new BlockStoreLoop(
                this.asyncLoopFactory,
                this.blockPuller,
                this.BlockRepository,
                null,
                chain,
                this.chainState.Object,
                new StoreSettings(NodeSettings.FromArguments(new string[] { $"-datadir={this.dataFolder.WalletPath}" })),
                this.nodeLifeTime.Object,
                this.loggerFactory.Object,
                DateTimeProvider.Default);
        }
Beispiel #7
0
        internal void AddBlockToPendingStorage(BlockStoreLoop blockStoreLoop, Block block)
        {
            var chainedBlock = blockStoreLoop.Chain.GetBlock(block.GetHash());

            blockStoreLoop.PendingStorage.TryAdd(block.GetHash(), new BlockPair(block, chainedBlock));
        }
 internal ProcessPendingStorageStep(BlockStoreLoop blockStoreLoop, ILoggerFactory loggerFactory)
     : base(blockStoreLoop, loggerFactory)
 {
     this.logger = loggerFactory.CreateLogger(GetType().FullName);
 }
 internal ReorganiseBlockRepositoryStep(BlockStoreLoop blockStoreLoop)
     : base(blockStoreLoop)
 {
 }
Beispiel #10
0
 internal DownloadBlockStep(BlockStoreLoop blockStoreLoop)
     : base(blockStoreLoop)
 {
 }
Beispiel #11
0
 internal DownloadBlockStep(BlockStoreLoop blockStoreLoop, ILoggerFactory loggerFactory, IDateTimeProvider dateTimeProvider)
     : base(blockStoreLoop, loggerFactory)
 {
     this.logger           = loggerFactory.CreateLogger(this.GetType().FullName);
     this.dateTimeProvider = dateTimeProvider;
 }
Beispiel #12
0
 internal ReorganiseBlockRepositoryStep(BlockStoreLoop blockStoreLoop, ILoggerFactory loggerFactory)
     : base(blockStoreLoop, loggerFactory)
 {
     this.logger = loggerFactory.CreateLogger(this.GetType().FullName);
 }
 internal CheckNextChainedBlockExistStep(BlockStoreLoop blockStoreLoop, ILoggerFactory loggerFactory)
     : base(blockStoreLoop, loggerFactory)
 {
     this.logger = loggerFactory.CreateLogger(GetType().FullName);
 }
Beispiel #14
0
 internal ProcessPendingStorageStep(BlockStoreLoop blockStoreLoop)
     : base(blockStoreLoop)
 {
 }
Beispiel #15
0
 internal CheckNextChainedBlockExistStep(BlockStoreLoop blockStoreLoop)
     : base(blockStoreLoop)
 {
 }