123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package block
- import (
- "context"
- "runtime/debug"
- "go-common/app/admin/main/member/conf"
- "go-common/app/admin/main/member/dao/block"
- account "go-common/app/service/main/account/api"
- rpcfigure "go-common/app/service/main/figure/rpc/client"
- rpcspy "go-common/app/service/main/spy/rpc/client"
- "go-common/library/log"
- "go-common/library/queue/databus"
- "go-common/library/sync/pipeline/fanout"
- )
- // Service struct
- type Service struct {
- conf *conf.Config
- dao *block.Dao
- cache *fanout.Fanout
- spyRPC *rpcspy.Service
- figureRPC *rpcfigure.Service
- accountClient account.AccountClient
- missch chan func()
- accountNotifyPub *databus.Databus
- }
- // New init
- func New(conf *conf.Config, dao *block.Dao, spyRPC *rpcspy.Service, figureRPC *rpcfigure.Service,
- accountClient account.AccountClient, accountNotifyPub *databus.Databus) (s *Service) {
- s = &Service{
- conf: conf,
- dao: dao,
- cache: fanout.New("memberAdminCache", fanout.Worker(1), fanout.Buffer(10240)),
- missch: make(chan func(), 10240),
- accountNotifyPub: accountNotifyPub,
- spyRPC: spyRPC,
- figureRPC: figureRPC,
- accountClient: accountClient,
- }
- go s.missproc()
- return s
- }
- func (s *Service) missproc() {
- defer func() {
- if x := recover(); x != nil {
- log.Error("service.missproc panic(%+v) : %s", x, debug.Stack())
- go s.missproc()
- }
- }()
- for {
- f := <-s.missch
- f()
- }
- }
- func (s *Service) mission(f func()) {
- select {
- case s.missch <- f:
- default:
- log.Error("s.missch full")
- }
- }
- // Ping Service
- func (s *Service) Ping(c context.Context) (err error) {
- return s.dao.Ping(c)
- }
- // Close Service
- func (s *Service) Close() {
- s.dao.Close()
- }
|