mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-06 12:03:50 +08:00
fix last block seq.
This commit is contained in:
parent
4588cec0df
commit
1071e54cec
@ -226,6 +226,7 @@ func (c *QQClient) highwayUploadFileMultiThreadingByBDH(path string, cmdId int32
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
var nextLock sync.Mutex
|
var nextLock sync.Mutex
|
||||||
|
var lastErr error
|
||||||
nextBlockId := func() int {
|
nextBlockId := func() int {
|
||||||
nextLock.Lock()
|
nextLock.Lock()
|
||||||
defer nextLock.Unlock()
|
defer nextLock.Unlock()
|
||||||
@ -237,6 +238,14 @@ func (c *QQClient) highwayUploadFileMultiThreadingByBDH(path string, cmdId int32
|
|||||||
}
|
}
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
uploadedCount := func() (c int) {
|
||||||
|
for _, block := range blocks {
|
||||||
|
if block.Uploaded {
|
||||||
|
c++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
doUpload := func() error {
|
doUpload := func() error {
|
||||||
conn, err := net.DialTimeout("tcp", c.srvSsoAddrs[0], time.Second*20)
|
conn, err := net.DialTimeout("tcp", c.srvSsoAddrs[0], time.Second*20)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -257,6 +266,14 @@ func (c *QQClient) highwayUploadFileMultiThreadingByBDH(path string, cmdId int32
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
block := blocks[nextId]
|
block := blocks[nextId]
|
||||||
|
if block.Id == len(blocks)-1 {
|
||||||
|
for uploadedCount() != len(blocks)-1 && lastErr == nil {
|
||||||
|
time.Sleep(time.Millisecond * 10)
|
||||||
|
}
|
||||||
|
if lastErr != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
buffer := make([]byte, blockSize)
|
buffer := make([]byte, blockSize)
|
||||||
_, _ = chunk.Seek(block.BeginOffset, io.SeekStart)
|
_, _ = chunk.Seek(block.BeginOffset, io.SeekStart)
|
||||||
ri, err := io.ReadFull(chunk, buffer)
|
ri, err := io.ReadFull(chunk, buffer)
|
||||||
@ -319,7 +336,6 @@ func (c *QQClient) highwayUploadFileMultiThreadingByBDH(path string, cmdId int32
|
|||||||
}
|
}
|
||||||
wg := sync.WaitGroup{}
|
wg := sync.WaitGroup{}
|
||||||
wg.Add(threadCount)
|
wg.Add(threadCount)
|
||||||
var lastErr error
|
|
||||||
for i := 0; i < threadCount; i++ {
|
for i := 0; i < threadCount; i++ {
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user