bilibili-backup/app/service/main/identify/dao/dao.go

74 lines
1.4 KiB
Go
Raw Permalink Normal View History

2019-04-22 10:59:20 +08:00
package dao
import (
"context"
"go-common/app/service/main/identify/conf"
"go-common/library/cache/memcache"
bm "go-common/library/net/http/blademaster"
"go-common/library/stat/prom"
)
const (
_tokenURI = "/intranet/auth/tokenInfo"
_cookieURI = "/intranet/auth/cookieInfo"
)
var (
errorsCount = prom.BusinessErrCount
cachedCount = prom.CacheHit
missedCount = prom.CacheMiss
)
// PromError prom error
func PromError(name string) {
errorsCount.Incr(name)
}
// Dao struct info of Dao
type Dao struct {
c *conf.Config
tokenURI string
cookieURI string
mc *memcache.Pool
mcLogin *memcache.Pool
client *bm.Client
}
// New new a Dao and return.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
c: c,
tokenURI: c.Identify.AuthHost + _tokenURI,
cookieURI: c.Identify.AuthHost + _cookieURI,
mc: memcache.NewPool(c.Memcache),
mcLogin: memcache.NewPool(c.MemcacheLoginLog),
client: bm.NewClient(c.HTTPClient),
}
return
}
// Close close connections of mc, redis, db.
func (d *Dao) Close() {
d.mc.Close()
d.mcLogin.Close()
}
// Ping ping health.
func (d *Dao) Ping(c context.Context) (err error) {
if err = d.pingMC(c); err != nil {
PromError("mc:Ping")
}
return
}
// pingMc ping memcache
func (d *Dao) pingMC(c context.Context) (err error) {
conn := d.mc.Get(c)
defer conn.Close()
item := memcache.Item{Key: "ping", Value: []byte{1}, Expiration: 100}
err = conn.Set(&item)
return
}