github.com/0chain/gosdk@v1.17.11/core/conf/vars.go (about)

     1  package conf
     2  
     3  import (
     4  	"errors"
     5  	"strings"
     6  	"sync"
     7  )
     8  
     9  var (
    10  	//  global client config
    11  	cfg     *Config
    12  	onceCfg sync.Once
    13  	//  global sharders and miners
    14  	network *Network
    15  )
    16  
    17  var (
    18  	//ErrNilConfig config is nil
    19  	ErrNilConfig = errors.New("[conf]config is nil")
    20  
    21  	// ErrMssingConfig config file is missing
    22  	ErrMssingConfig = errors.New("[conf]missing config file")
    23  	// ErrInvalidValue invalid value in config
    24  	ErrInvalidValue = errors.New("[conf]invalid value")
    25  	// ErrBadParsing fail to parse config via spf13/viper
    26  	ErrBadParsing = errors.New("[conf]bad parsing")
    27  
    28  	// ErrConfigNotInitialized config is not initialized
    29  	ErrConfigNotInitialized = errors.New("[conf]conf.cfg is not initialized. please initialize it by conf.InitClientConfig")
    30  )
    31  
    32  // GetClientConfig get global client config from the SDK configuration
    33  func GetClientConfig() (*Config, error) {
    34  	if cfg == nil {
    35  		return nil, ErrConfigNotInitialized
    36  	}
    37  
    38  	return cfg, nil
    39  }
    40  
    41  // InitClientConfig set global client SDK config
    42  func InitClientConfig(c *Config) {
    43  	onceCfg.Do(func() {
    44  		sharderConsensous := c.SharderConsensous
    45  		if sharderConsensous < 1 {
    46  			sharderConsensous = DefaultSharderConsensous
    47  		}
    48  		cfg = c
    49  		cfg.SharderConsensous = sharderConsensous
    50  	})
    51  }
    52  
    53  // InitChainNetwork set global chain network for the SDK given its configuration
    54  func InitChainNetwork(n *Network) {
    55  	if n == nil {
    56  		return
    57  	}
    58  
    59  	normalizeURLs(n)
    60  
    61  	if network == nil {
    62  		network = n
    63  		return
    64  	}
    65  
    66  	network.Sharders = n.Sharders
    67  	network.Miners = n.Miners
    68  }
    69  
    70  func normalizeURLs(network *Network) {
    71  	if network == nil {
    72  		return
    73  	}
    74  
    75  	for i := 0; i < len(network.Miners); i++ {
    76  		network.Miners[i] = strings.TrimSuffix(network.Miners[i], "/")
    77  	}
    78  
    79  	for i := 0; i < len(network.Sharders); i++ {
    80  		network.Sharders[i] = strings.TrimSuffix(network.Sharders[i], "/")
    81  	}
    82  }