func()

in upload/concurrent/balancer.go [62:93]


func (b *Balancer) Run(requestChan <-chan *Request) (<-chan error, <-chan bool) {
	// Request dispatcher
	go func() {
		for {
			requestToHandle, ok := <-requestChan
			if !ok {
				b.closeWorkersRequestChannel()
				return
			}
			b.dispatch(requestToHandle)
		}
	}()

	// listener for worker status
	go func() {
		remainingWorkers := b.workerCount
		for {
			select {
			case w := <-b.requestHandledChan:
				b.completed(w)
			case _ = <-b.workerFinishedChan:
				remainingWorkers--
				if remainingWorkers == 0 {
					b.allWorkersFinishedChan <- true // All workers has been exited
					return
				}
			}
		}
	}()

	return b.errorChan, b.allWorkersFinishedChan
}