From b60ec6d9196f2864858bed9284189a95f1def49c Mon Sep 17 00:00:00 2001 From: Igor Katson Date: Sat, 31 Aug 2024 12:39:18 +0100 Subject: [PATCH] peer has full torrent debug message --- crates/librqbit/src/torrent_state/live/mod.rs | 18 +++++++++++++++--- .../src/torrent_state/live/peers/mod.rs | 7 ++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/crates/librqbit/src/torrent_state/live/mod.rs b/crates/librqbit/src/torrent_state/live/mod.rs index ccc7a97..5c150d2 100644 --- a/crates/librqbit/src/torrent_state/live/mod.rs +++ b/crates/librqbit/src/torrent_state/live/mod.rs @@ -1222,6 +1222,13 @@ impl PeerHandler { } }; trace!("updated bitfield with have={}", have); + if let Some(true) = live + .bitfield + .get(..self.state.lengths.total_pieces() as usize) + .map(|s| s.all()) + { + debug!("peer has full torrent"); + } }); self.on_bitfield_notify.notify_waiters(); } @@ -1234,9 +1241,14 @@ impl PeerHandler { self.state.lengths.piece_bitfield_bytes(), ); } - self.state - .peers - .update_bitfield_from_vec(self.addr, bitfield.0.to_vec().into_boxed_slice()); + let bf = BF::from_boxed_slice(bitfield.0.to_vec().into_boxed_slice()); + if let Some(true) = bf + .get(..self.state.lengths.total_pieces() as usize) + .map(|s| s.all()) + { + debug!("peer has full torrent"); + } + self.state.peers.update_bitfield(self.addr, bf); self.on_bitfield_notify.notify_waiters(); Ok(()) } diff --git a/crates/librqbit/src/torrent_state/live/peers/mod.rs b/crates/librqbit/src/torrent_state/live/peers/mod.rs index 6478f30..03c6c10 100644 --- a/crates/librqbit/src/torrent_state/live/peers/mod.rs +++ b/crates/librqbit/src/torrent_state/live/peers/mod.rs @@ -105,11 +105,12 @@ impl PeerStates { }) } - pub fn update_bitfield_from_vec(&self, handle: PeerHandle, bitfield: Box<[u8]>) -> Option<()> { - self.with_live_mut(handle, "update_bitfield_from_vec", |live| { - live.bitfield = BF::from_boxed_slice(bitfield); + pub fn update_bitfield(&self, handle: PeerHandle, bitfield: BF) -> Option<()> { + self.with_live_mut(handle, "update_bitfield", |live| { + live.bitfield = bitfield; }) } + pub fn mark_peer_connecting(&self, h: PeerHandle) -> anyhow::Result<(PeerRx, PeerTx)> { let rx = self .with_peer_mut(h, "mark_peer_connecting", |peer| {