basic pipelining
This commit is contained in:
@@ -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>) {
|
||||||
|
|||||||
Reference in New Issue
Block a user