// package service -- главный тип сервиса
package service

import (
	"gitp78su.ipnodns.ru/svi/kern/v3"
	. "gitp78su.ipnodns.ru/svi/kern/v3/krn/ktypes"
)

// Service -- тип сервиса
type Service struct {
	ctx      IKernelCtx
	servHttp IKernelServerHttp
}

// NewService -- возвращает новый сервис
func NewService() (*Service, error) {
	ctx := kern.GetKernelCtx()
	ctx.Set("monolitName", "SviArch", "NewService()")
	servHttp := kern.GetKernelServerHttp()
	sf := &Service{
		ctx:      kern.GetKernelCtx(),
		servHttp: servHttp,
	}
	return sf, nil
}

// Run -- запуск сервиса
func (sf *Service) Run() error {
	sf.servHttp.Run()
	sf.ctx.Wg().Wait()
	return nil
}
