From 4791fc6082bd8a2928d642454e98b629f4ab3e20 Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Fri, 6 Dec 2024 20:39:07 +0100 Subject: [PATCH] protofsm: eliminate outer option layer in EmmittedEvent We'll have the empty slice tuple represent the None case instead. --- protofsm/state_machine.go | 59 +++++++++++++--------------------- protofsm/state_machine_test.go | 8 ++--- 2 files changed, 25 insertions(+), 42 deletions(-) diff --git a/protofsm/state_machine.go b/protofsm/state_machine.go index a81f5746b2..2cc1219022 100644 --- a/protofsm/state_machine.go +++ b/protofsm/state_machine.go @@ -34,11 +34,11 @@ type EmittedEvent[Event any] struct { // InternalEvent is an optional internal event that is to be routed // back to the target state. This enables state to trigger one or many // 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 // 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 @@ -573,46 +573,31 @@ func (s *StateMachine[Event, Env]) applyEvents(currentState State[Event, Env], // With the event processed, we'll process any // new daemon events that were emitted as part // of this new state transition. - // - //nolint:ll - err := fn.MapOptionZ(events.ExternalEvents, func(dEvents DaemonEventSet) error { - log.Debugf("FSM(%v): processing "+ - "daemon %v daemon events", - s.cfg.Env.Name(), len(dEvents)) - - for _, dEvent := range dEvents { - err := s.executeDaemonEvent( - dEvent, - ) - if err != nil { - return err - } + for _, dEvent := range events.ExternalEvents { + 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 - // our event queue. + // Next, we'll add any new emitted events to our + // event queue. // //nolint:ll - events.InternalEvent.WhenSome(func(es []Event) { - for _, inEvent := range es { - log.Debugf("FSM(%v): adding "+ - "new internal event "+ - "to queue: %v", - s.cfg.Env.Name(), - lnutils.SpewLogClosure( - inEvent, - ), - ) - - eventQueue.Enqueue(inEvent) - } - }) + for _, inEvent := range events.InternalEvent { + log.Debugf("FSM(%v): adding "+ + "new internal event "+ + "to queue: %v", + s.cfg.Env.Name(), + lnutils.SpewLogClosure( + inEvent, + ), + ) + + eventQueue.Enqueue(inEvent) + } return nil }) diff --git a/protofsm/state_machine_test.go b/protofsm/state_machine_test.go index fc7a4ccfdc..ea596dc250 100644 --- a/protofsm/state_machine_test.go +++ b/protofsm/state_machine_test.go @@ -80,9 +80,7 @@ func (d *dummyStateStart) ProcessEvent(event dummyEvents, env *dummyEnv, return &StateTransition[dummyEvents, *dummyEnv]{ NextState: &dummyStateStart{}, NewEvents: fn.Some(EmittedEvent[dummyEvents]{ - InternalEvent: fn.Some( - []dummyEvents{&goToFin{}}, - ), + InternalEvent: []dummyEvents{&goToFin{}}, }), }, nil @@ -114,13 +112,13 @@ func (d *dummyStateStart) ProcessEvent(event dummyEvents, env *dummyEnv, canSend: d.canSend, }, NewEvents: fn.Some(EmittedEvent[dummyEvents]{ - ExternalEvents: fn.Some(DaemonEventSet{ + ExternalEvents: DaemonEventSet{ sendEvent, sendEvent2, &BroadcastTxn{ Tx: &wire.MsgTx{}, Label: "test", }, - }), + }, }), }, nil }