libs5-go/service/service.go

68 lines
1.3 KiB
Go
Raw Normal View History

package service
import (
2024-02-27 08:28:25 +00:00
"context"
"git.lumeweb.com/LumeWeb/libs5-go/config"
"go.etcd.io/bbolt"
"go.uber.org/zap"
)
type ServicesSetter interface {
SetServices(services Services)
}
type Service interface {
2024-02-27 08:28:25 +00:00
Start(ctx context.Context) error
Stop(ctx context.Context) error
Init(ctx context.Context) error
Logger() *zap.Logger
Config() *config.NodeConfig
Db() *bbolt.DB
ServicesSetter
}
type Services interface {
P2P() P2PService
Registry() RegistryService
HTTP() HTTPService
Storage() StorageService
All() []Service
2024-02-27 08:28:25 +00:00
Init(ctx context.Context) error
IsStarted() bool
2024-02-27 09:07:12 +00:00
IsStarting() bool
2024-02-27 08:28:25 +00:00
Start(ctx context.Context) error
Stop(ctx context.Context) error
}
type ServiceParams struct {
Logger *zap.Logger
Config *config.NodeConfig
Db *bbolt.DB
}
type ServiceBase struct {
logger *zap.Logger
config *config.NodeConfig
db *bbolt.DB
services Services
}
func NewServiceBase(logger *zap.Logger, config *config.NodeConfig, db *bbolt.DB) ServiceBase {
return ServiceBase{logger: logger, config: config, db: db}
}
func (s *ServiceBase) SetServices(services Services) {
s.services = services
}
func (s *ServiceBase) Services() Services {
return s.services
}
func (s *ServiceBase) Logger() *zap.Logger {
return s.logger
}
func (s *ServiceBase) Config() *config.NodeConfig {
return s.config
}
func (s *ServiceBase) Db() *bbolt.DB {
return s.db
}