Move the event emitter and lifecycle events from the engine into the reducer, making the reducer the single point of orchestration for reduction. This eliminates the engine package entirely. - Add events.go to pkg/reducer with Start, Step, and Stop events. - Extend Reducer interface to embed Emitter and add Expression() method. - Update NormalOrderReducer to embed BaseEmitter and emit lifecycle events. - Update all plugins to attach to Reducer instead of Engine. - Remove internal/engine package. - Add Off() method to BaseEmitter to complete Emitter interface. - Fix Emitter.On signature to use generic type E instead of string.
14 lines
300 B
Go
14 lines
300 B
Go
package reducer
|
|
|
|
// Event represents lifecycle events during reduction.
|
|
type Event int
|
|
|
|
const (
|
|
// StartEvent is emitted before reduction begins.
|
|
StartEvent Event = iota
|
|
// StepEvent is emitted after each reduction step.
|
|
StepEvent
|
|
// StopEvent is emitted after reduction completes.
|
|
StopEvent
|
|
)
|