runtime

package
v0.28.0 Latest Latest
Warning

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

Go to latest
Published: Nov 28, 2024 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Run added in v0.26.0

func Run(ctx context.Context, prog Program, registry map[string]FuncCreator) error

Types

type ArrayInport added in v0.25.0

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

func NewArrayInport added in v0.25.0

func NewArrayInport(
	chans []<-chan OrderedMsg,
	addr PortAddr,
	interceptor Interceptor,
) *ArrayInport

func (ArrayInport) Len added in v0.25.0

func (a ArrayInport) Len() int

func (ArrayInport) Receive added in v0.25.0

func (a ArrayInport) Receive(ctx context.Context, idx int) (Msg, bool)

Receive receives a message from a specific slot of the array inport. It returns the received message and a boolean indicating success. It returns false if the context is done or if the channel is closed.

func (ArrayInport) ReceiveAll added in v0.26.0

func (a ArrayInport) ReceiveAll(ctx context.Context, f func(idx int, msg Msg) bool) bool

ReceiveAll receives messages from all available array inport slots just once. It returns false if context is done or if the provided function returns false. The function is called for each message received. The function should return false if it wants to stop receiving messages. Functions are called in order of incoming messages, not in order of slots.

func (*ArrayInport) Select added in v0.26.0

func (a *ArrayInport) Select(ctx context.Context) (SelectedMsg, bool)

Select returns oldest available message across all available array inport slots.

type ArrayOutport added in v0.25.0

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

func NewArrayOutport added in v0.25.0

func NewArrayOutport(addr PortAddr, interceptor Interceptor, slots []chan<- OrderedMsg) *ArrayOutport

func (ArrayOutport) Len added in v0.25.0

func (a ArrayOutport) Len() int

func (ArrayOutport) Send added in v0.25.0

func (a ArrayOutport) Send(ctx context.Context, idx uint8, msg Msg) bool

func (ArrayOutport) SendAll added in v0.25.0

func (a ArrayOutport) SendAll(ctx context.Context, msg Msg) bool

SendAllV2 sends the same message to all slots of the array outport. It returns false if context is done. It blocks until message is sent to all slots. Slots are not guaranteed to be handled in order, message is sent to first available slot. Each slot is guaranteed to be handled only once. TODO: figure out why this is the only working version of `SendAll`

type BoolMsg

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

func NewBoolMsg

func NewBoolMsg(b bool) BoolMsg

func (BoolMsg) Bool

func (msg BoolMsg) Bool() bool

func (BoolMsg) Dict added in v0.26.0

func (BoolMsg) Dict() map[string]Msg

func (BoolMsg) Equal added in v0.26.0

func (msg BoolMsg) Equal(other Msg) bool

func (BoolMsg) Float

func (BoolMsg) Float() float64

func (BoolMsg) Int

func (BoolMsg) Int() int64

func (BoolMsg) List

func (BoolMsg) List() []Msg

func (BoolMsg) MarshalJSON added in v0.20.0

func (msg BoolMsg) MarshalJSON() ([]byte, error)

func (BoolMsg) Str

func (BoolMsg) Str() string

func (BoolMsg) String

func (msg BoolMsg) String() string

func (BoolMsg) Struct added in v0.26.0

func (BoolMsg) Struct() StructMsg

type DebugInterceptor added in v0.26.0

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

func NewDebugInterceptor added in v0.26.0

func NewDebugInterceptor() *DebugInterceptor

func (*DebugInterceptor) Open added in v0.26.0

func (d *DebugInterceptor) Open(filepath string) (func() error, error)

func (*DebugInterceptor) Received added in v0.26.0

func (d *DebugInterceptor) Received(receiver PortSlotAddr, msg Msg) Msg

func (*DebugInterceptor) Sent added in v0.26.0

func (d *DebugInterceptor) Sent(sender PortSlotAddr, msg Msg) Msg

type DictMsg added in v0.26.0

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

Dictionary

func NewDictMsg added in v0.26.0

func NewDictMsg(d map[string]Msg) DictMsg

func (DictMsg) Bool added in v0.26.0

func (DictMsg) Bool() bool

func (DictMsg) Dict added in v0.26.0

func (msg DictMsg) Dict() map[string]Msg

func (DictMsg) Equal added in v0.26.0

func (msg DictMsg) Equal(other Msg) bool

func (DictMsg) Float added in v0.26.0

func (DictMsg) Float() float64

func (DictMsg) Int added in v0.26.0

func (DictMsg) Int() int64

func (DictMsg) List added in v0.26.0

func (DictMsg) List() []Msg

func (DictMsg) MarshalJSON added in v0.26.0

func (msg DictMsg) MarshalJSON() ([]byte, error)

func (DictMsg) Str added in v0.26.0

func (DictMsg) Str() string

func (DictMsg) String added in v0.26.0

func (msg DictMsg) String() string

func (DictMsg) Struct added in v0.26.0

func (DictMsg) Struct() StructMsg

type FloatMsg

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

func NewFloatMsg

func NewFloatMsg(n float64) FloatMsg

func (FloatMsg) Bool

func (FloatMsg) Bool() bool

func (FloatMsg) Dict added in v0.26.0

func (FloatMsg) Dict() map[string]Msg

func (FloatMsg) Equal added in v0.26.0

func (msg FloatMsg) Equal(other Msg) bool

func (FloatMsg) Float

func (msg FloatMsg) Float() float64

func (FloatMsg) Int

func (FloatMsg) Int() int64

func (FloatMsg) List

func (FloatMsg) List() []Msg

func (FloatMsg) MarshalJSON added in v0.20.0

func (msg FloatMsg) MarshalJSON() ([]byte, error)

func (FloatMsg) Str

func (FloatMsg) Str() string

func (FloatMsg) String

func (msg FloatMsg) String() string

func (FloatMsg) Struct added in v0.26.0

func (FloatMsg) Struct() StructMsg

type FuncCall

type FuncCall struct {
	Ref    string
	IO     IO
	Config Msg
}

type FuncCreator

type FuncCreator interface {
	Create(IO, Msg) (func(context.Context), error)
}

type IO added in v0.26.0

type IO struct {
	In  Inports
	Out Outports
}

type Inport added in v0.26.0

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

func NewInport added in v0.26.0

func NewInport(
	array *ArrayInport,
	single *SingleInport,
) Inport

func (Inport) Array added in v0.26.0

func (f Inport) Array() *ArrayInport

func (Inport) Single added in v0.26.0

func (f Inport) Single() *SingleInport

type Inports added in v0.26.0

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

func NewInports added in v0.26.0

func NewInports(ports map[string]Inport) Inports

func (Inports) Array added in v0.26.0

func (f Inports) Array(name string) (ArrayInport, error)

func (Inports) Ports added in v0.26.0

func (f Inports) Ports() map[string]Inport

func (Inports) Single added in v0.26.0

func (f Inports) Single(name string) (SingleInport, error)

type IntMsg

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

func NewIntMsg

func NewIntMsg(n int64) IntMsg

func (IntMsg) Bool

func (IntMsg) Bool() bool

func (IntMsg) Dict added in v0.26.0

func (IntMsg) Dict() map[string]Msg

func (IntMsg) Equal added in v0.26.0

func (msg IntMsg) Equal(other Msg) bool

func (IntMsg) Float

func (IntMsg) Float() float64

func (IntMsg) Int

func (msg IntMsg) Int() int64

func (IntMsg) List

func (IntMsg) List() []Msg

func (IntMsg) MarshalJSON added in v0.20.0

func (msg IntMsg) MarshalJSON() ([]byte, error)

func (IntMsg) Str

func (IntMsg) Str() string

func (IntMsg) String

func (msg IntMsg) String() string

func (IntMsg) Struct added in v0.26.0

func (IntMsg) Struct() StructMsg

type Interceptor added in v0.25.0

type Interceptor interface {
	Sent(PortSlotAddr, Msg) Msg
	Received(PortSlotAddr, Msg) Msg
}

type ListMsg

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

List

func NewListMsg

func NewListMsg(v []Msg) ListMsg

func (ListMsg) Bool

func (ListMsg) Bool() bool

func (ListMsg) Dict added in v0.26.0

func (ListMsg) Dict() map[string]Msg

func (ListMsg) Equal added in v0.26.0

func (msg ListMsg) Equal(other Msg) bool

func (ListMsg) Float

func (ListMsg) Float() float64

func (ListMsg) Int

func (ListMsg) Int() int64

func (ListMsg) List

func (msg ListMsg) List() []Msg

func (ListMsg) MarshalJSON added in v0.20.0

func (msg ListMsg) MarshalJSON() ([]byte, error)

func (ListMsg) Str

func (ListMsg) Str() string

func (ListMsg) String

func (msg ListMsg) String() string

func (ListMsg) Struct added in v0.26.0

func (ListMsg) Struct() StructMsg

type Msg

type Msg interface {
	Bool() bool
	Int() int64
	Float() float64
	Str() string
	List() []Msg
	Dict() map[string]Msg
	Struct() StructMsg
	Equal(other Msg) bool
}

type OrderedMsg added in v0.26.0

type OrderedMsg struct {
	Msg
	// contains filtered or unexported fields
}

OrderedMsg is a message with a chronological index. Ordered messages can be compared and sorted by their index.

func (OrderedMsg) String added in v0.26.0

func (o OrderedMsg) String() string

type Outport added in v0.26.0

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

func NewOutport added in v0.26.0

func NewOutport(
	single *SingleOutport,
	array *ArrayOutport,
) Outport

type Outports added in v0.26.0

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

func NewOutports added in v0.26.0

func NewOutports(ports map[string]Outport) Outports

func (Outports) Array added in v0.26.0

func (f Outports) Array(name string) (ArrayOutport, error)

func (Outports) Single added in v0.26.0

func (f Outports) Single(name string) (SingleOutport, error)

type PortAddr

type PortAddr struct {
	Path string
	Port string
}

type PortSlotAddr added in v0.26.0

type PortSlotAddr struct {
	PortAddr
	Index *uint8 // nil means single port
}

type ProdInterceptor added in v0.26.0

type ProdInterceptor struct{}

func (ProdInterceptor) Prepare added in v0.26.0

func (ProdInterceptor) Prepare() error

func (ProdInterceptor) Received added in v0.26.0

func (ProdInterceptor) Received(receiver PortSlotAddr, msg Msg) Msg

func (ProdInterceptor) Sent added in v0.26.0

func (ProdInterceptor) Sent(sender PortSlotAddr, msg Msg) Msg

type Program

type Program struct {
	// for programmer start is inport and stop is outport, but for runtime it's inverted
	Start     *SingleOutport // Start must be inport of the first function
	Stop      *SingleInport  // Stop must be outport of the (one of the) terminator function(s)
	FuncCalls []FuncCall
}

type SelectedMsg added in v0.26.0

type SelectedMsg struct {
	OrderedMsg
	SlotIdx uint8
}

SelectedMsg is a message selected from available messages on all array inport slots.

func (SelectedMsg) String added in v0.26.0

func (s SelectedMsg) String() string

type SingleInport added in v0.25.0

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

func NewSingleInport added in v0.25.0

func NewSingleInport(
	ch <-chan OrderedMsg,
	addr PortAddr,
	interceptor Interceptor,
) *SingleInport

func (SingleInport) Receive added in v0.25.0

func (s SingleInport) Receive(ctx context.Context) (Msg, bool)

type SingleOutport added in v0.25.0

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

func NewSingleOutport added in v0.25.0

func NewSingleOutport(
	addr PortAddr,
	interceptor Interceptor,
	ch chan<- OrderedMsg,
) *SingleOutport

func (SingleOutport) Send added in v0.25.0

func (s SingleOutport) Send(ctx context.Context, msg Msg) bool

type StringMsg added in v0.26.0

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

func NewStringMsg added in v0.26.0

func NewStringMsg(s string) StringMsg

func (StringMsg) Bool added in v0.26.0

func (StringMsg) Bool() bool

func (StringMsg) Dict added in v0.26.0

func (StringMsg) Dict() map[string]Msg

func (StringMsg) Equal added in v0.26.0

func (msg StringMsg) Equal(other Msg) bool

func (StringMsg) Float added in v0.26.0

func (StringMsg) Float() float64

func (StringMsg) Int added in v0.26.0

func (StringMsg) Int() int64

func (StringMsg) List added in v0.26.0

func (StringMsg) List() []Msg

func (StringMsg) MarshalJSON added in v0.26.0

func (msg StringMsg) MarshalJSON() ([]byte, error)

func (StringMsg) Str added in v0.26.0

func (msg StringMsg) Str() string

func (StringMsg) String added in v0.26.0

func (msg StringMsg) String() string

func (StringMsg) Struct added in v0.26.0

func (StringMsg) Struct() StructMsg

type StructMsg added in v0.26.0

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

Structure

func NewStructMsg added in v0.26.0

func NewStructMsg(names []string, fields []Msg) StructMsg

func (StructMsg) Bool added in v0.26.0

func (StructMsg) Bool() bool

func (StructMsg) Dict added in v0.26.0

func (StructMsg) Dict() map[string]Msg

func (StructMsg) Equal added in v0.26.0

func (msg StructMsg) Equal(other Msg) bool

func (StructMsg) Float added in v0.26.0

func (StructMsg) Float() float64

func (StructMsg) Get added in v0.26.0

func (msg StructMsg) Get(name string) Msg

Get returns the value of a field by name. It panics if the field is not found. It uses binary search to find the field, assuming the names are sorted.

func (StructMsg) Int added in v0.26.0

func (StructMsg) Int() int64

func (StructMsg) List added in v0.26.0

func (StructMsg) List() []Msg

func (StructMsg) MarshalJSON added in v0.26.0

func (msg StructMsg) MarshalJSON() ([]byte, error)

func (StructMsg) Str added in v0.26.0

func (StructMsg) Str() string

func (StructMsg) String added in v0.26.0

func (msg StructMsg) String() string

func (StructMsg) Struct added in v0.26.0

func (msg StructMsg) Struct() StructMsg

Directories

Path Synopsis
Package funcs implements low-level flows (runtime functions).
Package funcs implements low-level flows (runtime functions).

Jump to

Keyboard shortcuts

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