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