/* * * Copyright 2024 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */package gracefulswitchimport ()typelbConfigstruct {serviceconfig.LoadBalancingConfigchildBuilderbalancer.BuilderchildConfigserviceconfig.LoadBalancingConfig}// ChildName returns the name of the child balancer of the gracefulswitch// Balancer.func ( serviceconfig.LoadBalancingConfig) string {return .(*lbConfig).childBuilder.Name()}// ParseConfig parses a child config list and returns a LB config for the// gracefulswitch Balancer.//// cfg is expected to be a json.RawMessage containing a JSON array of LB policy// names + configs as the format of the "loadBalancingConfig" field in// ServiceConfig. It returns a type that should be passed to// UpdateClientConnState in the BalancerConfig field.func ( json.RawMessage) (serviceconfig.LoadBalancingConfig, error) {var []map[string]json.RawMessageif := json.Unmarshal(, &); != nil {returnnil, }for , := range {iflen() != 1 {returnnil, fmt.Errorf("expected a JSON struct with one entry; received entry %v at index %d", , ) }varstringvarjson.RawMessagefor , = range { } := balancer.Get()if == nil {// Skip unregistered balancer names.continue } , := .(balancer.ConfigParser)if ! {// This is a valid child with no config.return &lbConfig{childBuilder: }, nil } , := .ParseConfig()if != nil {returnnil, fmt.Errorf("error parsing config for policy %q: %v", , ) }return &lbConfig{childBuilder: , childConfig: }, nil }returnnil, fmt.Errorf("no supported policies found in config: %v", string())}
The pages are generated with Goldsv0.7.6. (GOOS=linux GOARCH=amd64)