github.com/iikira/iikira-go-utils@v0.0.0-20230610031953-f2cb11cde33a/requester/downloader/config.go (about) 1 package downloader 2 3 import ( 4 "github.com/iikira/iikira-go-utils/requester/transfer" 5 ) 6 7 const ( 8 //CacheSize 默认的下载缓存 9 CacheSize = 8192 10 ) 11 12 var ( 13 // MinParallelSize 单个线程最小的数据量 14 MinParallelSize int64 = 128 * 1024 // 128kb 15 ) 16 17 //Config 下载配置 18 type Config struct { 19 Mode transfer.RangeGenMode // 下载Range分配模式 20 MaxParallel int // 最大下载并发量 21 CacheSize int // 下载缓冲 22 BlockSize int64 // 每个Range区块的大小, RangeGenMode 为 RangeGenMode2 时才有效 23 MaxRate int64 // 限制最大下载速度 24 InstanceStateStorageFormat InstanceStateStorageFormat // 断点续传储存类型 25 InstanceStatePath string // 断点续传信息路径 26 IsTest bool // 是否测试下载 27 TryHTTP bool // 是否尝试使用 http 连接 28 } 29 30 //NewConfig 返回默认配置 31 func NewConfig() *Config { 32 return &Config{ 33 MaxParallel: 5, 34 CacheSize: CacheSize, 35 IsTest: false, 36 } 37 } 38 39 //Fix 修复配置信息, 使其合法 40 func (cfg *Config) Fix() { 41 fixCacheSize(&cfg.CacheSize) 42 if cfg.MaxParallel < 1 { 43 cfg.MaxParallel = 1 44 } 45 } 46 47 //Copy 拷贝新的配置 48 func (cfg *Config) Copy() *Config { 49 newCfg := *cfg 50 return &newCfg 51 }