3 * Copyright 2018 gRPC authors.
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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 // Package envconfig contains grpc settings configured by environment variables.
29 retryStr = prefix + "RETRY"
30 requireHandshakeStr = prefix + "REQUIRE_HANDSHAKE"
33 // RequireHandshakeSetting describes the settings for handshaking.
34 type RequireHandshakeSetting int
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.
44 // RequireHandshakeOff indicates to not wait for handshake before
45 // considering a connection ready/successful.
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.
55 // Will be removed after the 1.18 release.
56 RequireHandshake RequireHandshakeSetting
60 switch strings.ToLower(os.Getenv(requireHandshakeStr)) {
64 RequireHandshake = RequireHandshakeOn
66 RequireHandshake = RequireHandshakeOff
68 // Will be removed after the 1.17 release.
69 RequireHandshake = RequireHandshakeHybrid