dubbo.apache.org/dubbo-go/v3@v3.1.1/xds/utils/balancerload/load.go (about) 1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. 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 * 20 * Copyright 2019 gRPC authors. 21 * 22 */ 23 // Package balancerload defines APIs to parse server loads in trailers. The 24 // parsed loads are sent to balancers in DoneInfo. 25 package balancerload 26 27 import ( 28 "google.golang.org/grpc/metadata" 29 ) 30 31 // Parser converts loads from metadata into a concrete type. 32 type Parser interface { 33 // Parse parses loads from metadata. 34 Parse(md metadata.MD) interface{} 35 } 36 37 var parser Parser 38 39 // SetParser sets the load parser. 40 // 41 // Not mutex-protected, should be called before any gRPC functions. 42 func SetParser(lr Parser) { 43 parser = lr 44 } 45 46 // Parse calls parser.Read(). 47 func Parse(md metadata.MD) interface{} { 48 if parser == nil { 49 return nil 50 } 51 return parser.Parse(md) 52 }