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