mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-07 15:20:25 +08:00
优化代码
This commit is contained in:
@@ -572,40 +572,25 @@ func (this *RPCClient) pickConn() *grpc.ClientConn {
|
|||||||
|
|
||||||
// 检查连接状态
|
// 检查连接状态
|
||||||
if len(this.conns) > 0 {
|
if len(this.conns) > 0 {
|
||||||
|
for _, state := range []connectivity.State{
|
||||||
|
connectivity.Ready,
|
||||||
|
connectivity.Idle,
|
||||||
|
connectivity.Connecting,
|
||||||
|
} {
|
||||||
var availableConns = []*grpc.ClientConn{}
|
var availableConns = []*grpc.ClientConn{}
|
||||||
for _, state := range []connectivity.State{connectivity.Ready, connectivity.Idle, connectivity.Connecting} {
|
|
||||||
for _, conn := range this.conns {
|
for _, conn := range this.conns {
|
||||||
if conn.GetState() == state {
|
if conn.GetState() == state {
|
||||||
availableConns = append(availableConns, conn)
|
availableConns = append(availableConns, conn)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(availableConns) > 0 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(availableConns) > 0 {
|
if len(availableConns) > 0 {
|
||||||
return availableConns[rands.Int(0, len(availableConns)-1)]
|
return this.randConn(availableConns)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 关闭
|
|
||||||
for _, conn := range this.conns {
|
|
||||||
_ = conn.Close()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 重新初始化
|
return this.randConn(this.conns)
|
||||||
err := this.init()
|
|
||||||
if err != nil {
|
|
||||||
// 错误提示已经在构造对象时打印过,所以这里不再重复打印
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(this.conns) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.conns[rands.Int(0, len(this.conns)-1)]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close 关闭
|
// Close 关闭
|
||||||
@@ -639,3 +624,14 @@ func (this *RPCClient) localIPAddrs() []string {
|
|||||||
}
|
}
|
||||||
return localIPAddrs
|
return localIPAddrs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *RPCClient) randConn(conns []*grpc.ClientConn) *grpc.ClientConn {
|
||||||
|
var l = len(conns)
|
||||||
|
if l == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if l == 1 {
|
||||||
|
return conns[0]
|
||||||
|
}
|
||||||
|
return conns[rands.Int(0, l-1)]
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user