github.com/tickoalcantara12/micro/v3@v3.0.0-20221007104245-9d75b9bcbab9/service/server/mucp/rpc_util.go (about) 1 // Copyright 2020 Asim Aslam 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // https://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 // 15 // Original source: github.com/micro/go-micro/v3/server/mucp/rpc_util.go 16 17 package mucp 18 19 import ( 20 "sync" 21 ) 22 23 // waitgroup for global management of connections 24 type waitGroup struct { 25 // local waitgroup 26 lg sync.WaitGroup 27 // global waitgroup 28 gg *sync.WaitGroup 29 } 30 31 func (w *waitGroup) Add(i int) { 32 w.lg.Add(i) 33 if w.gg != nil { 34 w.gg.Add(i) 35 } 36 } 37 38 func (w *waitGroup) Done() { 39 w.lg.Done() 40 if w.gg != nil { 41 w.gg.Done() 42 } 43 } 44 45 func (w *waitGroup) Wait() { 46 // only wait on local group 47 w.lg.Wait() 48 }