From bcf72cec13ab87b00ea88989af39d064ec9671ed Mon Sep 17 00:00:00 2001 From: Sean Matthew Date: Fri, 20 Oct 2023 08:44:51 -0400 Subject: [PATCH] poll mut hashes --- crates/net/network/src/transactions.rs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/crates/net/network/src/transactions.rs b/crates/net/network/src/transactions.rs index 34e194269c..a545d0d6fa 100644 --- a/crates/net/network/src/transactions.rs +++ b/crates/net/network/src/transactions.rs @@ -1025,8 +1025,29 @@ struct TransactionFetcher { } impl TransactionFetcher { + + fn poll() { + // Advance all requests. + while let Poll::Ready(Some(GetPooledTxResponse { peer_id, result })) = + self.inflight_requests.poll_next_unpin(cx) + { + match result { + Ok(Ok(txs)) => { + self.import_transactions(peer_id, txs.0, TransactionSource::Response) + } + Ok(Err(req_err)) => { + self.on_request_error(peer_id, req_err); + } + Err(_) => { + // request channel closed/dropped + self.on_request_error(peer_id, RequestError::ChannelClosed) + } + } + } + } + // request the missing transactions - fn request_from(&mut self, hashes: Vec, peer: &Peer) -> u64 { + fn request_from(&mut self, mut hashes: Vec, peer: &Peer) -> u64 { let peer_id: PeerId = peer.request_tx.peer_id; let mut missing_hashes: Vec = Vec::new(); // 1. filter out inflight hashes, and register the peer as fallback for all inflight hashes