controls

package
v1.0.6 Latest Latest
Warning

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

Go to latest
Published: Mar 19, 2026 License: MIT Imports: 8 Imported by: 0

README

Controls

Service orchestration and lifecycle management for long-running processes.

Provides:

  • Controller for managing background services
  • Lifecycle hooks for startup and shutdown
  • Standard interfaces for cancellable tasks

For detailed documentation and implementation patterns, see the Controls Component Documentation.

Documentation

Index

Constants

View Source
const DefaultShutdownTimeout = 5 * time.Second

Variables

This section is empty.

Functions

This section is empty.

Types

type Controllable

type Controllable interface {
	Messages() chan Message
	Health() chan HealthMessage
	Errors() chan error
	Signals() chan os.Signal
	SetErrorsChannel(errs chan error)
	SetMessageChannel(control chan Message)
	SetSignalsChannel(sigs chan os.Signal)
	SetHealthChannel(health chan HealthMessage)
	SetWaitGroup(wg *sync.WaitGroup)
	SetShutdownTimeout(d time.Duration)
	Start()
	Stop()
	GetContext() context.Context
	SetState(state State)
	GetState() State
	SetLogger(logger *slog.Logger)
	GetLogger() *slog.Logger
	IsRunning() bool
	IsStopped() bool
	IsStopping() bool
	Register(id string, opts ...ServiceOption)
}

type Controller

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

func NewController

func NewController(ctx context.Context, opts ...ControllerOpt) *Controller

func (*Controller) Errors

func (c *Controller) Errors() chan error

func (*Controller) GetContext

func (c *Controller) GetContext() context.Context

func (*Controller) GetLogger

func (c *Controller) GetLogger() *slog.Logger

func (*Controller) GetState

func (c *Controller) GetState() State

func (*Controller) Health

func (c *Controller) Health() chan HealthMessage

func (*Controller) IsRunning

func (c *Controller) IsRunning() bool

func (*Controller) IsStopped

func (c *Controller) IsStopped() bool

func (*Controller) IsStopping

func (c *Controller) IsStopping() bool

func (*Controller) Messages

func (c *Controller) Messages() chan Message

func (*Controller) Register

func (c *Controller) Register(id string, opts ...ServiceOption)

func (*Controller) SetErrorsChannel

func (c *Controller) SetErrorsChannel(errs chan error)

func (*Controller) SetHealthChannel

func (c *Controller) SetHealthChannel(health chan HealthMessage)

func (*Controller) SetLogger

func (c *Controller) SetLogger(logger *slog.Logger)

func (*Controller) SetMessageChannel

func (c *Controller) SetMessageChannel(messages chan Message)

func (*Controller) SetShutdownTimeout

func (c *Controller) SetShutdownTimeout(d time.Duration)

func (*Controller) SetSignalsChannel

func (c *Controller) SetSignalsChannel(signals chan os.Signal)

func (*Controller) SetState

func (c *Controller) SetState(state State)

func (*Controller) SetWaitGroup

func (c *Controller) SetWaitGroup(wg *sync.WaitGroup)

func (*Controller) Signals

func (c *Controller) Signals() chan os.Signal

func (*Controller) Start

func (c *Controller) Start()

func (*Controller) Stop

func (c *Controller) Stop()

Stop configured server.

func (*Controller) Wait

func (c *Controller) Wait()

func (*Controller) WaitGroup

func (c *Controller) WaitGroup() *sync.WaitGroup

type ControllerOpt

type ControllerOpt func(Controllable)

func WithLogger

func WithLogger(logger *slog.Logger) ControllerOpt

Global Options.

func WithShutdownTimeout

func WithShutdownTimeout(d time.Duration) ControllerOpt

func WithoutSignals

func WithoutSignals() ControllerOpt

type HealthMessage

type HealthMessage struct {
	Host    string `json:"host"`
	Port    int    `json:"port"`
	Status  int    `json:"status"`
	Message string `json:"message"`
}

type Message

type Message string
const (
	Stop   Message = "stop"
	Status Message = "status"
)

type Service

type Service struct {
	Name   string
	Start  StartFunc
	Stop   StopFunc
	Status StatusFunc
}

type ServiceOption

type ServiceOption func(*Service)

func WithStart

func WithStart(fn StartFunc) ServiceOption

func WithStatus

func WithStatus(fn StatusFunc) ServiceOption

func WithStop

func WithStop(fn StopFunc) ServiceOption

type Services

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

type StartFunc

type StartFunc func(context.Context) error

type State

type State string
const (
	Unknown  State = "unknown"
	Running  State = "running"
	Stopping State = "stopping"
	Stopped  State = "stopped"
)

type StatusFunc

type StatusFunc func()

type StopFunc

type StopFunc func(context.Context)

type ValidErrorFunc

type ValidErrorFunc func(error) bool

Directories

Path Synopsis
vcs

Jump to

Keyboard shortcuts

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