* * Copyright 2019 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 grpclb

import (
	

	
	
	
)

const (
	roundRobinName = roundrobin.Name
	pickFirstName  = grpc.PickFirstBalancerName
)

type grpclbServiceConfig struct {
	serviceconfig.LoadBalancingConfig
	ChildPolicy *[]map[string]json.RawMessage
}

func ( *lbBuilder) ( json.RawMessage) (serviceconfig.LoadBalancingConfig, error) {
	 := &grpclbServiceConfig{}
	if  := json.Unmarshal(, );  != nil {
		return nil, 
	}
	return , nil
}

func ( *grpclbServiceConfig) bool {
	if  == nil {
		return false
	}
	 := .ChildPolicy
	if  == nil {
		return false
	}
If round_robin exists before pick_first, return false
		if ,  := [roundRobinName];  {
			return false
If pick_first is before round_robin, return true
		if ,  := [pickFirstName];  {
			return true
		}
	}
	return false