mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-19 21:46:11 +05:00
change preload
This commit is contained in:
@@ -8,11 +8,9 @@ import (
|
||||
|
||||
type BTSets struct {
|
||||
// Cache
|
||||
CacheSize int64 // in byte, def 200 mb
|
||||
PreloadBufferSize int64 // in byte, buffer for preload
|
||||
|
||||
// Reader
|
||||
ReaderPreload int // in percent, 5%-100%, [...S__X__E...] [S-E] not clean
|
||||
CacheSize int64 // in byte, def 200 mb
|
||||
PreloadBuffer bool
|
||||
ReaderReadAHead int // in percent, 5%-100%, [...S__X__E...] [S-E] not clean
|
||||
|
||||
// Storage
|
||||
SaveOnDisk bool // save on disk?
|
||||
@@ -52,11 +50,11 @@ func SetBTSets(sets *BTSets) {
|
||||
return
|
||||
}
|
||||
|
||||
if sets.ReaderPreload < 5 {
|
||||
sets.ReaderPreload = 5
|
||||
if sets.ReaderReadAHead < 5 {
|
||||
sets.ReaderReadAHead = 5
|
||||
}
|
||||
if sets.ReaderPreload > 100 {
|
||||
sets.ReaderPreload = 100
|
||||
if sets.ReaderReadAHead > 100 {
|
||||
sets.ReaderReadAHead = 100
|
||||
}
|
||||
BTsets = sets
|
||||
buf, err := json.Marshal(BTsets)
|
||||
@@ -72,8 +70,8 @@ func loadBTSets() {
|
||||
if len(buf) > 0 {
|
||||
err := json.Unmarshal(buf, &BTsets)
|
||||
if err == nil {
|
||||
if BTsets.ReaderPreload < 5 {
|
||||
BTsets.ReaderPreload = 5
|
||||
if BTsets.ReaderReadAHead < 5 {
|
||||
BTsets.ReaderReadAHead = 5
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -84,11 +82,11 @@ func loadBTSets() {
|
||||
sets.EnableDebug = false
|
||||
sets.DisableUTP = true
|
||||
sets.CacheSize = 200 * 1024 * 1024 // 200mb
|
||||
sets.PreloadBufferSize = 20 * 1024 * 1024
|
||||
sets.PreloadBuffer = true
|
||||
sets.ConnectionsLimit = 20
|
||||
sets.DhtConnectionLimit = 500
|
||||
sets.RetrackersMode = 1
|
||||
sets.TorrentDisconnectTimeout = 30
|
||||
sets.ReaderPreload = 70 // 70% preload
|
||||
sets.ReaderReadAHead = 70 // 70% preload
|
||||
BTsets = sets
|
||||
}
|
||||
|
||||
@@ -6,11 +6,10 @@ import (
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
"server/log"
|
||||
sets "server/settings"
|
||||
|
||||
"github.com/anacrolix/torrent"
|
||||
"github.com/anacrolix/torrent/metainfo"
|
||||
"server/log"
|
||||
sets "server/settings"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -128,3 +127,16 @@ func Shutdown() {
|
||||
func WriteStatus(w io.Writer) {
|
||||
bts.client.WriteStatus(w)
|
||||
}
|
||||
|
||||
func Preload(torr *Torrent, index int) {
|
||||
if !sets.BTsets.PreloadBuffer {
|
||||
size := int64(20 * 1024 * 1024)
|
||||
if size > sets.BTsets.CacheSize {
|
||||
size = sets.BTsets.CacheSize
|
||||
}
|
||||
torr.Preload(index, size)
|
||||
} else {
|
||||
size := int64(float32(sets.BTsets.ReaderReadAHead) / 100.0 * float32(sets.BTsets.CacheSize))
|
||||
torr.Preload(index, size)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ func (r *Reader) getPieceNum(offset int64) int {
|
||||
}
|
||||
|
||||
func (r *Reader) getReaderRange() (int64, int64) {
|
||||
prc := int64(settings.BTsets.ReaderPreload)
|
||||
prc := int64(settings.BTsets.ReaderReadAHead)
|
||||
beginOffset := r.offset - r.cache.capacity*(100-prc)/100
|
||||
endOffset := r.offset + r.cache.capacity*prc/100
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ func stream(c *gin.Context) {
|
||||
}
|
||||
// preload torrent
|
||||
if preload {
|
||||
tor.Preload(index, 0)
|
||||
torr.Preload(tor, index)
|
||||
}
|
||||
// return stat if query
|
||||
if stat {
|
||||
|
||||
Reference in New Issue
Block a user