Add state machine example
parent
4ee78e1036
commit
241b2c9576
|
|
@ -0,0 +1,33 @@
|
||||||
|
import datatypes.fsm
|
||||||
|
|
||||||
|
struct MyReceiver {
|
||||||
|
mut:
|
||||||
|
data []string
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
mut receiver := &MyReceiver{}
|
||||||
|
mut s := fsm.new()
|
||||||
|
s.add_state('A', on_state_entry, on_state_run, on_state_exit)
|
||||||
|
s.add_state('B', on_state_entry, on_state_run, on_state_exit)
|
||||||
|
s.add_transition('A', 'B', condition_transition)
|
||||||
|
s.run(receiver)
|
||||||
|
s.run(receiver)
|
||||||
|
s.run(receiver)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_state_entry(mut receiver MyReceiver) {
|
||||||
|
println('on_state_entry')
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_state_run(mut receiver MyReceiver) {
|
||||||
|
println('on_state_run')
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_state_exit(mut receiver MyReceiver) {
|
||||||
|
println('on_state_exit')
|
||||||
|
}
|
||||||
|
|
||||||
|
fn condition_transition(receiver &MyReceiver) bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue