From e7a7b66a18abaad6b1c16ac588cc011960dab900 Mon Sep 17 00:00:00 2001 From: victor Date: Tue, 10 Nov 2009 09:48:31 +0000 Subject: [PATCH] hacking git-svn-id: https://ttuki.vtt.fi/svn/p2p-next/TUD/p2tp/trunk@522 e16421f0-f15b-0410-abcd-98678b794739 --- ext/seq_picker.cpp | 5 +++++ sendrecv.cpp | 7 +++++-- transfer.cpp | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ext/seq_picker.cpp b/ext/seq_picker.cpp index 17d4a94..58ca215 100644 --- a/ext/seq_picker.cpp +++ b/ext/seq_picker.cpp @@ -52,6 +52,11 @@ public: return hint; // TODO: end-game mode while (hint.layer()>layer) hint = hint.left(); + assert(ack_hint_out_.get(hint)==bins::EMPTY); + if (file().ack_out().get(hint)!=bins::EMPTY) { + eprintf("bogus hint: (%i,%lli)\n",(int)hint.layer(),hint.offset()); + exit(1); + } ack_hint_out_.set(hint); return hint; /*for (int l=layer; l>=0; l--) { diff --git a/sendrecv.cpp b/sendrecv.cpp index 01d799f..5ad627b 100644 --- a/sendrecv.cpp +++ b/sendrecv.cpp @@ -149,7 +149,7 @@ void Channel::AddHint (Datagram& dgram) { } else { int status = file().ack_out().get(f.bin); if (status==bins::EMPTY) { - transfer().picker().Received(f.bin); + transfer().picker().Expired(f.bin); break; } else if (status==bins::FILLED) { hint_out_.pop_front(); @@ -178,7 +178,7 @@ void Channel::AddHint (Datagram& dgram) { dprintf("%s #%i hinted %lli peer_cwnd %lli/%lli=%f\n", tintstr(),id,hinted,rtt_avg_,dip_avg_,((float)rtt_avg_/dip_avg_)); - if ( 8*peer_cwnd > hinted ) { //hinted*1024 < peer_cwnd*4 ) { + if ( 4*peer_cwnd > hinted ) { //hinted*1024 < peer_cwnd*4 ) { uint8_t layer = 2; // actually, enough bin64_t hint = transfer().picker().Pick(ack_in_,layer); @@ -221,6 +221,7 @@ bin64_t Channel::AddData (Datagram& dgram) { dgram.Push(buf,r); dprintf("%s #%i +data (%lli)\n",tintstr(),id,tosend.base_offset()); data_out_.push_back(tosend); + ack_in_.set(tosend); return tosend; } @@ -310,6 +311,7 @@ bin64_t Channel::OnData (Datagram& dgram) { tint dip = NOW - last_recv_time_; dip_avg_ = ( dip_avg_*3 + dip ) >> 2; } + transfer().picker().Received(pos); // so dirty; FIXME FIXME FIXME return pos; } else return bin64_t::NONE; @@ -355,6 +357,7 @@ void Channel::OnTs (Datagram& dgram) { void Channel::OnHint (Datagram& dgram) { bin64_t hint = dgram.Pull32(); hint_in_.push_back(hint); + ack_in_.set(hint,bins::EMPTY); //RequeueSend(cc_->OnHintRecvd(hint)); dprintf("%s #%i -hint (%i,%lli)\n",tintstr(),id,hint.layer(),hint.offset()); } diff --git a/transfer.cpp b/transfer.cpp index b1effc0..8ee9d0c 100644 --- a/transfer.cpp +++ b/transfer.cpp @@ -35,7 +35,7 @@ FileTransfer::FileTransfer (const char* filename, const Sha1Hash& _root_hash) : files.resize(fd()+1); files[fd()] = this; picker_ = new SeqPiecePicker(this); - picker_->Randomize(rand()&63); + //picker_->Randomize(rand()&63); } -- 2.20.1