Skip to content

Commit caed5b7

Browse files
committed
reservation: update reservation state machine
This commit updates the reservation statemachine to allow for locking and spending of the initial reservation.
1 parent a63e907 commit caed5b7

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

reservation/fsm.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ var (
6161
ReservationConfirmed = fsm.StateType("ReservationConfirmed")
6262
ReservationTimedOut = fsm.StateType("ReservationTimedOut")
6363

64+
ReservationLocked = fsm.StateType("ReservationLocked")
65+
66+
ReservationSpendBroadcasted = fsm.StateType("ReservationSpendBroadcasted")
67+
68+
ReservationSpendConfirmed = fsm.StateType("ReservationSpendConfirmed")
69+
6470
ReservationFailed = fsm.StateType("ReservationFailed")
6571
)
6672

@@ -74,6 +80,17 @@ var (
7480
OnReservationConfirmed = fsm.EventType("OnReservationConfirmed")
7581
OnReservationTimedOut = fsm.EventType("OnReservationTimedOut")
7682

83+
OnReservationLocked = fsm.EventType("OnReservationLocked")
84+
85+
OnReservationUnlocked = fsm.EventType("OnReservationUnlocked")
86+
87+
OnReservationSpendBroadcasted = fsm.EventType(
88+
"OnReservationSpendBroadcasted",
89+
)
90+
OnReservationSpendConfirmed = fsm.EventType(
91+
"OnReservationSpendConfirmed",
92+
)
93+
7794
// Failure Events
7895
OnPaymentFailed = fsm.EventType("OnInvoiceCanceled")
7996
)
@@ -116,9 +133,25 @@ func (r *ReservationFSM) GetReservationStates() fsm.States {
116133
ReservationConfirmed: fsm.State{
117134
Transitions: fsm.Transitions{
118135
OnReservationTimedOut: ReservationTimedOut,
136+
OnReservationLocked: ReservationLocked,
119137
},
120138
Action: fsm.NoOpAction,
121139
},
140+
ReservationLocked: fsm.State{
141+
Transitions: fsm.Transitions{
142+
OnReservationUnlocked: ReservationConfirmed,
143+
OnReservationSpendBroadcasted: ReservationSpendBroadcasted,
144+
},
145+
Action: fsm.NoOpAction,
146+
},
147+
ReservationSpendBroadcasted: fsm.State{
148+
Transitions: fsm.Transitions{
149+
OnReservationSpendConfirmed: ReservationSpendConfirmed,
150+
OnReservationSpendBroadcasted: ReservationSpendBroadcasted,
151+
},
152+
Action: fsm.NoOpAction,
153+
},
154+
122155
ReservationFailed: fsm.State{
123156
Action: fsm.NoOpAction,
124157
},

reservation/reservation_fsm.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,20 @@ stateDiagram-v2
33
[*] --> ReservationInit: OnPrepayInvoice
44
ReservationConfirmed
55
ReservationConfirmed --> ReservationTimedOut: OnReservationTimedOut
6+
ReservationConfirmed --> ReservationLocked: OnReservationLocked
67
ReservationFailed
78
ReservationInit
89
ReservationInit --> ReservationWaitForOpening: OnPaymentSent
910
ReservationInit --> ReservationFailed: OnError
11+
ReservationLocked
12+
ReservationLocked --> ReservationConfirmed: OnReservationUnlocked
13+
ReservationLocked --> ReservationSpendBroadcasted: OnReservationSpendBroadcasted
1014
ReservationOpeningMsgReceived
11-
ReservationOpeningMsgReceived --> ReservationWaitForConfirmation: OnOpeningMessageSaved
1215
ReservationOpeningMsgReceived --> ReservationOpeningMsgReceived: OnError
16+
ReservationOpeningMsgReceived --> ReservationWaitForConfirmation: OnOpeningMessageSaved
17+
ReservationSpendBroadcasted
18+
ReservationSpendBroadcasted --> ReservationSpendBroadcasted: OnReservationSpendBroadcasted
19+
ReservationSpendBroadcasted --> ReservationSpendConfirmed: OnReservationSpendConfirmed
1320
ReservationWaitForConfirmation
1421
ReservationWaitForConfirmation --> ReservationConfirmed: OnReservationConfirmed
1522
ReservationWaitForConfirmation --> ReservationTimedOut: OnReservationTimedOut

0 commit comments

Comments
 (0)