12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- // package service -- главный объект сервиса
- package service
- import (
- "context"
- "fmt"
- "log"
- "sync"
- "git.p78su.freemyip.com/svi/gostore/internal/serv_http"
- "git.p78su.freemyip.com/svi/gostore/internal/store"
- // "git.p78su.freemyip.com/svi/gostore/internal/store_user"
- "git.p78su.freemyip.com/svi/gostore/pkg/types"
- )
- // Service -- главный объект сервиса
- type Service struct {
- // user types.IStoreUser
- servHttp types.IServHttp
- // dbMem types.IStoreMem
- disk types.IStore
- ctxBg context.Context // Неотменяемый контекст
- ctx context.Context // Контекст приложения
- fnCancel func() // Функция отмены контекста
- wg *sync.WaitGroup // Ожидатель потоков сервиса
- }
- // NewService -- возвращает новый объект сервиса
- func NewService() (types.IService, error) {
- ctxBg := context.Background()
- ctx, fnCancel := context.WithCancel(ctxBg)
- sf := &Service{
- ctxBg: ctxBg,
- ctx: ctx,
- fnCancel: fnCancel,
- wg: &sync.WaitGroup{},
- }
- var err error
- sf.disk, err = store.NewStore(sf)
- if err != nil {
- return nil, fmt.Errorf("NewService(): in create IStoreDisk, err=\n\t%w", err)
- }
- sf.servHttp, err = serv_http.NewServHttp(sf)
- if err != nil {
- return nil, fmt.Errorf("NewService(): in create IServHttp, err=\n\t%w", err)
- }
- return sf, nil
- }
- // ServHttp -- возвращает HTTP-сервер
- func (sf *Service) ServHttp() types.IServHttp {
- return sf.servHttp
- }
- // Store -- возвращает хранилище
- func (sf *Service) Store() types.IStore {
- return sf.disk
- }
- // CancelApp -- отменяет контекст приложения
- func (sf *Service) CancelApp() {
- sf.fnCancel()
- }
- // Ctx -- возвращает контекст приложения
- func (sf *Service) Ctx() context.Context {
- return sf.ctx
- }
- // Wg -- возвращает ожидатель группы потоков
- func (sf *Service) Wg() *sync.WaitGroup {
- return sf.wg
- }
- // Run -- запускает сервис в работу
- func (sf *Service) Run() {
- go func() {
- err := sf.servHttp.Run()
- if err != nil {
- log.Printf("Service.Run(): in run IServHttp, err=\n\t%v\n", err)
- }
- }()
- sf.wg.Wait()
- }
|