123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package stat
- import (
- "context"
- "strconv"
- "time"
- "go-common/app/job/main/reply/conf"
- "go-common/library/log"
- "go-common/library/queue/databus"
- )
- type statMsg struct {
- ID int64 `json:"id"`
- Timestamp int64 `json:"timestamp"`
- Count int `json:"count"`
- Type string `json:"type"`
- }
- // Dao stat dao.
- type Dao struct {
- // new databus stats
- types map[int8]string
- databus *databus.Databus
- }
- // New new a stat dao and return.
- func New(c *conf.Config) *Dao {
- d := new(Dao)
- // new databus stats
- d.types = make(map[int8]string)
- for name, typ := range c.StatTypes {
- d.types[typ] = name
- }
- d.databus = databus.New(c.Databus.Stats)
- return d
- }
- // Send update stat.
- func (d *Dao) Send(c context.Context, typ int8, oid int64, cnt int) (err error) {
- // new databus stats
- if name, ok := d.types[typ]; ok {
- m := &statMsg{
- ID: oid,
- Type: name,
- Count: cnt,
- Timestamp: time.Now().Unix(),
- }
- if err = d.databus.Send(c, strconv.FormatInt(oid, 10), m); err != nil {
- log.Error("d.databus.Send(%d,%d,%d) error(%v)", typ, oid, cnt, err)
- }
- }
- return
- }
|