routers

package
v0.28.0 Latest Latest
Warning

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

Go to latest
Published: Feb 19, 2019 License: AGPL-3.0 Imports: 8 Imported by: 2

Documentation

Index

Constants

View Source
const TypeFirst string = "first"

TypeFirst is the type for FirstRouters

View Source
const TypeRandom string = "random"

TypeRandom is the type for a random router

View Source
const TypeRandomOnce string = "random_once"

TypeRandomOnce is the constant for our random once router

View Source
const TypeSwitch string = "switch"

TypeSwitch is the constant for our switch router

Variables

This section is empty.

Functions

func ReadRouter added in v0.11.0

func ReadRouter(data json.RawMessage) (flows.Router, error)

ReadRouter reads a router from the given JSON

func RegisterType added in v0.11.0

func RegisterType(name string, initFunc func() flows.Router)

RegisterType registers a new type of router

Types

type BaseRouter

type BaseRouter struct {
	Type_ string `json:"type" validate:"required"`

	// ResultName_ is the name of the which the result of this router should be saved as (if any)
	ResultName_ string `json:"result_name,omitempty"`
}

BaseRouter is the base class for all our router classes

func (*BaseRouter) ResultName

func (r *BaseRouter) ResultName() string

ResultName returns the name which the result of this router should be saved as (if any)

func (*BaseRouter) Type added in v0.22.0

func (r *BaseRouter) Type() string

Type returns the type of this router

type Case

type Case struct {
	UUID        utils.UUID     `json:"uuid"                 validate:"required"`
	Type        string         `json:"type"                 validate:"required"`
	Arguments   []string       `json:"arguments,omitempty"`
	OmitOperand bool           `json:"omit_operand,omitempty"`
	ExitUUID    flows.ExitUUID `json:"exit_uuid"            validate:"required"`
}

Case represents a single case and test in our switch

func NewCase added in v0.23.0

func NewCase(uuid utils.UUID, type_ string, arguments []string, omitOperand bool, exitUUID flows.ExitUUID) *Case

NewCase creates a new case

type FirstRouter

type FirstRouter struct {
	BaseRouter
}

FirstRouter is a simple router that always takes the first exit

func NewFirstRouter added in v0.4.0

func NewFirstRouter(resultName string) *FirstRouter

func (*FirstRouter) PickRoute

func (r *FirstRouter) PickRoute(run flows.FlowRun, exits []flows.Exit, step flows.Step) (*string, flows.Route, error)

PickRoute always picks the first exit if available for this router

func (*FirstRouter) Validate

func (r *FirstRouter) Validate(exits []flows.Exit) error

Validate validates the arguments on this router

type RandomOnceRouter

type RandomOnceRouter struct {
	BaseRouter
	Exit flows.ExitUUID `json:"exit"     validate:"required"`
}

RandomOnceRouter exits of our exits once (randomly) before taking exit

func NewRandomOnceRouter added in v0.4.0

func NewRandomOnceRouter(exit flows.ExitUUID, resultName string) *RandomOnceRouter

func (*RandomOnceRouter) PickRoute

func (r *RandomOnceRouter) PickRoute(run flows.FlowRun, exits []flows.Exit, step flows.Step) (*string, flows.Route, error)

PickRoute will attempt to take a random exit it hasn't taken before. If all exits have been taken, then it will take the exit specified in it's Exit parameter

func (*RandomOnceRouter) Validate

func (r *RandomOnceRouter) Validate(exits []flows.Exit) error

Validate validates the parameters on this router

type RandomRouter

type RandomRouter struct {
	BaseRouter
}

RandomRouter is a router which will exit out a random exit

func NewRandomRouter added in v0.4.0

func NewRandomRouter(resultName string) *RandomRouter

func (*RandomRouter) PickRoute

func (r *RandomRouter) PickRoute(run flows.FlowRun, exits []flows.Exit, step flows.Step) (*string, flows.Route, error)

PickRoute picks a route randomly from our available exits

func (*RandomRouter) Validate

func (r *RandomRouter) Validate(exits []flows.Exit) error

Validate validates that the fields on this router are valid

type SwitchRouter

type SwitchRouter struct {
	BaseRouter
	Default flows.ExitUUID `json:"default_exit_uuid"   validate:"omitempty,uuid4"`
	Operand string         `json:"operand"             validate:"required"`
	Cases   []*Case        `json:"cases"`
}

SwitchRouter is a router which allows specifying 0-n cases which should each be tested in order, following whichever case returns true, or if none do, then taking the default exit

func NewSwitchRouter added in v0.4.0

func NewSwitchRouter(defaultExit flows.ExitUUID, operand string, cases []*Case, resultName string) *SwitchRouter

NewSwitchRouter creates a new switch router

func (*SwitchRouter) PickRoute

func (r *SwitchRouter) PickRoute(run flows.FlowRun, exits []flows.Exit, step flows.Step) (*string, flows.Route, error)

PickRoute evaluates each of the tests on our cases in order, returning the exit for the first case which evaluates to a true. If no cases evaluate to true, then the default exit (if specified) is returned

func (*SwitchRouter) Validate

func (r *SwitchRouter) Validate(exits []flows.Exit) error

Validate validates the arguments for this router

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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