Add state machine example

pull/13668/head
Mihai Galos 2022-03-08 17:47:02 +01:00
parent 4ee78e1036
commit 241b2c9576
1 changed files with 33 additions and 0 deletions

View File

@ -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
}