mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-06-05 12:39:54 +02:00
protofsm: eliminate outer option layer in EmmittedEvent
We'll have the empty slice tuple represent the None case instead.
This commit is contained in:
parent
8c9de4d605
commit
4791fc6082
@ -34,11 +34,11 @@ type EmittedEvent[Event any] struct {
|
|||||||
// InternalEvent is an optional internal event that is to be routed
|
// InternalEvent is an optional internal event that is to be routed
|
||||||
// back to the target state. This enables state to trigger one or many
|
// back to the target state. This enables state to trigger one or many
|
||||||
// state transitions without a new external event.
|
// state transitions without a new external event.
|
||||||
InternalEvent fn.Option[[]Event]
|
InternalEvent []Event
|
||||||
|
|
||||||
// ExternalEvent is an optional external event that is to be sent to
|
// ExternalEvent is an optional external event that is to be sent to
|
||||||
// the daemon for dispatch. Usually, this is some form of I/O.
|
// the daemon for dispatch. Usually, this is some form of I/O.
|
||||||
ExternalEvents fn.Option[DaemonEventSet]
|
ExternalEvents DaemonEventSet
|
||||||
}
|
}
|
||||||
|
|
||||||
// StateTransition is a state transition type. It denotes the next state to go
|
// StateTransition is a state transition type. It denotes the next state to go
|
||||||
@ -573,46 +573,31 @@ func (s *StateMachine[Event, Env]) applyEvents(currentState State[Event, Env],
|
|||||||
// With the event processed, we'll process any
|
// With the event processed, we'll process any
|
||||||
// new daemon events that were emitted as part
|
// new daemon events that were emitted as part
|
||||||
// of this new state transition.
|
// of this new state transition.
|
||||||
//
|
for _, dEvent := range events.ExternalEvents {
|
||||||
//nolint:ll
|
err := s.executeDaemonEvent(
|
||||||
err := fn.MapOptionZ(events.ExternalEvents, func(dEvents DaemonEventSet) error {
|
dEvent,
|
||||||
log.Debugf("FSM(%v): processing "+
|
)
|
||||||
"daemon %v daemon events",
|
if err != nil {
|
||||||
s.cfg.Env.Name(), len(dEvents))
|
return err
|
||||||
|
|
||||||
for _, dEvent := range dEvents {
|
|
||||||
err := s.executeDaemonEvent(
|
|
||||||
dEvent,
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Next, we'll add any new emitted events to
|
// Next, we'll add any new emitted events to our
|
||||||
// our event queue.
|
// event queue.
|
||||||
//
|
//
|
||||||
//nolint:ll
|
//nolint:ll
|
||||||
events.InternalEvent.WhenSome(func(es []Event) {
|
for _, inEvent := range events.InternalEvent {
|
||||||
for _, inEvent := range es {
|
log.Debugf("FSM(%v): adding "+
|
||||||
log.Debugf("FSM(%v): adding "+
|
"new internal event "+
|
||||||
"new internal event "+
|
"to queue: %v",
|
||||||
"to queue: %v",
|
s.cfg.Env.Name(),
|
||||||
s.cfg.Env.Name(),
|
lnutils.SpewLogClosure(
|
||||||
lnutils.SpewLogClosure(
|
inEvent,
|
||||||
inEvent,
|
),
|
||||||
),
|
)
|
||||||
)
|
|
||||||
|
|
||||||
eventQueue.Enqueue(inEvent)
|
eventQueue.Enqueue(inEvent)
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
@ -80,9 +80,7 @@ func (d *dummyStateStart) ProcessEvent(event dummyEvents, env *dummyEnv,
|
|||||||
return &StateTransition[dummyEvents, *dummyEnv]{
|
return &StateTransition[dummyEvents, *dummyEnv]{
|
||||||
NextState: &dummyStateStart{},
|
NextState: &dummyStateStart{},
|
||||||
NewEvents: fn.Some(EmittedEvent[dummyEvents]{
|
NewEvents: fn.Some(EmittedEvent[dummyEvents]{
|
||||||
InternalEvent: fn.Some(
|
InternalEvent: []dummyEvents{&goToFin{}},
|
||||||
[]dummyEvents{&goToFin{}},
|
|
||||||
),
|
|
||||||
}),
|
}),
|
||||||
}, nil
|
}, nil
|
||||||
|
|
||||||
@ -114,13 +112,13 @@ func (d *dummyStateStart) ProcessEvent(event dummyEvents, env *dummyEnv,
|
|||||||
canSend: d.canSend,
|
canSend: d.canSend,
|
||||||
},
|
},
|
||||||
NewEvents: fn.Some(EmittedEvent[dummyEvents]{
|
NewEvents: fn.Some(EmittedEvent[dummyEvents]{
|
||||||
ExternalEvents: fn.Some(DaemonEventSet{
|
ExternalEvents: DaemonEventSet{
|
||||||
sendEvent, sendEvent2,
|
sendEvent, sendEvent2,
|
||||||
&BroadcastTxn{
|
&BroadcastTxn{
|
||||||
Tx: &wire.MsgTx{},
|
Tx: &wire.MsgTx{},
|
||||||
Label: "test",
|
Label: "test",
|
||||||
},
|
},
|
||||||
}),
|
},
|
||||||
}),
|
}),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user