| 124 | } |
| 125 | |
| 126 | func newSequenceState(f filter.Filter, c *config.FilterConfig, psnap ps.Snapshotter) *sequenceState { |
| 127 | ss := &sequenceState{ |
| 128 | filter: f, |
| 129 | seq: f.GetSequence(), |
| 130 | name: c.Name, |
| 131 | maxSpan: f.GetSequence().MaxSpan, |
| 132 | partials: make(map[int][]*event.Event), |
| 133 | states: make(map[fsm.State]bool), |
| 134 | matches: make(map[int]*event.Event), |
| 135 | exprs: make(map[int]string), |
| 136 | spanDeadlines: make(map[fsm.State]*time.Timer), |
| 137 | initialState: sequenceInitialState, |
| 138 | psnap: psnap, |
| 139 | } |
| 140 | |
| 141 | ss.initFSM() |
| 142 | |
| 143 | ss.configureFSM() |
| 144 | |
| 145 | return ss |
| 146 | } |
| 147 | |
| 148 | func (s *sequenceState) events() []*event.Event { |
| 149 | s.mmu.RLock() |