Documentation ¶
Overview ¶
Package machine - Copyright © 2020 Jonathan Whitaker <github@whitaker.io>.
Use of this source code is governed by an MIT-style license that can be found in the LICENSE file.
Package machine - Copyright © 2020 Jonathan Whitaker <github@whitaker.io>.
Use of this source code is governed by an MIT-style license that can be found in the LICENSE file.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Applicative ¶
type Applicative[T any] func(d T) T
Applicative is a function that is applied to payload and used for transformations
func (Applicative[T]) Component ¶
func (x Applicative[T]) Component(output chan T) Vertex[T]
Component is a function for providing a vertex that can be used to run individual components on the payload.
type BaseFn ¶ added in v2.0.4
type BaseFn[T any] func(d T) T
BaseFn is a function that is used to process the payload in a single step of the Y Combinator recursion.
type BaseFnTransform ¶ added in v2.0.4
BaseFnTransform is a function used by the Y COmbinator to perform a recursion on the payload.
func (BaseFnTransform[T]) Component ¶ added in v2.0.4
func (x BaseFnTransform[T]) Component(output chan T) Vertex[T]
Component is a function for providing a vertex that can be used to run individual components on the payload.
type Builder ¶
type Builder[T any] interface { Then(a Applicative[T]) Builder[T] Y(x BaseFnTransform[T]) Builder[T] Or(x ...Test[T]) (Builder[T], Builder[T]) And(x ...Test[T]) (Builder[T], Builder[T]) Filter(f Filter[T]) (Builder[T], Builder[T]) Duplicate() (Builder[T], Builder[T]) Loop(x Filter[T]) (loop, out Builder[T]) Drop() Distribute(Edge[T]) Builder[T] OutputTo(x chan T) }
Builder is the interface provided for creating a data processing stream.
type Component ¶
Component is an interface for providing a vertex that can be used to run individual components on the payload.
type Option ¶
type Option[T any] struct { // FIFO controls the processing order of the payloads // If set to true the system will wait for one payload // to be processed before starting the next. FIFO bool `json:"fifo,omitempty"` // BufferSize sets the buffer size on the edge channels between the // vertices, this setting can be useful when processing large amounts // of data with FIFO turned on. BufferSize int `json:"buffer_size,omitempty"` // Telemetry provides the ability to enable and configure telemetry Telemetry Telemetry[T] `json:"telemetry,omitempty"` // PanicHandler is a function that is called when a panic occurs PanicHandler func(err error, payload T) `json:"-"` // DeepCopyBetweenVerticies controls whether DeepCopy is performed between verticies. // This is useful if the functions applied are holding copies of the payload for // longer than they process it. DeepCopy must be set DeepCopyBetweenVerticies bool `json:"deep_copy_between_vetricies,omitempty"` // DeepCopy is a function to preform a deep copy of the Payload DeepCopy func(T) T `json:"-"` }
Option type for holding machine settings.
type Stream ¶
type Stream[T any] interface { Start(ctx context.Context, input chan T) error Builder() Builder[T] }
Stream is a representation of a data stream and its associated logic.
The Builder method is the entrypoint into creating the data processing flow. All branches of the Stream are required to end in an OutputTo call.
type Telemetry ¶
type Telemetry[T any] interface { IncrementPayloadCount(vertexName string) IncrementErrorCount(vertexName string) Duration(vertexName string, duration time.Duration) RecordPayload(vertexName string, payload T) RecordError(vertexName string, payload T, err error) }
Telemetry type for holding telemetry settings.
type Test ¶
Test is a function used in composition of And/Or operations and used to filter results down different branches with transformations