downloader

package
v3.3.2+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 24, 2018 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Overview

Package downloader 多线程下载器

Index

Constants

This section is empty.

Variables

View Source
var (
	// DownloadingFileSuffix 断点续传临时文件后缀
	DownloadingFileSuffix = ".downloader_downloading"

	// MinParallelSize 单个线程最小的数据量
	MinParallelSize = 128 * pcsutil.KB
)

Functions

func DoDownload

func DoDownload(url string, cfg Config)

DoDownload 执行下载

Types

type Block

type Block struct {
	Begin int64 `json:"begin"`
	End   int64 `json:"end"`

	IsFinal bool `json:"isfinal"` // 最后线程, 因为最后的下载线程, 需要另外做处理
	// contains filtered or unexported fields
}

Block 下载区块

type BlockList

type BlockList []*Block

BlockList 下载区块列表

type Config

type Config struct {
	Client    *requester.HTTPClient // http 客户端
	SavePath  string                // relative or absulute path
	Parallel  int                   // 最大下载并发量
	CacheSize int                   // 下载缓冲
	Testing   bool                  // 是否测试下载
}

Config 下载配置

func NewConfig

func NewConfig() *Config

NewConfig 返回预设配置

func (*Config) Fix

func (cfg *Config) Fix()

Fix 修正配置信息

type Downloader

type Downloader struct {
	OnExecute     func()
	OnFinish      func()
	OnPause       func()
	OnResume      func()
	OnCancel      func()                    // 手动取消
	OnCancelError func(code int, err error) // 中途遇到下载错误而取消的

	URL    string
	Config Config
	// contains filtered or unexported fields
}

Downloader 下载

func NewDownloader

func NewDownloader(durl string, cfg Config) (der *Downloader, err error)

NewDownloader 创建新的文件下载

func (*Downloader) Cancel

func (der *Downloader) Cancel()

Cancel 取消下载

func (*Downloader) Check

func (der *Downloader) Check() (err error)

Check 检查配置, 环境, 准备下载条件

func (*Downloader) Execute

func (der *Downloader) Execute() (err error)

Execute 开始执行下载

func (*Downloader) GetStatusChan

func (der *Downloader) GetStatusChan() <-chan StatusStat

GetStatusChan 返回 Status 对象的 channel

func (*Downloader) Pause

func (der *Downloader) Pause()

Pause 暂停下载, 不支持单线程暂停下载

func (*Downloader) Resume

func (der *Downloader) Resume()

Resume 恢复下载, 不支持单线程

type SpeedsStat

type SpeedsStat struct {
	// contains filtered or unexported fields
}

SpeedsStat 统计下载速度

func (*SpeedsStat) AddReaded

func (sps *SpeedsStat) AddReaded(readed int64)

AddReaded 原子操作, 增加数据量

func (*SpeedsStat) GetSpeedsPerSecond

func (sps *SpeedsStat) GetSpeedsPerSecond() (speeds int64)

GetSpeedsPerSecond 结束统计速度, 并返回每秒的速度

type Status

type Status struct {
	StatusStat

	BlockList BlockList `json:"block_list"` // 下载区块列表
	// contains filtered or unexported fields
}

Status 下载状态

type StatusStat

type StatusStat struct {
	TotalSize  int64 `json:"total_size"` // 总大小
	Downloaded int64 `json:"downloaded"` // 已下载的数据量
	Speeds     int64 `json:"-"`          // 下载速度

	TimeElapsed time.Duration `json:"-"` // 下载的时间
	// contains filtered or unexported fields
}

StatusStat 统计状态数据

type Writer

type Writer interface {
	io.WriteCloser
	io.WriterAt
}

Writer 接口

Directories

Path Synopsis
Package cachepool []byte缓存池
Package cachepool []byte缓存池

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL