Documentation
¶
Index ¶
- Constants
- type DftStateNodeReader
- func (dsn *DftStateNodeReader) Clean()
- func (dsn *DftStateNodeReader) End(stateNode *StateNode) (isEnd bool, err error)
- func (dsn *DftStateNodeReader) GetProduct() ProductItf
- func (dsn *DftStateNodeReader) Name() string
- func (dsn *DftStateNodeReader) PreRead(stateNode *StateNode, input InputItf) (isEnd bool, err error)
- func (dsn *DftStateNodeReader) Read(stateNode *StateNode, input InputItf) (isEnd bool, err error)
- func (dsn *DftStateNodeReader) Register(node StateNodeReader) *DftStateNodeReader
- type InputItf
- type OnNodeRead
- type ProductDftNode
- type ProductEnd
- type ProductError
- type ProductItf
- type StateMachine
- func (sm *StateMachine) End()
- func (sm *StateMachine) Err(err string)
- func (sm *StateMachine) ErrEnd(err string)
- func (sm *StateMachine) GetResultChan() <-chan ProductItf
- func (sm *StateMachine) Init() *StateMachine
- func (sm *StateMachine) IsEndHappened() bool
- func (sm *StateMachine) IsPreadEnd() bool
- func (sm *StateMachine) IsReadEnd() bool
- func (sm *StateMachine) Read(input InputItf) error
- type StateNode
- func (sn *StateNode) ChangeStateNode(nextNode *StateNode)
- func (sn *StateNode) CleanReader()
- func (sn *StateNode) End() (isEnd bool, err error)
- func (sn *StateNode) GetProduct()
- func (sn *StateNode) Init(sm *StateMachine, SNReader StateNodeReader) *StateNode
- func (sn *StateNode) PreRead(input InputItf) (isEnd bool, err error)
- func (sn *StateNode) Read(input InputItf) (isEnd bool, err error)
- func (sn *StateNode) SendProduct(result ProductItf)
- type StateNodeListReader
- func (s *StateNodeListReader) Clean()
- func (s *StateNodeListReader) Current() StateNodeReader
- func (s *StateNodeListReader) End(stateNode *StateNode) (isEnd bool, err error)
- func (s *StateNodeListReader) GetProduct() ProductItf
- func (s *StateNodeListReader) Name() string
- func (s *StateNodeListReader) PreRead(stateNode *StateNode, input InputItf) (isEnd bool, err error)
- func (s *StateNodeListReader) Ptr() int
- func (s *StateNodeListReader) Read(stateNode *StateNode, input InputItf) (isEnd bool, err error)
- func (s *StateNodeListReader) Size() int
- type StateNodeReader
- type StateNodeSelectReader
- func (s *StateNodeSelectReader) Clean()
- func (s *StateNodeSelectReader) End(stateNode *StateNode) (isEnd bool, err error)
- func (s *StateNodeSelectReader) GetProduct() ProductItf
- func (s *StateNodeSelectReader) Name() string
- func (s *StateNodeSelectReader) PreRead(stateNode *StateNode, input InputItf) (isEnd bool, err error)
- func (s *StateNodeSelectReader) Read(stateNode *StateNode, input InputItf) (isEnd bool, err error)
Constants ¶
const ( ErrNoMatchStateNode = "ErrNoMatchStateNode: err list: [%s]" //没有满足的 ErrTooMuchStateNodeLive = "ErrTooMuchStateNodeLive, input[%v] live nodes [%s], end nodes[%s]" //太多满足条件的 )
const ( //ResultEnd product by end. ResultEnd = -1 //ResultPFromDft product from default node. ResultPFromDft = -2 //ResultError end with error. ResultError = -3 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DftStateNodeReader ¶
type DftStateNodeReader struct {
SNodeList []*StateNode
LiveMap map[*StateNode]byte
// contains filtered or unexported fields
}
DftStateNodeReader choice node.
func NewDftStateNodeReader ¶
func NewDftStateNodeReader(machine *StateMachine) *DftStateNodeReader
NewDftStateNodeReader .
func (*DftStateNodeReader) End ¶
func (dsn *DftStateNodeReader) End(stateNode *StateNode) (isEnd bool, err error)
func (*DftStateNodeReader) GetProduct ¶
func (dsn *DftStateNodeReader) GetProduct() ProductItf
GetProduct .
func (*DftStateNodeReader) PreRead ¶
func (dsn *DftStateNodeReader) PreRead(stateNode *StateNode, input InputItf) (isEnd bool, err error)
PreRead DftStateNodeReader don't do PreRead, because it should deal all registed reader.
func (*DftStateNodeReader) Read ¶
func (dsn *DftStateNodeReader) Read(stateNode *StateNode, input InputItf) (isEnd bool, err error)
func (*DftStateNodeReader) Register ¶
func (dsn *DftStateNodeReader) Register(node StateNodeReader) *DftStateNodeReader
Register .
type InputItf ¶
type InputItf interface {
//Copy should give copy to prevent user change it.
Copy() InputItf
}
InputItf StateMachine's input.
type OnNodeRead ¶
OnNodeRead node read. maybe no use now?
type ProductDftNode ¶
type ProductDftNode struct {
Reason string
}
ProductDftNode get product type from default.
type ProductEnd ¶
type ProductEnd struct{}
ProductEnd last result.
func (*ProductEnd) ProductType ¶
func (*ProductEnd) ProductType() int
ProductType result's type. end's id = -1.
type ProductError ¶
type ProductError struct {
Err string
}
ProductError end with error.
func (*ProductError) ProductType ¶
func (*ProductError) ProductType() int
ProductType result's type. usally should >= 0.
type ProductItf ¶
type ProductItf interface {
//ProductType result's type. usually should >= 0.
ProductType() int
}
ProductItf StateMachine's result.
type StateMachine ¶
type StateMachine struct {
ChanSize int
//when a StateNode end, will let nowStateNOde = DfeStateNode.
//StateNode's PreRead should always return (isEnd=false, err=nil)
DftStateNode *StateNode
// contains filtered or unexported fields
}
StateMachine state machine to formulate a state-tree and get result by input.
func (*StateMachine) ErrEnd ¶
func (sm *StateMachine) ErrEnd(err string)
ErrEnd insert a error product.
func (*StateMachine) GetResultChan ¶
func (sm *StateMachine) GetResultChan() <-chan ProductItf
GetResultChan .
func (*StateMachine) Init ¶
func (sm *StateMachine) Init() *StateMachine
Init base on new(StateMachine).Init() write style.
func (*StateMachine) IsEndHappened ¶
func (sm *StateMachine) IsEndHappened() bool
IsEndHappened if have end then return true.
func (*StateMachine) IsPreadEnd ¶
func (sm *StateMachine) IsPreadEnd() bool
IsPreadEnd return the last read status.
func (*StateMachine) Read ¶
func (sm *StateMachine) Read(input InputItf) error
type StateNode ¶
type StateNode struct {
Result ProductItf
Datas map[string]interface{}
// contains filtered or unexported fields
}
StateNode StateMachine's node.
func (*StateNode) ChangeStateNode ¶
ChangeStateNode .
func (*StateNode) CleanReader ¶
func (sn *StateNode) CleanReader()
CleanReader run clean for reader.
func (*StateNode) Init ¶
func (sn *StateNode) Init(sm *StateMachine, SNReader StateNodeReader) *StateNode
Init .
func (*StateNode) PreRead ¶
PreRead !!!Warning!!! should not deal the input in this function. only check if end.
func (*StateNode) SendProduct ¶
func (sn *StateNode) SendProduct(result ProductItf)
SendProduct send product to StateMachine.
type StateNodeListReader ¶
type StateNodeListReader struct {
// contains filtered or unexported fields
}
StateNodeListReader .
func (*StateNodeListReader) Clean ¶
func (s *StateNodeListReader) Clean()
Clean let the Reader like new. it will be call before first Read.
func (*StateNodeListReader) Current ¶
func (s *StateNodeListReader) Current() StateNodeReader
Current get current StateNodeReader .
func (*StateNodeListReader) End ¶
func (s *StateNodeListReader) End(stateNode *StateNode) (isEnd bool, err error)
func (*StateNodeListReader) GetProduct ¶
func (s *StateNodeListReader) GetProduct() ProductItf
GetProduct return result.
func (*StateNodeListReader) PreRead ¶
func (s *StateNodeListReader) PreRead(stateNode *StateNode, input InputItf) (isEnd bool, err error)
PreRead only see if should stop read.
type StateNodeReader ¶
type StateNodeReader interface {
//Name reader's name.
Name() string
//Clean let the Reader like new. it will be call before first Read.
Clean()
//PreRead only see if should stop read.
PreRead(stateNode *StateNode, input InputItf) (isEnd bool, err error)
//Read real read. even isEnd == true the input be readed.
Read(stateNode *StateNode, input InputItf) (isEnd bool, err error)
//End when end read.
End(stateNode *StateNode) (isEnd bool, err error)
//GetProduct return result.
GetProduct() ProductItf
}
StateNodeReader state node reader.
func NewStateNodeListReader ¶
func NewStateNodeListReader(readers ...StateNodeReader) StateNodeReader
NewStateNodeListReader .
type StateNodeSelectReader ¶
type StateNodeSelectReader struct {
ReaderList []StateNodeReader
LiveMap map[StateNodeReader]bool
Result ProductItf
}
StateNodeSelectReader .
func NewStateNodeSelectReader ¶
func NewStateNodeSelectReader(list ...StateNodeReader) *StateNodeSelectReader
NewStateNodeSelectReader .
func (*StateNodeSelectReader) Clean ¶
func (s *StateNodeSelectReader) Clean()
Clean let the Reader like new. it will be call before first Read.
func (*StateNodeSelectReader) End ¶
func (s *StateNodeSelectReader) End(stateNode *StateNode) (isEnd bool, err error)
End .
func (*StateNodeSelectReader) GetProduct ¶
func (s *StateNodeSelectReader) GetProduct() ProductItf
GetProduct return result.
func (*StateNodeSelectReader) Name ¶
func (s *StateNodeSelectReader) Name() string
Name reader's name.