Changeset 5fd1b69 for apps


Ignore:
Timestamp:
Jul 12, 2018 3:34:13 PM (2 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
2daeb6d
Parents:
e24ebf4
Message:

i2psnark: Sequential piece priority within each file (ticket #2234)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • apps/i2psnark/java/src/org/klomp/snark/Storage.java

    re24ebf4 r5fd1b69  
    574574          pcEnd += piece_size;
    575575          int pri = _torrentFiles.get(file).priority;
    576           // TODO if (_inOrder) ...
    577576          while (fileEnd <= pcEnd && file < _torrentFiles.size() - 1) {
    578577              file++;
     
    584583          }
    585584          rv[i] = pri;
     585      }
     586      if (_inOrder) {
     587          // Do a second pass to set the priority of the pieces within each file
     588          // this only works because MAX_PIECES * MAX_FILES_PER_TORRENT < Integer.MAX_VALUE
     589          // the base file priority
     590          int pri = PRIORITY_SKIP;
     591          for (int i = 0; i < rv.length; i++) {
     592              int val = rv[i];
     593              if (val <= PRIORITY_NORMAL)
     594                  continue;
     595              if (val != pri) {
     596                  pri = val;
     597                  // new file
     598                  rv[i] *= MAX_PIECES;
     599              } else {
     600                  // same file, decrement priority from previous piece
     601                  rv[i] = rv[i-1] - 1;
     602              }
     603          }
    586604      }
    587605      return rv;
Note: See TracChangeset for help on using the changeset viewer.