tbqueue hint_out_;
FileTransfer* transfer_;
uint64_t twist_;
+ bin64_t range_;
public:
- SeqPiecePicker (FileTransfer* file_to_pick_from) :
+ SeqPiecePicker (FileTransfer* file_to_pick_from) : range_(bin64_t::ALL),
transfer_(file_to_pick_from), ack_hint_out_(), twist_(0) {
ack_hint_out_.range_copy(file().ack_out(),bin64_t::ALL);
}
virtual void Randomize (uint64_t twist) {
twist_ = twist;
}
+
+ virtual void LimitRange (bin64_t range) {
+ range_ = range;
+ }
virtual bin64_t Pick (binmap_t& offer, uint64_t max_width, tint expires) {
while (hint_out_.size() && hint_out_.front().time<NOW-TINT_SEC*3/2) { // FIXME sec
offer.twist(twist_);
ack_hint_out_.twist(twist_);
}
- bin64_t hint = offer.find_filtered (ack_hint_out_,bin64_t::ALL,binmap_t::FILLED);
+ bin64_t hint = offer.find_filtered (ack_hint_out_,range_,binmap_t::FILLED);
if (twist_) {
hint = hint.twisted(twist_);
offer.twist(0);