NewEngine creates a new Engine.
(logger slog.Logger)
| 89 | |
| 90 | // NewEngine creates a new Engine. |
| 91 | func NewEngine(logger slog.Logger) *Engine { |
| 92 | e := &Engine{ |
| 93 | logger: logger, |
| 94 | roots: make(map[string]*rootState), |
| 95 | eventCh: make(chan rootEvent, 256), |
| 96 | closeCh: make(chan struct{}), |
| 97 | } |
| 98 | empty := make([]*rootSnapshot, 0) |
| 99 | e.snap.Store(&empty) |
| 100 | e.wg.Add(1) |
| 101 | go e.start() |
| 102 | return e |
| 103 | } |
| 104 | |
| 105 | // ErrClosed is returned when operations are attempted on a |
| 106 | // closed engine. |