public override void HandleMessage(ZeroPacket message) { base.HandleMessage(message); switch (message.PacketType) { case Eth65MessageCode.PooledTransactions: PooledTransactionsMessage pooledTxMsg = Deserialize <PooledTransactionsMessage>(message.Content); Metrics.Eth65PooledTransactionsReceived++; ReportIn(pooledTxMsg); Handle(pooledTxMsg); break; case Eth65MessageCode.GetPooledTransactions: GetPooledTransactionsMessage getPooledTxMsg = Deserialize <GetPooledTransactionsMessage>(message.Content); ReportIn(getPooledTxMsg); Handle(getPooledTxMsg); break; case Eth65MessageCode.NewPooledTransactionHashes: NewPooledTransactionHashesMessage newPooledTxMsg = Deserialize <NewPooledTransactionHashesMessage>(message.Content); ReportIn(newPooledTxMsg); Handle(newPooledTxMsg); break; } }
private void Handle(GetPooledTransactionsMessage msg) { Metrics.Eth65GetPooledTransactionsReceived++; Stopwatch stopwatch = Stopwatch.StartNew(); Send(FulfillPooledTransactionsRequest(msg)); stopwatch.Stop(); if (Logger.IsTrace) { Logger.Trace($"OUT {Counter:D5} {nameof(GetPooledTransactionsMessage)} to {Node:c} " + $"in {stopwatch.Elapsed.TotalMilliseconds}ms"); } }
protected PooledTransactionsMessage FulfillPooledTransactionsRequest( GetPooledTransactionsMessage msg) { List <Transaction> txs = new(); int responseSize = Math.Min(256, msg.Hashes.Count); for (int i = 0; i < responseSize; i++) { if (_txPool.TryGetPendingTransaction(msg.Hashes[i], out Transaction tx)) { txs.Add(tx); } } return(new PooledTransactionsMessage(txs)); }
private void Handle(GetPooledTransactionsMessage msg) { Metrics.Eth65GetPooledTransactionsReceived++; Stopwatch stopwatch = Stopwatch.StartNew(); List <Transaction> txs = new List <Transaction>(); int responseSize = Math.Min(256, msg.Hashes.Count); for (int i = 0; i < responseSize; i++) { if (_txPool.TryGetPendingTransaction(msg.Hashes[i], out Transaction tx)) { txs.Add(tx); } } Send(new PooledTransactionsMessage(txs)); stopwatch.Stop(); if (Logger.IsTrace) { Logger.Trace($"OUT {Counter:D5} GetPooledTransactionsMessage to {Node:c} in {stopwatch.Elapsed.TotalMilliseconds}ms"); } }