|
|
|
@ -46,9 +46,10 @@ func TestMain(t *testing.M) { |
|
|
|
|
|
|
|
|
|
### example main |
|
|
|
|
```go |
|
|
|
|
# main.go |
|
|
|
|
// main.go |
|
|
|
|
func main() { |
|
|
|
|
# 初始化paladin |
|
|
|
|
flag.Parse() |
|
|
|
|
// 初始化paladin |
|
|
|
|
if err := paladin.Init(); err != nil { |
|
|
|
|
panic(err) |
|
|
|
|
} |
|
|
|
@ -58,28 +59,31 @@ func main() { |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
### example HTTP/gRPC |
|
|
|
|
```go |
|
|
|
|
```toml |
|
|
|
|
# http.toml |
|
|
|
|
[server] |
|
|
|
|
addr = "0.0.0.0:9000" |
|
|
|
|
timeout = "1s" |
|
|
|
|
|
|
|
|
|
# server.go |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
```go |
|
|
|
|
// server.go |
|
|
|
|
func NewServer() { |
|
|
|
|
# 默认配置用nil,这时读取HTTP/gRPC构架中的flag或者环境变量(可能是docker注入的环境变量,默认端口:8000/9000) |
|
|
|
|
engine := bm.DefaultServer(nil) |
|
|
|
|
// 默认配置用nil,这时读取HTTP/gRPC构架中的flag或者环境变量(可能是docker注入的环境变量,默认端口:8000/9000) |
|
|
|
|
engine := bm.DefaultServer(nil) |
|
|
|
|
|
|
|
|
|
# 除非自己要替换了配置,用http.toml |
|
|
|
|
var bc struct { |
|
|
|
|
Server *bm.ServerConfig |
|
|
|
|
} |
|
|
|
|
if err = paladin.Get("http.toml").UnmarshalTOML("server", &bc); err != nil { |
|
|
|
|
// 不存在时,将会为nil使用默认配置 |
|
|
|
|
if err != paladin.ErrNotExist { |
|
|
|
|
panic(err) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
engine := bm.DefaultServer(conf) |
|
|
|
|
// 除非自己要替换了配置,用http.toml |
|
|
|
|
var bc struct { |
|
|
|
|
Server *bm.ServerConfig |
|
|
|
|
} |
|
|
|
|
if err := paladin.Get("http.toml").UnmarshalTOML(&bc); err != nil { |
|
|
|
|
// 不存在时,将会为nil使用默认配置 |
|
|
|
|
if err != paladin.ErrNotExist { |
|
|
|
|
panic(err) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
engine := bm.DefaultServer(bc.Server) |
|
|
|
|
} |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
@ -87,25 +91,28 @@ func NewServer() { |
|
|
|
|
```go |
|
|
|
|
# service.go |
|
|
|
|
type Service struct { |
|
|
|
|
ac *paladin.Map |
|
|
|
|
ac *paladin.Map |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func New() *Service { |
|
|
|
|
# paladin.Map 通过atomic.Value支持自动热加载 |
|
|
|
|
var ac = new(paladin.TOML) |
|
|
|
|
if err := paladin.Watch("application.toml", ac); err != nil { |
|
|
|
|
panic(err) |
|
|
|
|
} |
|
|
|
|
s := &Service{ |
|
|
|
|
ac : ac; |
|
|
|
|
} |
|
|
|
|
return s |
|
|
|
|
// paladin.Map 通过atomic.Value支持自动热加载 |
|
|
|
|
var ac = new(paladin.TOML) |
|
|
|
|
if err := paladin.Watch("application.toml", ac); err != nil { |
|
|
|
|
panic(err) |
|
|
|
|
} |
|
|
|
|
s := &Service{ |
|
|
|
|
ac: ac, |
|
|
|
|
} |
|
|
|
|
return s |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *Service) Test() { |
|
|
|
|
switch, err := s.ac.Bool("switch") |
|
|
|
|
if err != nil { |
|
|
|
|
// TODO |
|
|
|
|
} |
|
|
|
|
# or use default value |
|
|
|
|
switch := paladin.Bool(s.ac.Value("switch"), false) |
|
|
|
|
sw, err := s.ac.Get("switch").Bool() |
|
|
|
|
if err != nil { |
|
|
|
|
// TODO |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// or use default value |
|
|
|
|
sw := paladin.Bool(s.ac.Get("switch"), false) |
|
|
|
|
} |
|
|
|
|
``` |
|
|
|
|