in grpcgcp/gcp_balancer.go [226:265]
func (gb *gcpBalancer) initializeConfig(cfg *GCPBalancerConfig) {
gb.cfg = &GCPBalancerConfig{
ApiConfig: &pb.ApiConfig{
ChannelPool: &pb.ChannelPoolConfig{},
},
}
if cfg != nil && cfg.ApiConfig != nil {
gb.cfg = &GCPBalancerConfig{
ApiConfig: proto.Clone(cfg.ApiConfig).(*pb.ApiConfig),
}
}
if gb.cfg.GetChannelPool() == nil {
gb.cfg.ChannelPool = &pb.ChannelPoolConfig{}
}
cp := gb.cfg.GetChannelPool()
if cp.GetMinSize() == 0 {
cp.MinSize = defaultMinSize
}
if cp.GetMaxSize() == 0 {
cp.MaxSize = defaultMaxSize
}
if cp.GetMaxConcurrentStreamsLowWatermark() == 0 {
cp.MaxConcurrentStreamsLowWatermark = defaultMaxStreams
}
mp := make(map[string]*pb.AffinityConfig)
methodCfgs := gb.cfg.GetMethod()
for _, methodCfg := range methodCfgs {
methodNames := methodCfg.GetName()
affinityCfg := methodCfg.GetAffinity()
if methodNames != nil && affinityCfg != nil {
for _, method := range methodNames {
mp[method] = affinityCfg
}
}
}
gb.methodCfg = mp
gb.unresponsiveDetection = cp.GetUnresponsiveCalls() > 0 && cp.GetUnresponsiveDetectionMs() > 0
gb.enforceMinSize()
}