I am implementing a multi part file downloader and I need help to find the 
blocking element in the following piece of code.


func downPart(wg *sync.WaitGroup, url string, dataChan chan []byte, range1, 
range2 int) {


 defer wg.Done()
 client := new(http.Client)
 req, _ := http.NewRequest("GET", url, nil)


 req.Header.Set("Range", strconv.Itoa(range1)+"-"+strconv.Itoa(range2))
 data, err := client.Do(req)
 if err != nil {
 fmt.Println(err)
 return
 }
 dataByte := new(bytes.Buffer)
 dataByte.ReadFrom(data.Body)
 fmt.Println("Done")


 dataChan <- dataByte.Bytes()
}
func multiDownload(url string, length int) bool {
 var wg sync.WaitGroup


 x := 4
 split := length / x
 fmt.Println(length)
 dataChan := make([]chan []byte, x)
 for i := 0; i < x; i++ {
 wg.Add(1)


 range1 := i * split
 range2 := (i+1)*split - 1
 if range2 == length-2 {
 range2 = length
 }
 fmt.Println(len(dataChan), range1, range2)
 go downPart(&wg, url, dataChan[i], range1, range2)
 }


 var data []byte
 wg.Wait()


 for i := 0; i < x; i++ {
 fmt.Println("waiting")
 data = <-dataChan[i]
 fmt.Println(data)
 }
 return true

}

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to