You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
2.5 KiB
139 lines
2.5 KiB
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 |
|
}
|
|
|