change file offsets according to blocks

This commit is contained in:
nikk gitanes
2021-08-20 03:45:48 +03:00
parent c30a4473f8
commit e609739d4f
2 changed files with 15 additions and 6 deletions

View File

@@ -63,7 +63,11 @@ func (t *Torrent) Preload(index int, size int64) {
} }
}() }()
mb5 := int64(5 * 1024 * 1024) // mb5 -> 8/16 MB
mb5 := int64(t.Info().PieceLength)
if (mb5 < 8 * 1024 * 1024) {
mb5 = 8 * 1024 * 1024
}
readerStart := file.NewReader() readerStart := file.NewReader()
defer readerStart.Close() defer readerStart.Close()

View File

@@ -40,8 +40,6 @@ type Cache struct {
torrent *torrent.Torrent torrent *torrent.Torrent
} }
const FileRangeNotDelete = 5 * 1024 * 1024
func NewCache(capacity int64, storage *Storage) *Cache { func NewCache(capacity int64, storage *Storage) *Cache {
ret := &Cache{ ret := &Cache{
capacity: capacity, capacity: capacity,
@@ -251,7 +249,7 @@ func (c *Cache) getRemPieces() []*Piece {
readerPos := r.getReaderPiece() readerPos := r.getReaderPiece()
readerRAHPos := r.getReaderRAHPiece() readerRAHPos := r.getReaderRAHPiece()
end := r.getPiecesRange().End end := r.getPiecesRange().End
count := int(16777216 / c.pieceLength * 5) // 80 MB count := int(16 * 1024 * 1024 / c.pieceLength * 5) // 80 MB
if count > 40 { if count > 40 {
count = 40 count = 40
} }
@@ -284,14 +282,21 @@ func (c *Cache) getRemPieces() []*Piece {
} }
func (c *Cache) isIdInFileBE(ranges []Range, id int) bool { func (c *Cache) isIdInFileBE(ranges []Range, id int) bool {
// keep 8/16 MB
FileRangeNotDelete := int64(c.pieceLength)
if (FileRangeNotDelete < 8 * 1024 * 1024) {
FileRangeNotDelete = 8 * 1024 * 1024
}
for _, rng := range ranges { for _, rng := range ranges {
ss := int(rng.File.Offset() / c.pieceLength) ss := int(rng.File.Offset() / c.pieceLength)
se := int((FileRangeNotDelete + rng.File.Offset()) / c.pieceLength) se := int((rng.File.Offset() + FileRangeNotDelete) / c.pieceLength)
es := int((rng.File.Offset() + rng.File.Length() - FileRangeNotDelete) / c.pieceLength) es := int((rng.File.Offset() + rng.File.Length() - FileRangeNotDelete) / c.pieceLength)
ee := int((rng.File.Offset() + rng.File.Length()) / c.pieceLength) ee := int((rng.File.Offset() + rng.File.Length()) / c.pieceLength)
if id >= ss && id <= se || id >= es && id <= ee { if id >= ss && id < se || id > es && id <= ee {
return true return true
} }
} }