machines

package
v0.7.3 Latest Latest
Warning

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

Go to latest
Published: Dec 19, 2023 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ErrInvalidTransitionCode      = "1541"
	ErrInvalidTransitionEventCode = "1542"
	ErrInititalizeK8sMachineCode  = "1543"
	ErrAssetMachineCtxCode        = "1544"
	ErrInvalidTypeCode            = "1551"
)
View Source
const (
	Discovery  EventType = "discovery"
	Register   EventType = "register"
	Connect    EventType = "connect"
	Disconnect EventType = "disconnect"
	Ignore     EventType = "ignore"
	NotFound   EventType = "not found"
	Delete     EventType = "delete"
	NoOp       EventType = "noop"

	DISCOVERED   StateType = "discovered"
	REGISTERED   StateType = "registered"
	CONNECTED    StateType = "connected"
	IGNORED      StateType = "ignored"
	MAINTENANCE  StateType = "maintenance"
	DISCONNECTED StateType = "disconnected"
	DELETED      StateType = "deleted"
	NOTFOUND     StateType = "not found"

	Init EventType = "initialize"
)

Variables

This section is empty.

Functions

func ErrAssertMachineCtx

func ErrAssertMachineCtx(err error) error

func ErrInititalizeK8sMachine

func ErrInititalizeK8sMachine(err error) error

func ErrInvalidTransition

func ErrInvalidTransition(from, to StateType) error

func ErrInvalidTransitionEvent

func ErrInvalidTransitionEvent(from StateType, event EventType) error

func ErrInvalidType

func ErrInvalidType(err error) error

Types

type Action

type Action interface {

	// Used as guards/prerequisites checks and actions to be performed when the machine enters a given state.
	ExecuteOnEntry(context context.Context, machinectx interface{}, data interface{}) (EventType, *events.Event, error)

	Execute(context context.Context, machinectx interface{}, data interface{}) (EventType, *events.Event, error)

	// Used for cleanup actions to perform when the machine exits a given state
	ExecuteOnExit(context context.Context, machinectx interface{}, data interface{}) (EventType, *events.Event, error)
}

Action to be executed in a given state.

type DefaultConnectAction

type DefaultConnectAction struct{}

func (*DefaultConnectAction) Execute

func (da *DefaultConnectAction) Execute(ctx context.Context, machineCtx interface{}, data interface{}) (EventType, *events.Event, error)

func (*DefaultConnectAction) ExecuteOnEntry

func (da *DefaultConnectAction) ExecuteOnEntry(ctx context.Context, machineCtx interface{}, data interface{}) (EventType, *events.Event, error)

func (*DefaultConnectAction) ExecuteOnExit

func (da *DefaultConnectAction) ExecuteOnExit(ctx context.Context, machineCtx interface{}, data interface{}) (EventType, *events.Event, error)

type EventType

type EventType string

Represents an event in the system/machine

type Events

type Events map[EventType]StateType

Represents the mapping between event and the next state in the event's response

type Payload

type Payload struct {
	Connection connections.Connection
	Credential models.Credential
}

type State

type State struct {
	Events Events
	Action Action
}

func (*State) RegisterAction

func (s *State) RegisterAction(action Action) *State

func (*State) RegisterEvent

func (s *State) RegisterEvent(eventType EventType, stateType StateType) *State

type StateMachine

type StateMachine struct {
	// ID to trace the events originated from the machine, also used in logs
	ID uuid.UUID

	// Given name for the machine, used in logs to track issues
	Name string

	// Configuration of states managed by the machine
	States States

	// Represent the previous state of the machine
	PreviousState StateType

	// The current state of the machine
	CurrentState StateType

	// The initial state at which machine gets initialized
	InitialState StateType

	// Machine specific parameters/context.
	// Provided at initialization of the machine.
	Context interface{}

	Log logger.Handler

	Provider models.Provider
	// contains filtered or unexported fields
}

func (*StateMachine) ResetState

func (sm *StateMachine) ResetState()

func (*StateMachine) SendEvent

func (sm *StateMachine) SendEvent(ctx context.Context, eventType EventType, payload interface{}) (*events.Event, error)

Returns events.Event and error. The func invoking the SendEvent should handle the error and publish the event.

func (*StateMachine) Start

func (sm *StateMachine) Start(ctx context.Context, machinectx interface{}, log logger.Handler, init models.InitFunc) (*events.Event, error)

type StateType

type StateType string

Represents an state in the system/machine

var (
	DefaultState StateType = ""
	InitialState StateType = "initialized"
)

type States

type States map[StateType]State

Represents mapping between state name and the state

Jump to

Keyboard shortcuts

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