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 }