140 lines
2.5 KiB
Go
140 lines
2.5 KiB
Go
package conf
|
|
|
|
import (
|
|
"time"
|
|
|
|
ecode "go-common/library/ecode/tip"
|
|
"go-common/library/log"
|
|
"go-common/library/naming/discovery"
|
|
bm "go-common/library/net/http/blademaster"
|
|
"go-common/library/net/rpc/warden"
|
|
"go-common/library/net/trace"
|
|
xtime "go-common/library/time"
|
|
|
|
"github.com/BurntSushi/toml"
|
|
)
|
|
|
|
var (
|
|
// Conf config
|
|
Conf = &Config{}
|
|
)
|
|
|
|
// Config .
|
|
type Config struct {
|
|
Broadcast *Broadcast
|
|
Log *log.Config
|
|
HTTP *bm.ServerConfig
|
|
Tracer *trace.Config
|
|
Ecode *ecode.Config
|
|
|
|
WardenServer *warden.ServerConfig
|
|
WardenClient *warden.ClientConfig
|
|
Discovery *discovery.Config
|
|
HTTPClient *bm.ClientConfig
|
|
|
|
TCP *TCP
|
|
WebSocket *WebSocket
|
|
Timer *Timer
|
|
ProtoSection *ProtoSection
|
|
Whitelist *Whitelist
|
|
Bucket *Bucket
|
|
}
|
|
|
|
// Broadcast config.
|
|
type Broadcast struct {
|
|
Debug bool
|
|
MaxProc int
|
|
ServerTick xtime.Duration
|
|
OnlineTick xtime.Duration
|
|
Failover bool
|
|
APIHost string
|
|
APIToken string
|
|
OnlineRetries int
|
|
OpenPortV1 bool
|
|
}
|
|
|
|
// TCP config
|
|
type TCP struct {
|
|
Bind []string
|
|
BindV1 []string
|
|
Sndbuf int
|
|
Rcvbuf int
|
|
Keepalive bool
|
|
Reader int
|
|
ReadBuf int
|
|
ReadBufSize int
|
|
Writer int
|
|
WriteBuf int
|
|
WriteBufSize int
|
|
}
|
|
|
|
// WebSocket config
|
|
type WebSocket struct {
|
|
Bind []string
|
|
BindV1 []string
|
|
TLSOpen bool
|
|
TLSBind []string
|
|
TLSBindV1 []string
|
|
CertFile string
|
|
PrivateFile string
|
|
}
|
|
|
|
// Timer config
|
|
type Timer struct {
|
|
Timer int
|
|
TimerSize int
|
|
}
|
|
|
|
// ProtoSection config
|
|
type ProtoSection struct {
|
|
HandshakeTimeout xtime.Duration
|
|
WriteTimeout xtime.Duration
|
|
SvrProto int
|
|
CliProto int
|
|
}
|
|
|
|
// Whitelist .
|
|
type Whitelist struct {
|
|
Whitelist []int64
|
|
WhiteLog string
|
|
}
|
|
|
|
// Bucket .
|
|
type Bucket struct {
|
|
Size int
|
|
Channel int
|
|
Room int
|
|
RoutineAmount uint64
|
|
RoutineSize int
|
|
}
|
|
|
|
// Fix fix config to default.
|
|
func (c *Config) Fix() {
|
|
if c.Broadcast == nil {
|
|
c.Broadcast = new(Broadcast)
|
|
}
|
|
if c.Broadcast.MaxProc <= 0 {
|
|
c.Broadcast.MaxProc = 32
|
|
}
|
|
if c.Broadcast.ServerTick <= 0 {
|
|
c.Broadcast.ServerTick = xtime.Duration(5 * time.Second)
|
|
}
|
|
if c.Broadcast.OnlineTick <= 0 {
|
|
c.Broadcast.OnlineTick = xtime.Duration(10 * time.Second)
|
|
}
|
|
if c.Broadcast.APIHost == "" {
|
|
c.Broadcast.APIHost = "http://api.bilibili.com"
|
|
}
|
|
}
|
|
|
|
// Set set config and decode.
|
|
func (c *Config) Set(text string) error {
|
|
var tmp Config
|
|
if _, err := toml.Decode(text, &tmp); err != nil {
|
|
return err
|
|
}
|
|
tmp.Fix()
|
|
*c = tmp
|
|
return nil
|
|
}
|