123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- /*
- *
- * Copyright 2018 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
- // Package envconfig contains grpc settings configured by environment variables.
- package envconfig
- import (
- "os"
- "strconv"
- "strings"
- )
- var (
- // TXTErrIgnore is set if TXT errors should be ignored ("GRPC_GO_IGNORE_TXT_ERRORS" is not "false").
- TXTErrIgnore = boolFromEnv("GRPC_GO_IGNORE_TXT_ERRORS", true)
- // AdvertiseCompressors is set if registered compressor should be advertised
- // ("GRPC_GO_ADVERTISE_COMPRESSORS" is not "false").
- AdvertiseCompressors = boolFromEnv("GRPC_GO_ADVERTISE_COMPRESSORS", true)
- // RingHashCap indicates the maximum ring size which defaults to 4096
- // entries but may be overridden by setting the environment variable
- // "GRPC_RING_HASH_CAP". This does not override the default bounds
- // checking which NACKs configs specifying ring sizes > 8*1024*1024 (~8M).
- RingHashCap = uint64FromEnv("GRPC_RING_HASH_CAP", 4096, 1, 8*1024*1024)
- // PickFirstLBConfig is set if we should support configuration of the
- // pick_first LB policy, which can be enabled by setting the environment
- // variable "GRPC_EXPERIMENTAL_PICKFIRST_LB_CONFIG" to "true".
- PickFirstLBConfig = boolFromEnv("GRPC_EXPERIMENTAL_PICKFIRST_LB_CONFIG", false)
- )
- func boolFromEnv(envVar string, def bool) bool {
- if def {
- // The default is true; return true unless the variable is "false".
- return !strings.EqualFold(os.Getenv(envVar), "false")
- }
- // The default is false; return false unless the variable is "true".
- return strings.EqualFold(os.Getenv(envVar), "true")
- }
- func uint64FromEnv(envVar string, def, min, max uint64) uint64 {
- v, err := strconv.ParseUint(os.Getenv(envVar), 10, 64)
- if err != nil {
- return def
- }
- if v < min {
- return min
- }
- if v > max {
- return max
- }
- return v
- }
|