basic pipelining

This commit is contained in:
2016-12-14 13:32:31 -05:00
parent ffdfda21eb
commit 75065741dc

View File

@@ -178,7 +178,7 @@ impl SessionTorrent {
}
FragmentStatus::Complete => continue,
FragmentStatus::Taken(timestamp) => {
if timestamp.elapsed() > Duration::from_secs(10) {
if timestamp.elapsed() > Duration::from_secs(5) {
println!("retrying fragment");
fragment.status = FragmentStatus::Taken(Instant::now());
return Some((index, fragment.begin, fragment.length))
@@ -242,6 +242,7 @@ impl SessionTorrent {
// println!("onto piece {} {}..{}", index, begin, begin + length);
peer::send_request(&mut self.get_peer(&peer_id).sock, index, begin,length);
} else {
peer::send_not_interested(&mut self.get_peer(&peer_id).sock);
println!("no fragment");
}
}
@@ -274,6 +275,8 @@ impl SessionTorrent {
fn unchoke_reply(&mut self, peer_id: &Hash) {
self.get_peer(&peer_id).peer_choking = false;
self.requeue(peer_id);
self.requeue(peer_id);
self.requeue(peer_id);
}
fn piece_reply(&mut self, peer_id: &Hash, index: u32, begin: u32, block: Vec<u8>) {