feat 初次提交
This commit is contained in:
35
net/grpc/resolver/resolver_mgr.go
Normal file
35
net/grpc/resolver/resolver_mgr.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package resolver
|
||||
|
||||
import (
|
||||
"google.golang.org/grpc"
|
||||
"sync"
|
||||
)
|
||||
|
||||
var (
|
||||
mu = sync.RWMutex{}
|
||||
conn = make(map[string]*grpc.ClientConn)
|
||||
)
|
||||
|
||||
func GetGrpcClientConn(target string) (*grpc.ClientConn, error) {
|
||||
mu.RLock()
|
||||
if c, ok := conn[target]; ok && c != nil {
|
||||
mu.RUnlock()
|
||||
return c, nil
|
||||
}
|
||||
mu.RUnlock()
|
||||
|
||||
mu.Lock()
|
||||
defer mu.Unlock()
|
||||
|
||||
if c, ok := conn[target]; ok && c != nil {
|
||||
return c, nil
|
||||
}
|
||||
|
||||
newConn, err := NewGrpcConnection(target)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
conn[target] = newConn
|
||||
return newConn, nil
|
||||
}
|
||||
Reference in New Issue
Block a user