1 Star 0 Fork 0

lic17/BaiduPCS-Go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
range.go 1.08 KB
一键复制 编辑 原始数据 按行查看 历史
konica 提交于 2018-05-25 15:05 . 更新后台任务, 取消调度前台
package downloader
import (
"fmt"
"sync/atomic"
)
//Range 请求范围
type Range struct {
Begin int64
End int64
}
//RangeList 请求范围列表
type RangeList []*Range
//Len 长度
func (r *Range) Len() int64 {
return r.LoadEnd() - r.LoadBegin() + 1
}
//LoadBegin 读取Begin, 原子操作
func (r *Range) LoadBegin() int64 {
return atomic.LoadInt64(&r.Begin)
}
//AddBegin 增加Begin, 原子操作
func (r *Range) AddBegin(i int64) (newi int64) {
return atomic.AddInt64(&r.Begin, i)
}
//LoadEnd 读取End, 原子操作
func (r *Range) LoadEnd() int64 {
return atomic.LoadInt64(&r.End)
}
//StoreBegin 储存End, 原子操作
func (r *Range) StoreBegin(end int64) {
atomic.StoreInt64(&r.Begin, end)
}
//StoreEnd 储存End, 原子操作
func (r *Range) StoreEnd(end int64) {
atomic.StoreInt64(&r.End, end)
}
func (r *Range) String() string {
return fmt.Sprintf("{%d-%d}", r.LoadBegin(), r.LoadEnd())
}
//Len 获取所有的Range长度
func (rl *RangeList) Len() int64 {
var l int64
for _, wrange := range *rl {
if wrange == nil {
continue
}
l += wrange.Len()
}
return l
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/lic17/BaiduPCS-Go.git
git@gitee.com:lic17/BaiduPCS-Go.git
lic17
BaiduPCS-Go
BaiduPCS-Go
v3.5.6

搜索帮助