herbsystem

package module
v0.0.0-...-5998d3b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 12, 2021 License: MIT Imports: 5 Imported by: 13

Documentation

Index

Constants

View Source
const CommandStart = Command("start")
View Source
const CommandStop = Command("stop")
View Source
const ContextKeyFinished = ContextKey("finished")

Variables

View Source
var DefaultLogger = func(err error) {
	log.Println(err.Error())
}
View Source
var ErrInvalidStage = errors.New("invalid stage")
View Source
var ErrModuleNameDuplicated = errors.New("module name duplicated")
View Source
var StageNames = map[Stage]string{
	StageNew:         "New",
	StageReady:       "Ready",
	StageConfiguring: "Configuring",
	StageStarting:    "Starting",
	StageRunning:     "Running",
	StageStoping:     "Stoping",
}

Functions

func Catch

func Catch(f func()) (err error)

func Finish

func Finish(ctx context.Context, s System)

func IsFinished

func IsFinished(ctx context.Context) bool

func MustConfigure

func MustConfigure(s System)

func MustExecActions

func MustExecActions(ctx context.Context, s System, cmd interface{}) context.Context

func MustReady

func MustReady(s System)

func MustStart

func MustStart(s System)

func MustStop

func MustStop(s System)

func NopReveiver

func NopReveiver(context.Context, System)

func PanicIfNotInStage

func PanicIfNotInStage(s System, stage Stage)

func WithFinished

func WithFinished(ctx context.Context) context.Context

Types

type Action

type Action struct {
	Command interface{}
	Process Process
}

func CreateAction

func CreateAction(cmd interface{}, p Process) *Action

func CreateStartAction

func CreateStartAction(p Process) *Action

func CreateStopAction

func CreateStopAction(p Process) *Action

func NewAction

func NewAction() *Action

func WrapStartAction

func WrapStartAction(h func()) *Action

func WrapStartOrPanicAction

func WrapStartOrPanicAction(h func() error) *Action

func WrapStopAction

func WrapStopAction(h func()) *Action

func WrapStopOrPanicAction

func WrapStopOrPanicAction(h func() error) *Action

type BasicSystem

type BasicSystem struct {
	// contains filtered or unexported fields
}

func New

func New() *BasicSystem

func (*BasicSystem) GetSystemActions

func (s *BasicSystem) GetSystemActions(cmd interface{}) []Process

func (*BasicSystem) LogSystemError

func (s *BasicSystem) LogSystemError(err error)

func (*BasicSystem) MountSystemActions

func (s *BasicSystem) MountSystemActions(actions ...*Action)

func (*BasicSystem) MustRegisterSystemModule

func (s *BasicSystem) MustRegisterSystemModule(m Module)

func (*BasicSystem) ResetSystem

func (s *BasicSystem) ResetSystem()

func (*BasicSystem) SetSystemLogger

func (s *BasicSystem) SetSystemLogger(l func(error))

func (*BasicSystem) SetSystemStage

func (s *BasicSystem) SetSystemStage(stage Stage)

func (*BasicSystem) SystemContext

func (s *BasicSystem) SystemContext() context.Context

func (*BasicSystem) SystemModules

func (s *BasicSystem) SystemModules() []Module

func (*BasicSystem) SystemStage

func (s *BasicSystem) SystemStage() Stage

type Command

type Command string

type ContextKey

type ContextKey string

type Errors

type Errors struct {
	Err  error
	Prev *Errors
}

func NewErrors

func NewErrors() *Errors

func ToErrors

func ToErrors(err error) *Errors

func (*Errors) All

func (e *Errors) All() []error

func (*Errors) Append

func (e *Errors) Append(err error) *Errors

func (*Errors) Error

func (e *Errors) Error() string

func (*Errors) NilOrError

func (e *Errors) NilOrError() error

type Module

type Module interface {
	ModuleName() string
	InitModule()
	InstallProcess(ctx context.Context, system System, next func(context.Context, System))
}

func MustGetConfigurableModule

func MustGetConfigurableModule(s System, name string) Module

type NopModule

type NopModule struct {
}

func (NopModule) InitModule

func (NopModule) InitModule()

func (NopModule) InstallProcess

func (NopModule) InstallProcess(ctx context.Context, system System, next func(context.Context, System))

func (NopModule) ModuleName

func (NopModule) ModuleName() string

type Process

type Process func(ctx context.Context, system System, next func(context.Context, System))

func ComposeProcess

func ComposeProcess(series ...Process) Process

func Wrap

func Wrap(h ...func()) Process

func WrapOrLog

func WrapOrLog(h ...func() error) Process

func WrapOrPanic

func WrapOrPanic(h ...func() error) Process

type Stage

type Stage int
const (
	StageNew Stage = iota
	StageReady
	StageConfiguring
	StageStarting
	StageRunning
	StageStoping
)

type System

type System interface {
	SystemStage() Stage
	SetSystemStage(stage Stage)
	SystemModules() []Module
	MustRegisterSystemModule(m Module)
	GetSystemActions(cmd interface{}) []Process
	MountSystemActions(actions ...*Action)
	ResetSystem()
	SystemContext() context.Context
	SetSystemLogger(func(error))
	LogSystemError(error)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL