public void NotifyOfNewBlock(Block block, SendBlockMode mode) { if (mode == SendBlockMode.FullBlock) { ReceivedBlocks.Push(block); } }
public void Can_broadcast_a_block([Values(SendBlockMode.HashOnly, SendBlockMode.FullBlock, (SendBlockMode)99)] SendBlockMode mode) { Block block = Build.A.Block.WithTotalDifficulty(1L).TestObject; Type expectedMessageType = mode == SendBlockMode.FullBlock ? typeof(NewBlockMessage) : typeof(NewBlockHashesMessage); _handler.NotifyOfNewBlock(block, mode); _session.Received().DeliverMessage(Arg.Is <P2PMessage>(m => m.GetType().IsAssignableFrom(expectedMessageType))); }
public void Broadcasts_only_once([Values(SendBlockMode.HashOnly, SendBlockMode.FullBlock)] SendBlockMode mode) { Block block = Build.A.Block.WithTotalDifficulty(1L).TestObject; _handler.NotifyOfNewBlock(block, mode); _handler.NotifyOfNewBlock(block, SendBlockMode.HashOnly); _handler.NotifyOfNewBlock(block, SendBlockMode.FullBlock); _session.Received(1).DeliverMessage(Arg.Is <P2PMessage>(m => m.GetType().IsAssignableFrom(typeof(NewBlockMessage)) || m.GetType().IsAssignableFrom(typeof(NewBlockHashesMessage)))); }
public override void NotifyOfNewBlock(Block block, SendBlockMode mode) { if (RequestedAnnounceType == LesAnnounceType.None) { return; } if (!block.TotalDifficulty.HasValue) { throw new InvalidOperationException($"Trying to send a block {block.Hash} with null total difficulty"); } if (block.TotalDifficulty <= _lastSentBlock.TotalDifficulty) { return; } AnnounceMessage announceMessage = new(); announceMessage.HeadHash = block.Hash; announceMessage.HeadBlockNo = block.Number; announceMessage.TotalDifficulty = block.TotalDifficulty.Value; if (_lastSentBlock == null || block.ParentHash == _lastSentBlock.Hash) { announceMessage.ReorgDepth = 0; } else { BlockHeader firstCommonAncestor = SyncServer.FindLowestCommonAncestor(block.Header, _lastSentBlock); if (firstCommonAncestor == null) { throw new SubprotocolException($"Unable to send announcment to LES peer - No common ancestor found between {block.Header} and {_lastSentBlock}"); } announceMessage.ReorgDepth = _lastSentBlock.Number - firstCommonAncestor.Number; } _lastSentBlock = block.Header; Send(announceMessage); }
public abstract void NotifyOfNewBlock(Block block, SendBlockMode mode);
public void NotifyOfNewBlock(Block block, SendBlockMode mode) { throw new NotImplementedException(); }
public void NotifyOfNewBlock(Block block, SendBlockMode mode) { }