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  }