Skip to content

Commit 8fd74c9

Browse files
committed
tmp fix
1 parent 1104e92 commit 8fd74c9

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

fsm/fsm.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,35 @@ func NewStateMachineWithState(states States, current StateType,
154154
}
155155
}
156156

157+
// GetNextStateType returns the next state type for the event given the
158+
// machine's current state, or an error if the event can't be handled in the
159+
// given state.
160+
func (s *StateMachine) GetNextStateType(event EventType) (StateType, error) {
161+
var (
162+
state State
163+
ok bool
164+
)
165+
166+
stateMap := s.States
167+
168+
if state, ok = stateMap[s.current]; !ok {
169+
return "", NewErrConfigError("current state not found")
170+
}
171+
172+
if state.Transitions == nil {
173+
return "", NewErrConfigError("current state has no transitions")
174+
}
175+
176+
var next StateType
177+
if next, ok = state.Transitions[event]; !ok {
178+
return "", NewErrConfigError(
179+
"event not found in current transitions",
180+
)
181+
}
182+
183+
return next, nil
184+
}
185+
157186
// getNextState returns the next state for the event given the machine's current
158187
// state, or an error if the event can't be handled in the given state.
159188
func (s *StateMachine) getNextState(event EventType) (State, error) {

staticaddr/deposit/manager.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,9 +196,19 @@ func (m *Manager) recoverDeposits(ctx context.Context) error {
196196
go func(fsm *FSM) {
197197
err := fsm.SendEvent(ctx, OnRecover, nil)
198198
if err != nil {
199-
log.Errorf("Error sending OnStart event: %v",
199+
log.Errorf("Error sending OnRecover event: %v",
200200
err)
201201
}
202+
203+
nextState, err := fsm.GetNextStateType(OnRecover)
204+
if err != nil {
205+
log.Errorf("Error retrieving next state: %v",
206+
err)
207+
} else {
208+
fsm.DefaultObserver.WaitForStateAsync(
209+
ctx, nextState, false,
210+
)
211+
}
202212
}(fsm)
203213

204214
m.mu.Lock()

0 commit comments

Comments
 (0)