bilibili-backup/app/service/main/push/conf/conf.go
2019-04-22 02:59:20 +00:00

147 lines
3.2 KiB
Go

package conf
import (
"errors"
"flag"
"go-common/library/cache/memcache"
"go-common/library/cache/redis"
"go-common/library/conf"
"go-common/library/database/sql"
ecode "go-common/library/ecode/tip"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/verify"
"go-common/library/net/rpc"
"go-common/library/net/rpc/warden"
"go-common/library/net/trace"
"go-common/library/queue/databus"
xtime "go-common/library/time"
"github.com/BurntSushi/toml"
)
// global var
var (
confPath string
client *conf.Client
// Conf config
Conf = &Config{}
)
// Config config set
type Config struct {
Env string
Ecode *ecode.Config
Log *log.Config
HTTPServer *bm.ServerConfig
HTTPClient *bm.ClientConfig
RPCServer *rpc.ServerConfig
GRPC *warden.ServerConfig
FilterRPC *rpc.ClientConfig
Tracer *trace.Config
Verify *verify.Config
App *bm.App
Redis *rds
Memcache *mc
MySQL *sql.Config
ReportPub *databus.Config
CallbackPub *databus.Config
Android *android
Apns *apns
Push *push
}
// mc config
type mc struct {
*memcache.Config
SettingExpire xtime.Duration
ReportExpire xtime.Duration
UUIDExpire xtime.Duration
}
type rds struct {
*redis.Config
TokenExpire xtime.Duration
LaterExpire xtime.Duration
MidsExpire xtime.Duration
}
type android struct {
PoolSize int
Timeout xtime.Duration
PushHuaweiPart int
MiUseVip int
}
type apns struct {
PoolSize int
Proxy int
ProxySocket string
Timeout xtime.Duration
Deadline xtime.Duration
}
type push struct {
PickUpTask bool
LoadBusinessInteval xtime.Duration
LoadTaskInteval xtime.Duration
UpdateTaskProgressInteval xtime.Duration
PushChanSizeAPNS, PushGoroutinesAPNS int
PushChanSizeMi, PushGoroutinesMi int
PushChanSizeHuawei, PushGoroutinesHuawei int
PushChanSizeOppo, PushGoroutinesOppo int
PushChanSizeJpush, PushGoroutinesJpush int
PushChanSizeFCM, PushGoroutinesFCM int
PassThrough int
RetryTimes int
PushPartInterval xtime.Duration
PushPartChanSize int
PushPartSize int
CallbackSize, CallbackChanLen int
UpimgURL string
UpimgMaxSize int64
UpdateTaskProgressProc int
}
func init() {
flag.StringVar(&confPath, "conf", "", "default config path")
}
// Init init conf
func Init() error {
if confPath != "" {
return local()
}
return remote()
}
func local() (err error) {
_, err = toml.DecodeFile(confPath, &Conf)
return
}
func remote() (err error) {
if client, err = conf.New(); err != nil {
return
}
err = load()
return
}
func load() (err error) {
var (
s string
ok bool
tmpConf *Config
)
if s, ok = client.Toml2(); !ok {
return errors.New("load config center error")
}
if _, err = toml.Decode(s, &tmpConf); err != nil {
return errors.New("could not decode config")
}
*Conf = *tmpConf
return
}