test multi

This commit is contained in:
Sotirios Pupakis
2025-09-08 22:11:47 +02:00
parent 6d725b9f5f
commit d941282b74
2 changed files with 104 additions and 9 deletions

19
util.go
View File

@@ -122,9 +122,7 @@ func Download(manifest Manifest, downloadDir string, filen string) ([]byte, erro
// Start worker goroutines
for i := 0; i < DownThreads; i++ {
wg.Add(1)
go func() {
defer wg.Done()
wg.Go(func() {
for fragment := range fragmentsChan {
url := transformShaToURL(fragment.Sha512, fragment.Size)
content, err := getContent(url)
@@ -138,15 +136,18 @@ func Download(manifest Manifest, downloadDir string, filen string) ([]byte, erro
mu.Lock()
// Safely write to the shared slice and update progress
for _, offset := range fragment.Offsets {
if offset+len(content) > len(ret) {
// Handle case where fragment is too large for the buffer
fmt.Printf("Fragment too large for buffer at offset %d\n", offset)
continue
}
copy(ret[offset:offset+len(content)], content)
}
downloaded += len(content) * len(fragment.Offsets)
// Track downloaded fragments
for _, offset := range fragment.Offsets {
trackFrag = append(trackFrag, Frag{
Offset: offset,
Size: len(content),
})
}
// Print progress
downedMB := float32(downloaded) / 1024.0 / 1024.0
percent := float32(downloaded) / float32(manifest.Size) * 100.0
@@ -163,7 +164,7 @@ func Download(manifest Manifest, downloadDir string, filen string) ([]byte, erro
mu.Unlock()
}
}
}()
})
}
// Send fragments to the channel