routers

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Jul 7, 2017 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 RouterFromEnvelope

func RouterFromEnvelope(envelope *utils.TypedEnvelope) (flows.Router, error)

RouterFromEnvelope attempts to build a router given the passed in TypedEnvelope

Types

type BaseRouter

type BaseRouter struct {
	// 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)

type Case

type Case struct {
	UUID      flows.UUID     `json:"uuid"              validate:"required"`
	Type      string         `json:"type"              validate:"required"`
	Arguments []string       `json:"arguments"`
	ExitUUID  flows.ExitUUID `json:"exit_uuid"         validate:"required"`
}

Case represents a single case and test in our switch

type FirstRouter

type FirstRouter struct {
	BaseRouter
}

FirstRouter is a simple router that always takes the first exit

func (*FirstRouter) PickRoute

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

PickRoute always picks the first exit if available for this router

func (*FirstRouter) Type

func (r *FirstRouter) Type() string

Type returns the type of 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 {
	Exit flows.ExitUUID `json:"exit"     validate:"required"`
	BaseRouter
}

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

func (*RandomOnceRouter) PickRoute

func (r *RandomOnceRouter) PickRoute(run flows.FlowRun, exits []flows.Exit, step flows.Step) (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) Type

func (r *RandomOnceRouter) Type() string

Type returns the type of our router

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 (*RandomRouter) PickRoute

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

PickRoute picks a route randomly from our available exits

func (*RandomRouter) Type

func (r *RandomRouter) Type() string

Type returns the type of this router

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 {
	Default flows.ExitUUID `json:"default_exit_uuid"   validate:"omitempty,uuid4"`
	Operand string         `json:"operand"             validate:"required"`
	Cases   []Case         `json:"cases"`
	BaseRouter
}

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 (*SwitchRouter) PickRoute

func (r *SwitchRouter) PickRoute(run flows.FlowRun, exits []flows.Exit, step flows.Step) (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) Type

func (r *SwitchRouter) Type() string

Type returns the type of this router

func (*SwitchRouter) Validate

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

Validate validates the arguments for this router

Jump to

Keyboard shortcuts

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