github.com/hxx258456/ccgo@v0.0.5-0.20230213014102-48b35f46f66f/grpc/internal/balancergroup/balancerstateaggregator.go (about) 1 /* 2 * 3 * Copyright 2020 gRPC authors. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 */ 18 19 package balancergroup 20 21 import ( 22 "github.com/hxx258456/ccgo/grpc/balancer" 23 ) 24 25 // BalancerStateAggregator aggregates sub-picker and connectivity states into a 26 // state. 27 // 28 // It takes care of merging sub-picker into one picker. The picking config is 29 // passed directly from the the parent to the aggregator implementation (instead 30 // via balancer group). 31 type BalancerStateAggregator interface { 32 // UpdateState updates the state of the id. 33 // 34 // It's up to the implementation whether this will trigger an update to the 35 // parent ClientConn. 36 UpdateState(id string, state balancer.State) 37 }