1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package service
- import (
- "context"
- "sync"
- "go-common/app/interface/main/push/conf"
- "go-common/app/interface/main/push/dao"
- pushrpc "go-common/app/service/main/push/api/grpc/v1"
- pushmdl "go-common/app/service/main/push/model"
- "go-common/library/cache"
- httpx "go-common/library/net/http/blademaster"
- )
- // Service push service.
- type Service struct {
- c *conf.Config
- dao *dao.Dao
- cache *cache.Cache
- pushRPC pushrpc.PushClient
- callbackCh chan *pushmdl.Callback
- httpClient *httpx.Client
- waiter sync.WaitGroup
- closed bool
- }
- // New creates a push service instance.
- func New(c *conf.Config) *Service {
- s := &Service{
- c: c,
- dao: dao.New(c),
- cache: cache.New(1, 10240),
- callbackCh: make(chan *pushmdl.Callback, c.Push.CallbackChanLen),
- httpClient: httpx.NewClient(c.HTTPClient),
- }
- var err error
- if s.pushRPC, err = pushrpc.NewClient(c.PushRPC); err != nil {
- panic(err)
- }
- for i := 0; i < s.c.Push.CallbackGoroutines; i++ {
- s.waiter.Add(1)
- go s.callbackproc()
- }
- return s
- }
- // Close closes service.
- func (s *Service) Close() {
- s.closed = true
- close(s.callbackCh)
- s.waiter.Wait()
- s.dao.Close()
- }
- // Ping checks service.
- func (s *Service) Ping(c context.Context) (err error) {
- err = s.dao.Ping(c)
- return
- }
|