dubbo.apache.org/dubbo-go/v3@v3.1.1/xds/client/attributes.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 2021 gRPC authors. 21 * 22 */ 23 24 package client 25 26 import ( 27 _struct "github.com/golang/protobuf/ptypes/struct" 28 29 "google.golang.org/grpc/resolver" 30 ) 31 32 import ( 33 "dubbo.apache.org/dubbo-go/v3/xds/client/bootstrap" 34 "dubbo.apache.org/dubbo-go/v3/xds/client/load" 35 "dubbo.apache.org/dubbo-go/v3/xds/client/resource" 36 ) 37 38 type clientKeyType string 39 40 const clientKey = clientKeyType("grpc.xds.internal.client.Client") 41 42 // XDSClient is a full fledged gRPC client which queries a set of discovery APIs 43 // (collectively termed as xDS) on a remote management server, to discover 44 // various dynamic resources. 45 type XDSClient interface { 46 WatchListener(string, func(resource.ListenerUpdate, error)) func() 47 WatchRouteConfig(string, func(resource.RouteConfigUpdate, error)) func() 48 WatchCluster(string, func(resource.ClusterUpdate, error)) func() 49 WatchEndpoints(clusterName string, edsCb func(resource.EndpointsUpdate, error)) (cancel func()) 50 ReportLoad(server string) (*load.Store, func()) 51 52 DumpLDS() map[string]resource.UpdateWithMD 53 DumpRDS() map[string]resource.UpdateWithMD 54 DumpCDS() map[string]resource.UpdateWithMD 55 DumpEDS() map[string]resource.UpdateWithMD 56 57 BootstrapConfig() *bootstrap.Config 58 Close() 59 60 /* 61 SetMetadata would reconnect tcp link with new metadata 62 */ 63 SetMetadata(*_struct.Struct) error 64 } 65 66 // FromResolverState returns the Client from state, or nil if not present. 67 func FromResolverState(state resolver.State) XDSClient { 68 cs, _ := state.Attributes.Value(clientKey).(XDSClient) 69 return cs 70 } 71 72 // SetClient sets c in state and returns the new state. 73 func SetClient(state resolver.State, c XDSClient) resolver.State { 74 state.Attributes = state.Attributes.WithValue(clientKey, c) 75 return state 76 }