X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=blobdiff_plain;f=toolbar%2Ffederation%2Fconfig%2Fconfig.go;fp=toolbar%2Ffederation%2Fconfig%2Fconfig.go;h=5cf4edd9c1a1e4c180248d7806f646c9cfef968b;hp=0000000000000000000000000000000000000000;hb=6d682944981f67700aba26df064e3dd91d3603e5;hpb=a6be86325c56b458295c163200c295b43c44f2e0 diff --git a/toolbar/federation/config/config.go b/toolbar/federation/config/config.go new file mode 100644 index 00000000..5cf4edd9 --- /dev/null +++ b/toolbar/federation/config/config.go @@ -0,0 +1,53 @@ +package config + +import ( + "encoding/json" + "os" + + log "github.com/sirupsen/logrus" + + vaporJson "github.com/vapor/encoding/json" + "github.com/vapor/toolbar/common" +) + +func NewConfig() *Config { + if len(os.Args) <= 1 { + log.Fatal("Please setup the config file path") + } + + return NewConfigWithPath(os.Args[1]) +} + +func NewConfigWithPath(path string) *Config { + configFile, err := os.Open(path) + if err != nil { + log.WithFields(log.Fields{"err": err, "file_path": os.Args[1]}).Fatal("fail to open config file") + } + defer configFile.Close() + + cfg := &Config{} + if err := json.NewDecoder(configFile).Decode(cfg); err != nil { + log.WithField("err", err).Fatal("fail to decode config file") + } + + return cfg +} + +type Config struct { + API API `json:"api"` + MySQLConfig common.MySQLConfig `json:"mysql"` + FederationProg vaporJson.HexBytes `json:"federation_prog"` + Mainchain Chain `json:"mainchain"` + Sidechain Chain `json:"sidechain"` +} + +type API struct { + IsReleaseMode bool `json:"is_release_mode"` +} + +type Chain struct { + Name string `json:"name"` + Upstream string `json:"upstream"` + SyncSeconds uint64 `json:"sync_seconds"` + Confirmations uint64 `json:"confirmations"` +}