OSDN Git Service

Edit (#275)
[bytom/vapor.git] / federation / config / config.go
1 package config
2
3 import (
4         "encoding/json"
5         "os"
6
7         log "github.com/sirupsen/logrus"
8
9         vaporJson "github.com/vapor/encoding/json"
10 )
11
12 func NewConfig() *Config {
13         if len(os.Args) <= 1 {
14                 log.Fatal("Please setup the config file path")
15         }
16
17         return NewConfigWithPath(os.Args[1])
18 }
19
20 func NewConfigWithPath(path string) *Config {
21         configFile, err := os.Open(path)
22         if err != nil {
23                 log.WithFields(log.Fields{"err": err, "file_path": os.Args[1]}).Fatal("fail to open config file")
24         }
25         defer configFile.Close()
26
27         cfg := &Config{}
28         if err := json.NewDecoder(configFile).Decode(cfg); err != nil {
29                 log.WithField("err", err).Fatal("fail to decode config file")
30         }
31
32         return cfg
33 }
34
35 type Config struct {
36         API            API                `json:"api"`
37         MySQLConfig    MySQLConfig        `json:"mysql"`
38         FederationProg vaporJson.HexBytes `json:"federation_prog"`
39         Mainchain      Chain              `json:"mainchain"`
40         Sidechain      Chain              `json:"sidechain"`
41 }
42
43 type API struct {
44         IsReleaseMode bool `json:"is_release_mode"`
45 }
46
47 type MySQLConfig struct {
48         Connection MySQLConnection `json:"connection"`
49         LogMode    bool            `json:"log_mode"`
50 }
51
52 type MySQLConnection struct {
53         Host     string `json:"host"`
54         Port     uint   `json:"port"`
55         Username string `json:"username"`
56         Password string `json:"password"`
57         DbName   string `json:"database"`
58 }
59
60 type Chain struct {
61         Name          string `json:"name"`
62         Upstream      string `json:"upstream"`
63         SyncSeconds   uint64 `json:"sync_seconds"`
64         Confirmations uint64 `json:"confirmations"`
65 }