1
0
mirror of https://github.com/go-micro/go-micro.git synced 2024-12-18 08:26:38 +02:00
go-micro/server/rpc_util.go

40 lines
603 B
Go
Raw Normal View History

2019-11-27 19:12:07 +02:00
package server
import (
"sync"
)
2022-09-30 16:27:07 +02:00
// waitgroup for global management of connections.
2019-11-27 19:12:07 +02:00
type waitGroup struct {
// global waitgroup
gg *sync.WaitGroup
2023-04-26 02:16:34 +02:00
// local waitgroup
lg sync.WaitGroup
2019-11-27 19:12:07 +02:00
}
// NewWaitGroup returns a new double waitgroup for global management of processes.
func NewWaitGroup(gWg *sync.WaitGroup) *waitGroup {
return &waitGroup{
gg: gWg,
}
}
2019-11-27 19:12:07 +02:00
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()
}