Documentation
¶
Index ¶
- func Match(msg Msg, pattern Msg) bool
- func Run(ctx context.Context, prog Program, registry map[string]FuncCreator) (int, error)
- func Terminate(ctx context.Context, exitCode int)
- func Uint8Index(idx int) uint8
- type ArrayInport
- type ArrayOutport
- type BoolMsg
- func (msg BoolMsg) Bool() bool
- func (BoolMsg) Bytes() []byte
- func (BoolMsg) Dict() map[string]Msg
- func (msg BoolMsg) Equal(other Msg) bool
- func (BoolMsg) Float() float64
- func (BoolMsg) Int() int64
- func (BoolMsg) List() []Msg
- func (msg BoolMsg) MarshalJSON() ([]byte, error)
- func (BoolMsg) Str() string
- func (msg BoolMsg) String() string
- func (BoolMsg) Struct() StructMsg
- func (BoolMsg) Union() UnionMsg
- type BytesMsg
- func (BytesMsg) Bool() bool
- func (msg BytesMsg) Bytes() []byte
- func (BytesMsg) Dict() map[string]Msg
- func (msg BytesMsg) Equal(other Msg) bool
- func (BytesMsg) Float() float64
- func (BytesMsg) Int() int64
- func (BytesMsg) List() []Msg
- func (msg BytesMsg) MarshalJSON() ([]byte, error)
- func (BytesMsg) Str() string
- func (msg BytesMsg) String() string
- func (BytesMsg) Struct() StructMsg
- func (BytesMsg) Union() UnionMsg
- type DictMsg
- func (DictMsg) Bool() bool
- func (DictMsg) Bytes() []byte
- func (msg DictMsg) Dict() map[string]Msg
- func (msg DictMsg) Equal(other Msg) bool
- func (DictMsg) Float() float64
- func (DictMsg) Int() int64
- func (DictMsg) List() []Msg
- func (msg DictMsg) MarshalJSON() ([]byte, error)
- func (DictMsg) Str() string
- func (msg DictMsg) String() string
- func (DictMsg) Struct() StructMsg
- func (DictMsg) Union() UnionMsg
- type FloatMsg
- func (FloatMsg) Bool() bool
- func (FloatMsg) Bytes() []byte
- func (FloatMsg) Dict() map[string]Msg
- func (msg FloatMsg) Equal(other Msg) bool
- func (msg FloatMsg) Float() float64
- func (FloatMsg) Int() int64
- func (FloatMsg) List() []Msg
- func (msg FloatMsg) MarshalJSON() ([]byte, error)
- func (FloatMsg) Str() string
- func (msg FloatMsg) String() string
- func (FloatMsg) Struct() StructMsg
- func (FloatMsg) Union() UnionMsg
- type FuncCall
- type FuncCreator
- type IO
- type Inport
- type Inports
- type IntMsg
- func (IntMsg) Bool() bool
- func (IntMsg) Bytes() []byte
- func (IntMsg) Dict() map[string]Msg
- func (msg IntMsg) Equal(other Msg) bool
- func (IntMsg) Float() float64
- func (msg IntMsg) Int() int64
- func (IntMsg) List() []Msg
- func (msg IntMsg) MarshalJSON() ([]byte, error)
- func (IntMsg) Str() string
- func (msg IntMsg) String() string
- func (IntMsg) Struct() StructMsg
- func (IntMsg) Union() UnionMsg
- type Interceptor
- type JSONLTraceFileWriter
- type ListMsg
- func (ListMsg) Bool() bool
- func (ListMsg) Bytes() []byte
- func (ListMsg) Dict() map[string]Msg
- func (msg ListMsg) Equal(other Msg) bool
- func (ListMsg) Float() float64
- func (ListMsg) Int() int64
- func (msg ListMsg) List() []Msg
- func (msg ListMsg) MarshalJSON() ([]byte, error)
- func (ListMsg) Str() string
- func (msg ListMsg) String() string
- func (ListMsg) Struct() StructMsg
- func (ListMsg) Union() UnionMsg
- type Msg
- type NoEffectInterceptor
- type OrderedMsg
- type Outport
- type Outports
- type PortAddr
- type PortSlotAddr
- type Program
- type SelectedMsg
- type SingleInport
- type SingleOutport
- type StringMsg
- func (StringMsg) Bool() bool
- func (StringMsg) Bytes() []byte
- func (StringMsg) Dict() map[string]Msg
- func (msg StringMsg) Equal(other Msg) bool
- func (StringMsg) Float() float64
- func (StringMsg) Int() int64
- func (StringMsg) List() []Msg
- func (msg StringMsg) MarshalJSON() ([]byte, error)
- func (msg StringMsg) Str() string
- func (msg StringMsg) String() string
- func (StringMsg) Struct() StructMsg
- func (StringMsg) Union() UnionMsg
- type StructField
- type StructMsg
- func (StructMsg) Bool() bool
- func (StructMsg) Bytes() []byte
- func (StructMsg) Dict() map[string]Msg
- func (msg StructMsg) Equal(other Msg) bool
- func (StructMsg) Float() float64
- func (msg StructMsg) Get(name string) Msg
- func (StructMsg) Int() int64
- func (StructMsg) List() []Msg
- func (msg StructMsg) MarshalJSON() ([]byte, error)
- func (StructMsg) Str() string
- func (msg StructMsg) String() string
- func (msg StructMsg) Struct() StructMsg
- func (StructMsg) Union() UnionMsg
- type TraceHop
- type Tracer
- type UnionMsg
- func (UnionMsg) Bool() bool
- func (UnionMsg) Bytes() []byte
- func (msg UnionMsg) Data() Msg
- func (UnionMsg) Dict() map[string]Msg
- func (msg UnionMsg) Equal(other Msg) bool
- func (UnionMsg) Float() float64
- func (UnionMsg) Int() int64
- func (UnionMsg) List() []Msg
- func (msg UnionMsg) MarshalJSON() ([]byte, error)
- func (UnionMsg) Str() string
- func (msg UnionMsg) String() string
- func (UnionMsg) Struct() StructMsg
- func (msg UnionMsg) Tag() string
- func (msg UnionMsg) Union() UnionMsg
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Match ¶ added in v0.32.0
Match compares two messages and return true if they matches and false otherwise. Unlike Equal it compares only some aspects of the messages.
func Terminate ¶ added in v0.37.0
Terminate requests graceful runtime termination with the provided process exit code.
func Uint8Index ¶ added in v0.34.0
Uint8Index validates idx and returns it as uint8 or panics.
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( tracer *Tracer, 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) (OrderedMsg, bool)
Receive receives a message from a specific array slot together with its runtime ordering metadata.
func (*ArrayInport) ReceiveAll ¶ added in v0.26.0
func (a *ArrayInport) ReceiveAll(ctx context.Context, f func(idx int, ordered OrderedMsg) 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 receive full transport envelopes and 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(tracer *Tracer, 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, causes ...OrderedMsg) bool
func (*ArrayOutport) SendAll ¶ added in v0.25.0
func (a *ArrayOutport) SendAll(ctx context.Context, msg Msg, causes ...OrderedMsg) 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 (BoolMsg) MarshalJSON ¶ added in v0.20.0
type BytesMsg ¶ added in v0.35.0
type BytesMsg struct {
// contains filtered or unexported fields
}
--- BYTES ---
func NewBytesMsg ¶ added in v0.35.0
func (BytesMsg) MarshalJSON ¶ added in v0.35.0
type DictMsg ¶ added in v0.26.0
type DictMsg struct {
// contains filtered or unexported fields
}
--- DICT ---
func NewDictMsg ¶ added in v0.26.0
func (DictMsg) MarshalJSON ¶ added in v0.26.0
type FloatMsg ¶
type FloatMsg struct {
// contains filtered or unexported fields
}
func NewFloatMsg ¶
func (FloatMsg) MarshalJSON ¶ added in v0.20.0
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
type IntMsg ¶
type IntMsg struct {
// contains filtered or unexported fields
}
func (IntMsg) MarshalJSON ¶ added in v0.20.0
type Interceptor ¶ added in v0.25.0
type Interceptor interface {
Sent(context.Context, PortSlotAddr, OrderedMsg, TraceHop)
Received(context.Context, PortSlotAddr, OrderedMsg) OrderedMsg
}
func NewInterceptor ¶ added in v0.37.0
func NewInterceptor(tracePath, comment string) (Interceptor, func() error, error)
NewInterceptor always enables in-memory tracing. When tracePath is empty, it skips JSONL emission and returns the production interceptor.
type JSONLTraceFileWriter ¶ added in v0.37.0
type JSONLTraceFileWriter struct {
// contains filtered or unexported fields
}
JSONLTraceFileWriter is an interceptor that writes each tracing event into a file in a JSONL format.
func NewDebugInterceptor ¶ added in v0.26.0
func NewDebugInterceptor(comment string) *JSONLTraceFileWriter
func (*JSONLTraceFileWriter) Open ¶ added in v0.37.0
func (d *JSONLTraceFileWriter) Open(filepath string) (func() error, error)
Open safely opens the file for writing and returns its close func.
func (*JSONLTraceFileWriter) Received ¶ added in v0.37.0
func (d *JSONLTraceFileWriter) Received(_ context.Context, receiver PortSlotAddr, ordered OrderedMsg) OrderedMsg
Received implements Interceptor interface. The only thing this interceptor really does - is writes JSONL line to a file.
func (*JSONLTraceFileWriter) Sent ¶ added in v0.37.0
func (d *JSONLTraceFileWriter) Sent( _ context.Context, sender PortSlotAddr, ordered OrderedMsg, hop TraceHop, )
Sent implements Interceptor interface. The only thing this interceptor really does - is writes JSONL line to a file.
type ListMsg ¶
type ListMsg struct {
// contains filtered or unexported fields
}
--- LIST ---
func NewListMsg ¶
func (ListMsg) MarshalJSON ¶ added in v0.20.0
type Msg ¶
type Msg interface {
Bool() bool
Int() int64
Float() float64
Str() string
Bytes() []byte
List() []Msg
Dict() map[string]Msg
Struct() StructMsg
Union() UnionMsg
Equal(Msg) bool
}
func Call ¶ added in v0.33.0
func Call(ctx context.Context, prog Program, registry map[string]FuncCreator, input Msg) (Msg, int, error)
Call runs a single request-response round-trip using program Start/Stop. It sends the provided input to Start, waits for one message on Stop, then cancels and waits for all handlers to finish.
type NoEffectInterceptor ¶ added in v0.37.0
type NoEffectInterceptor struct{}
NoEffectInterceptor exist to be used as default interceptor when no actual interception is needed. Just to satisfy compiler.
func (NoEffectInterceptor) Prepare ¶ added in v0.37.0
func (NoEffectInterceptor) Prepare() error
func (NoEffectInterceptor) Received ¶ added in v0.37.0
func (p NoEffectInterceptor) Received(_ context.Context, _ PortSlotAddr, ordered OrderedMsg) OrderedMsg
func (NoEffectInterceptor) Sent ¶ added in v0.37.0
func (p NoEffectInterceptor) Sent( _ context.Context, _ PortSlotAddr, ordered OrderedMsg, _ TraceHop, )
type OrderedMsg ¶ added in v0.26.0
type OrderedMsg struct {
Msg
// contains filtered or unexported fields
}
OrderedMsg is a transport envelope with payload and runtime ordering metadata.
func (OrderedMsg) String ¶ added in v0.26.0
func (o OrderedMsg) String() string
String is just a simple stringer that ignores index while formatting.
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
type PortSlotAddr ¶ added in v0.26.0
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 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( tracer *Tracer, ch <-chan OrderedMsg, addr PortAddr, interceptor Interceptor, ) *SingleInport
func (SingleInport) Receive ¶ added in v0.25.0
func (s SingleInport) Receive(ctx context.Context) (OrderedMsg, bool)
Receive returns the next incoming transport envelope with its runtime ordering metadata.
type SingleOutport ¶ added in v0.25.0
type SingleOutport struct {
// contains filtered or unexported fields
}
func NewSingleOutport ¶ added in v0.25.0
func NewSingleOutport( tracer *Tracer, addr PortAddr, interceptor Interceptor, outCh chan<- OrderedMsg, ) *SingleOutport
func (SingleOutport) Send ¶ added in v0.25.0
func (s SingleOutport) Send(ctx context.Context, msg Msg, causes ...OrderedMsg) bool
type StringMsg ¶ added in v0.26.0
type StringMsg struct {
// contains filtered or unexported fields
}
--- STRING ---
func NewStringMsg ¶ added in v0.26.0
func (StringMsg) MarshalJSON ¶ added in v0.26.0
type StructField ¶ added in v0.33.0
type StructField struct {
// contains filtered or unexported fields
}
structfield is a helper to construct structs via runtime.newstruct api without exposing fields.
func NewStructField ¶ added in v0.33.0
func NewStructField(name string, value Msg) StructField
newstructfield constructs a structfield with provided name and value.
type StructMsg ¶ added in v0.26.0
type StructMsg struct {
// contains filtered or unexported fields
}
--- STRUCT ---
func NewStructMsg ¶ added in v0.26.0
func NewStructMsg(fields []StructField) StructMsg
newstruct builds a struct message from a slice of structfield. underlying struct representation remains unchanged for now.
func (StructMsg) Equal ¶ added in v0.26.0
Equal implements strict equality for StructMsg messages. It returns false if the lengths of the names and fields are different. It returns false if any of the fields are not equal.
func (StructMsg) Get ¶ added in v0.26.0
get returns the value of a field by name. it panics if the field is not found. it uses linear scan to find the field.
func (StructMsg) MarshalJSON ¶ added in v0.26.0
type TraceHop ¶ added in v0.37.0
type TraceHop struct {
Sender *PortSlotAddr
Receiver *PortSlotAddr
Message string
// CauseIndexes is the single source of truth for causal edges in traceStore.
// Tree views are reconstructed from these indexes on demand.
CauseIndexes []uint64
// Index is materialized on read from traceStore map key.
// We do not persist it in storage separately to avoid duplicated state.
Index uint64
}
type Tracer ¶ added in v0.37.0
type Tracer struct {
// contains filtered or unexported fields
}
func TracerFromIO ¶ added in v0.37.0
TracerFromIO returns the runtime tracer bound to this IO wiring.
This is a pragmatic bridge used by runtime funcs (for example runtime.Panic) to read the current dataflow trace from runtime state. It is intentionally wiring-based in the current implementation and may be redesigned later.
func (*Tracer) HopByOrderedMsg ¶ added in v0.37.0
func (t *Tracer) HopByOrderedMsg(ordered OrderedMsg) (TraceHop, bool)
HopByOrderedMsg returns a normalized hop for a concrete ordered message.
func (*Tracer) HopsByCauseIndexes ¶ added in v0.37.0
HopsByCauseIndexes resolves parent hops by stored cause indexes. Missing indexes are ignored to keep trace-read path resilient.
type UnionMsg ¶ added in v0.28.1
type UnionMsg struct {
// contains filtered or unexported fields
}
--- UNION ---
func NewUnionMsg ¶ added in v0.28.1
func (UnionMsg) Equal ¶ added in v0.28.1
Equal implements strict equality for UnionMsg messages. If one union has data and another doesn't, it returns false. It returns false if tags are different. It returns false if data is different. Tags are compared as Go strings and data is compared recursevely using Equal method.