diff options
Diffstat (limited to 'vendor/google.golang.org/grpc/balancer/base/base.go')
-rw-r--r-- | vendor/google.golang.org/grpc/balancer/base/base.go | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/vendor/google.golang.org/grpc/balancer/base/base.go b/vendor/google.golang.org/grpc/balancer/base/base.go new file mode 100644 index 0000000..34b1f29 --- /dev/null +++ b/vendor/google.golang.org/grpc/balancer/base/base.go | |||
@@ -0,0 +1,64 @@ | |||
1 | /* | ||
2 | * | ||
3 | * Copyright 2017 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 base defines a balancer base that can be used to build balancers with | ||
20 | // different picking algorithms. | ||
21 | // | ||
22 | // The base balancer creates a new SubConn for each resolved address. The | ||
23 | // provided picker will only be notified about READY SubConns. | ||
24 | // | ||
25 | // This package is the base of round_robin balancer, its purpose is to be used | ||
26 | // to build round_robin like balancers with complex picking algorithms. | ||
27 | // Balancers with more complicated logic should try to implement a balancer | ||
28 | // builder from scratch. | ||
29 | // | ||
30 | // All APIs in this package are experimental. | ||
31 | package base | ||
32 | |||
33 | import ( | ||
34 | "google.golang.org/grpc/balancer" | ||
35 | "google.golang.org/grpc/resolver" | ||
36 | ) | ||
37 | |||
38 | // PickerBuilder creates balancer.Picker. | ||
39 | type PickerBuilder interface { | ||
40 | // Build takes a slice of ready SubConns, and returns a picker that will be | ||
41 | // used by gRPC to pick a SubConn. | ||
42 | Build(readySCs map[resolver.Address]balancer.SubConn) balancer.Picker | ||
43 | } | ||
44 | |||
45 | // NewBalancerBuilder returns a balancer builder. The balancers | ||
46 | // built by this builder will use the picker builder to build pickers. | ||
47 | func NewBalancerBuilder(name string, pb PickerBuilder) balancer.Builder { | ||
48 | return NewBalancerBuilderWithConfig(name, pb, Config{}) | ||
49 | } | ||
50 | |||
51 | // Config contains the config info about the base balancer builder. | ||
52 | type Config struct { | ||
53 | // HealthCheck indicates whether health checking should be enabled for this specific balancer. | ||
54 | HealthCheck bool | ||
55 | } | ||
56 | |||
57 | // NewBalancerBuilderWithConfig returns a base balancer builder configured by the provided config. | ||
58 | func NewBalancerBuilderWithConfig(name string, pb PickerBuilder, config Config) balancer.Builder { | ||
59 | return &baseBuilder{ | ||
60 | name: name, | ||
61 | pickerBuilder: pb, | ||
62 | config: config, | ||
63 | } | ||
64 | } | ||