fsm

package
v0.1.6 Latest Latest
Warning

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

Go to latest
Published: May 6, 2021 License: Apache-2.0 Imports: 17 Imported by: 1

Documentation

Index

Constants

View Source
const (
	TriggerTypeOurMessage    = "OUR_STATUS"
	TriggerTypeUseInput      = "INPUT"      // works like echo
	TriggerTypeUseInputSave  = "INPUT_SAVE" // saves input data
	TriggerTypeFormat        = "FORMAT"
	TriggerTypeFormatFromMem = "FORMAT_MEM"
	TriggerTypePIN           = "GEN_PIN"
	TriggerTypeData          = ""

	TriggerTypeValidateInputEqual    = "INPUT_VALIDATE_EQUAL"
	TriggerTypeValidateInputNotEqual = "INPUT_VALIDATE_NOT_EQUAL"
	TriggerTypeInputEqual            = "INPUT_EQUAL"

	TriggerTypeAcceptAndInputValues = "ACCEPT_AND_INPUT_VALUES"
	TriggerTypeNotAcceptValues      = "NOT_ACCEPT_VALUES"
)
View Source
const (
	MessageNone         = ""
	MessageBasicMessage = "basic_message"
	MessageIssueCred    = "issue_cred"
	MessageTrustPing    = "trust_ping"
	MessagePresentProof = "present_proof"
	MessageConnection   = "connection"

	MessageAnswer = "answer"

	MessageEmail = "email"
	MessageHook  = "hook"
)
View Source
const (
	EmailProtocol = 100
	QAProtocol    = 101
	HookProtocol  = 102
)

Variables

View Source
var QuestionTypeID = map[string]agency.Question_Type{
	"ANSWER_NEEDED_PING":          agency.Question_PING_WAITS,
	"ANSWER_NEEDED_ISSUE_PROPOSE": agency.Question_ISSUE_PROPOSE_WAITS,
	"ANSWER_NEEDED_PROOF_PROPOSE": agency.Question_PROOF_PROPOSE_WAITS,
	"ANSWER_NEEDED_PROOF_VERIFY":  agency.Question_PROOF_VERIFY_WAITS,
}

Functions

func GenerateURL

func GenerateURL(subPath string, m *Machine) (URL *url.URL, err error)

Types

type BasicMessage

type BasicMessage struct {
	Content string
}

type Email

type Email struct {
	To      string `json:"to,omitempty"`
	From    string `json:"from,omitempty"`
	Subject string `json:"subject,omitempty"`
	Body    string `json:"body,omitempty"`
}

type Event

type Event struct {
	Protocol string `json:"protocol"` // Note! See ProtocolType below
	TypeID   string `json:"type_id"`  // Note! See NotificationType below

	Rule     string `json:"rule"`
	Data     string `json:"data,omitempty"`
	NoStatus bool   `json:"no_status,omitempty"`

	*EventData `json:"event_data,omitempty"`

	ProtocolType     agency.Protocol_Type `json:"-"`
	NotificationType NotificationType     `json:"-"`

	*agency.ProtocolStatus `json:"-"`
	*Transition            `json:"-"`
}

func (Event) Answers

func (e Event) Answers(status *agency.Question) bool

func (Event) String

func (e Event) String() string

func (Event) Triggers

func (e Event) Triggers(status *agency.ProtocolStatus) bool

func (Event) TriggersByHook

func (e Event) TriggersByHook() bool

type EventData

type EventData struct {
	BasicMessage *BasicMessage `json:"basic_message,omitempty"`
	Issuing      *Issuing      `json:"issuing,omitempty"`
	Email        *Email        `json:"email,omitempty"`
	Proof        *Proof        `json:"proof,omitempty"`
	Hook         *Hook         `json:"hook,omitempty"`
}

type Hook

type Hook struct {
	Data map[string]string
}

type Issuing

type Issuing struct {
	CredDefID string
	AttrsJSON string
}

type Machine

type Machine struct {
	Name    string            `json:"name,omitempty"`
	Initial *Transition       `json:"initial"`
	States  map[string]*State `json:"states"`

	Current     string `json:"-"`
	Initialized bool   `json:"-"`

	Memory map[string]string `json:"-"`
}

func NewMachine

func NewMachine(data MachineData) *Machine

func (*Machine) Answers

func (m *Machine) Answers(q *agency.Question) *Transition

func (*Machine) CurrentState

func (m *Machine) CurrentState() *State

func (*Machine) Initialize

func (m *Machine) Initialize() (err error)

Initialize initializes and optimizes the state machine because the JSON is meant for humans to write and machines to read. Initialize also moves machine to the initial state. It returns error if machine has them.

func (*Machine) Start

func (m *Machine) Start() []*Event

func (*Machine) Step

func (m *Machine) Step(t *Transition)

func (*Machine) String

func (m *Machine) String() string

func (*Machine) Triggers

func (m *Machine) Triggers(status *agency.ProtocolStatus) *Transition

Triggers returns a transition if machine has it in its current state. If not it returns nil.

func (*Machine) TriggersByHook

func (m *Machine) TriggersByHook() *Transition

TriggersByHook returns a transition if machine has it in its current state. If not it returns nil.

type MachineData

type MachineData struct {
	FType string
	Data  []byte
}

type NotificationType

type NotificationType int32

func NotificationTypeID

func NotificationTypeID(typeName string) NotificationType

type Proof

type Proof struct {
	ProofJSON string `json:"proof_json"`
}

type ProofAttr

type ProofAttr struct {
	ID        string `json:"-"`
	Name      string `json:"name,omitempty"`
	CredDefID string `json:"credDefId,omitempty"`
	Predicate string `json:"predicate,omitempty"`
	// contains filtered or unexported fields
}

type State

type State struct {
	Transitions []*Transition `json:"transitions"`
}

type Transition

type Transition struct {
	Trigger *Event `json:"trigger,omitempty"`

	Sends []*Event `json:"sends,omitempty"`

	Target string `json:"target"`

	Machine *Machine `json:"-"`
}

func (*Transition) BuildSendAnswers

func (t *Transition) BuildSendAnswers(status *agency.AgentStatus) []*Event

func (*Transition) BuildSendEvents

func (t *Transition) BuildSendEvents(status *agency.ProtocolStatus) []*Event

func (*Transition) BuildSendEventsFromHook

func (t *Transition) BuildSendEventsFromHook(hookData map[string]string) []*Event

func (*Transition) FmtFromMem

func (t *Transition) FmtFromMem(send *Event) string

func (*Transition) GenPIN

func (t *Transition) GenPIN(_ *Event)

Jump to

Keyboard shortcuts

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