mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-19 13:36:09 +05:00
change file offsets according to blocks
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user