33 lines
		
	
	
		
			428 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			428 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package mucp
 | |
| 
 | |
| import (
 | |
| 	"sync"
 | |
| )
 | |
| 
 | |
| // waitgroup for global management of connections
 | |
| type waitGroup struct {
 | |
| 	// local waitgroup
 | |
| 	lg sync.WaitGroup
 | |
| 	// global waitgroup
 | |
| 	gg *sync.WaitGroup
 | |
| }
 | |
| 
 | |
| func (w *waitGroup) Add(i int) {
 | |
| 	w.lg.Add(i)
 | |
| 	if w.gg != nil {
 | |
| 		w.gg.Add(i)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (w *waitGroup) Done() {
 | |
| 	w.lg.Done()
 | |
| 	if w.gg != nil {
 | |
| 		w.gg.Done()
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (w *waitGroup) Wait() {
 | |
| 	// only wait on local group
 | |
| 	w.lg.Wait()
 | |
| }
 |