Ai
1 Star 0 Fork 0

lurenjia/file_client_go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
task.go 1.34 KB
一键复制 编辑 原始数据 按行查看 历史
lurenjia 提交于 2022-08-31 10:18 +08:00 . 1
// Package client
// @program: file_client_go
// @author: ygt
// @create: 2022/8/17 14:55
package client
import (
"encoding/json"
"log"
"sync"
"time"
)
type up struct {
filePath string
uploadUri string
i int64
totalChunks float64
identifier string
clientId string
wg *sync.WaitGroup
}
func (t *up) do() {
//log.Printf("上传第%d片\n", t.i)
result, err := multipartF(t.filePath, t.uploadUri, t.i, (t.i-1)*chunkSize, t.totalChunks, t.identifier, t.clientId)
if err != nil {
log.Println(err)
}
var fur FileUploadResponseInfo
_ = json.Unmarshal(result, &fur)
//log.Println(string(result))
if fur.State == currentChunkFailed {
// 当前分片上传失败,失败重传
for y := 1; y <= retryNumber; y++ {
result, err = multipartF(t.filePath, t.uploadUri, t.i, (t.i-1)*chunkSize, t.totalChunks, t.identifier, t.clientId)
if err != nil {
log.Println(err)
}
_ = json.Unmarshal(result, &fur)
if fur.State == currentChunkSuccess {
// 重传分片成功
break
}
if fur.State == currentChunkLocked {
//log.Printf("当前分片%d锁定,跳过\n", t.i)
continue
}
time.Sleep(50 * time.Millisecond)
}
}
if fur.State == currentChunkLocked {
//log.Printf("--当前分片%d锁定,跳过--\n", t.i)
}
t.wg.Done()
}
func taskFunc(data interface{}) {
task := data.(*up)
task.do()
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/lurenjia528/file_client_go.git
git@gitee.com:lurenjia528/file_client_go.git
lurenjia528
file_client_go
file_client_go
1a3fe9117fee

搜索帮助