Code refactoring for bpa operator
[icn.git] / cmd / bpa-operator / vendor / google.golang.org / grpc / internal / envconfig / envconfig.go
1 /*
2  *
3  * Copyright 2018 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 envconfig contains grpc settings configured by environment variables.
20 package envconfig
21
22 import (
23         "os"
24         "strings"
25 )
26
27 const (
28         prefix              = "GRPC_GO_"
29         retryStr            = prefix + "RETRY"
30         requireHandshakeStr = prefix + "REQUIRE_HANDSHAKE"
31 )
32
33 // RequireHandshakeSetting describes the settings for handshaking.
34 type RequireHandshakeSetting int
35
36 const (
37         // RequireHandshakeHybrid (default, deprecated) indicates to not wait for
38         // handshake before considering a connection ready, but wait before
39         // considering successful.
40         RequireHandshakeHybrid RequireHandshakeSetting = iota
41         // RequireHandshakeOn (default after the 1.17 release) indicates to wait
42         // for handshake before considering a connection ready/successful.
43         RequireHandshakeOn
44         // RequireHandshakeOff indicates to not wait for handshake before
45         // considering a connection ready/successful.
46         RequireHandshakeOff
47 )
48
49 var (
50         // Retry is set if retry is explicitly enabled via "GRPC_GO_RETRY=on".
51         Retry = strings.EqualFold(os.Getenv(retryStr), "on")
52         // RequireHandshake is set based upon the GRPC_GO_REQUIRE_HANDSHAKE
53         // environment variable.
54         //
55         // Will be removed after the 1.18 release.
56         RequireHandshake RequireHandshakeSetting
57 )
58
59 func init() {
60         switch strings.ToLower(os.Getenv(requireHandshakeStr)) {
61         case "on":
62                 fallthrough
63         default:
64                 RequireHandshake = RequireHandshakeOn
65         case "off":
66                 RequireHandshake = RequireHandshakeOff
67         case "hybrid":
68                 // Will be removed after the 1.17 release.
69                 RequireHandshake = RequireHandshakeHybrid
70         }
71 }