github.com/qjfoidnh/BaiduPCS-Go@v0.0.0-20231011165705-caa18a3765f3/requester/downloader/config.go (about)

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