From 5d3f91bd83aa526a03622d1ceca31ba7255706f7 Mon Sep 17 00:00:00 2001 From: sputn1ck Date: Fri, 25 Aug 2023 01:46:25 +0200 Subject: [PATCH] fsm: add reservation fsm compiling --- fsm/fsm.go | 2 ++ fsm/stateparser/stateparser.go | 8 ++++++++ instantout/reservation/reservation_fsm.md | 17 +++++++++++++++++ scripts/fsm-generate.sh | 3 ++- 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 instantout/reservation/reservation_fsm.md diff --git a/fsm/fsm.go b/fsm/fsm.go index 99fe339..f1f1649 100644 --- a/fsm/fsm.go +++ b/fsm/fsm.go @@ -206,6 +206,8 @@ func (s *StateMachine) SendEvent(event EventType, eventCtx EventContext) error { // current state. state, err := s.getNextState(event) if err != nil { + log.Errorf("unable to get next state: %v from event: "+ + "%v, current state: %v", err, event, s.current) return ErrEventRejected } diff --git a/fsm/stateparser/stateparser.go b/fsm/stateparser/stateparser.go index 9e107d9..d065833 100644 --- a/fsm/stateparser/stateparser.go +++ b/fsm/stateparser/stateparser.go @@ -10,6 +10,7 @@ import ( "sort" "github.com/lightninglabs/loop/fsm" + "github.com/lightninglabs/loop/instantout/reservation" ) func main() { @@ -41,6 +42,13 @@ func run() error { return err } + case "reservation": + reservationFSM := &reservation.FSM{} + err = writeMermaidFile(fp, reservationFSM.GetReservationStates()) + if err != nil { + return err + } + default: fmt.Println("Missing or wrong argument: fsm must be one of:") fmt.Println("\treservations") diff --git a/instantout/reservation/reservation_fsm.md b/instantout/reservation/reservation_fsm.md new file mode 100644 index 0000000..712a1ea --- /dev/null +++ b/instantout/reservation/reservation_fsm.md @@ -0,0 +1,17 @@ +```mermaid +stateDiagram-v2 +[*] --> Init: OnServerRequest +Confirmed +Confirmed --> TimedOut: OnTimedOut +Confirmed --> Confirmed: OnRecover +Failed +Init +Init --> Failed: OnError +Init --> WaitForConfirmation: OnBroadcast +Init --> Failed: OnRecover +TimedOut +WaitForConfirmation +WaitForConfirmation --> WaitForConfirmation: OnRecover +WaitForConfirmation --> Confirmed: OnConfirmed +WaitForConfirmation --> TimedOut: OnTimedOut +``` \ No newline at end of file diff --git a/scripts/fsm-generate.sh b/scripts/fsm-generate.sh index d6b1ce3..60e6803 100755 --- a/scripts/fsm-generate.sh +++ b/scripts/fsm-generate.sh @@ -1,2 +1,3 @@ #!/usr/bin/env bash -go run ./fsm/stateparser/stateparser.go --out ./fsm/example_fsm.md --fsm example \ No newline at end of file +go run ./fsm/stateparser/stateparser.go --out ./fsm/example_fsm.md --fsm example +go run ./fsm/stateparser/stateparser.go --out ./reservation/reservation_fsm.md --fsm reservation \ No newline at end of file