Nothing much
This commit is contained in:
parent
b26af687b7
commit
c2affa8865
3 changed files with 13 additions and 7 deletions
2
TODO.md
2
TODO.md
|
|
@ -5,7 +5,7 @@
|
||||||
- [x] use the "update_hash" function in piece checking
|
- [x] use the "update_hash" function in piece checking
|
||||||
- [ ] signaling when file is done
|
- [ ] signaling when file is done
|
||||||
|
|
||||||
- [ ]
|
- [ ] when we have the whole torrent, there's no point talking to peers that also have the whole torrent
|
||||||
|
|
||||||
- [ ] per-file stats
|
- [ ] per-file stats
|
||||||
- [ ] per-peer stats
|
- [ ] per-peer stats
|
||||||
|
|
|
||||||
|
|
@ -187,7 +187,8 @@ impl TorrentManager {
|
||||||
|
|
||||||
async fn stats_printer(self) -> anyhow::Result<()> {
|
async fn stats_printer(self) -> anyhow::Result<()> {
|
||||||
loop {
|
loop {
|
||||||
let live_peers = self.inner.locked.read().peers.stats();
|
let live_peer_stats = self.inner.locked.read().peers.stats();
|
||||||
|
let seen_peers_count = self.inner.locked.read().peers.seen().len();
|
||||||
let have = self.inner.stats.have.load(Ordering::Relaxed);
|
let have = self.inner.stats.have.load(Ordering::Relaxed);
|
||||||
let fetched = self.inner.stats.fetched_bytes.load(Ordering::Relaxed);
|
let fetched = self.inner.stats.fetched_bytes.load(Ordering::Relaxed);
|
||||||
let needed = self.inner.needed;
|
let needed = self.inner.needed;
|
||||||
|
|
@ -204,10 +205,12 @@ impl TorrentManager {
|
||||||
(downloaded as f64 / needed as f64) * 100f64
|
(downloaded as f64 / needed as f64) * 100f64
|
||||||
};
|
};
|
||||||
info!(
|
info!(
|
||||||
"Stats: downloaded {:.2}% ({}), peers {:?}, fetched {}, remaining {} out of {}, uploaded {}, total have {}",
|
"Stats: downloaded {:.2}% ({:.2}), peers {{live: {}, connecting: {}, seen: {}}}, fetched {}, remaining {:.2} out of {:.2}, uploaded {:.2}, total have {:.2}",
|
||||||
downloaded_pct,
|
downloaded_pct,
|
||||||
SF::new(downloaded),
|
SF::new(downloaded),
|
||||||
live_peers,
|
live_peer_stats.live,
|
||||||
|
live_peer_stats.connecting,
|
||||||
|
seen_peers_count,
|
||||||
SF::new(fetched),
|
SF::new(fetched),
|
||||||
SF::new(remaining),
|
SF::new(remaining),
|
||||||
SF::new(needed),
|
SF::new(needed),
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ impl From<&ChunkInfo> for InflightRequest {
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct PeerStates {
|
pub struct PeerStates {
|
||||||
states: HashMap<PeerHandle, PeerState>,
|
states: HashMap<PeerHandle, PeerState>,
|
||||||
seen_peers: HashSet<SocketAddr>,
|
seen: HashSet<SocketAddr>,
|
||||||
inflight_pieces: HashSet<ValidPieceIndex>,
|
inflight_pieces: HashSet<ValidPieceIndex>,
|
||||||
tx: HashMap<PeerHandle, Arc<tokio::sync::mpsc::Sender<WriterRequest>>>,
|
tx: HashMap<PeerHandle, Arc<tokio::sync::mpsc::Sender<WriterRequest>>>,
|
||||||
}
|
}
|
||||||
|
|
@ -71,13 +71,16 @@ impl PeerStates {
|
||||||
addr: SocketAddr,
|
addr: SocketAddr,
|
||||||
tx: tokio::sync::mpsc::Sender<WriterRequest>,
|
tx: tokio::sync::mpsc::Sender<WriterRequest>,
|
||||||
) -> Option<PeerHandle> {
|
) -> Option<PeerHandle> {
|
||||||
if self.seen_peers.contains(&addr) {
|
if self.seen.contains(&addr) {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
let handle = self.add(addr, tx)?;
|
let handle = self.add(addr, tx)?;
|
||||||
self.seen_peers.insert(addr);
|
self.seen.insert(addr);
|
||||||
Some(handle)
|
Some(handle)
|
||||||
}
|
}
|
||||||
|
pub fn seen(&self) -> &HashSet<SocketAddr> {
|
||||||
|
&self.seen
|
||||||
|
}
|
||||||
pub fn get_live(&self, handle: PeerHandle) -> Option<&LivePeerState> {
|
pub fn get_live(&self, handle: PeerHandle) -> Option<&LivePeerState> {
|
||||||
if let PeerState::Live(ref l) = self.states.get(&handle)? {
|
if let PeerState::Live(ref l) = self.states.get(&handle)? {
|
||||||
return Some(l);
|
return Some(l);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue