2023-08-31 08:12:01 -05:00
|
|
|
package server
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
|
|
|
|
"github.com/grafana/dskit/services"
|
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/api"
|
|
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
|
|
)
|
|
|
|
|
|
|
|
type coreService struct {
|
|
|
|
*services.BasicService
|
2023-09-01 07:09:54 -05:00
|
|
|
cfg *setting.Cfg
|
2023-08-31 08:12:01 -05:00
|
|
|
opts Options
|
|
|
|
apiOpts api.ServerOptions
|
|
|
|
server *Server
|
|
|
|
}
|
|
|
|
|
2023-09-01 07:09:54 -05:00
|
|
|
func NewService(cfg *setting.Cfg, opts Options, apiOpts api.ServerOptions) (*coreService, error) {
|
2023-08-31 08:12:01 -05:00
|
|
|
s := &coreService{
|
|
|
|
opts: opts,
|
|
|
|
apiOpts: apiOpts,
|
2023-09-01 07:09:54 -05:00
|
|
|
cfg: cfg,
|
2023-08-31 08:12:01 -05:00
|
|
|
}
|
|
|
|
s.BasicService = services.NewBasicService(s.start, s.running, s.stop)
|
|
|
|
return s, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *coreService) start(_ context.Context) error {
|
2023-09-01 07:09:54 -05:00
|
|
|
serv, err := Initialize(s.cfg, s.opts, s.apiOpts)
|
2023-08-31 08:12:01 -05:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
s.server = serv
|
|
|
|
return s.server.Init()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *coreService) running(_ context.Context) error {
|
|
|
|
return s.server.Run()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *coreService) stop(failureReason error) error {
|
|
|
|
return s.server.Shutdown(context.Background(), failureReason.Error())
|
|
|
|
}
|