@@ -37,11 +37,12 @@ var (
3737)
3838
3939type eventHolder struct {
40- patternGroup * patternGroup
40+ patternGroup * PatternGroup
4141 event * Event
4242}
4343
4444type globalWatcher struct {
45+ groups []* PatternGroup
4546 watchers []* pattern
4647 events chan eventHolder
4748 stop chan struct {}
@@ -60,17 +61,11 @@ func InitWatcher(ct context.Context, slogger *slog.Logger, groups []*PatternGrou
6061 globalCtx = ct
6162 globalLogger = slogger
6263
63- activeWatcher = & globalWatcher {}
64+ activeWatcher = & globalWatcher {groups : groups }
6465
6566 for _ , g := range groups {
66- pg := & patternGroup {callback : g .Callback }
67-
68- if len (g .Patterns ) == 0 {
69- activeWatcher .watchers = append (activeWatcher .watchers , & pattern {patternGroup : pg })
70- } else {
71- for _ , p := range g .Patterns {
72- activeWatcher .watchers = append (activeWatcher .watchers , & pattern {patternGroup : pg , value : p })
73- }
67+ for _ , p := range g .Patterns {
68+ activeWatcher .watchers = append (activeWatcher .watchers , & pattern {patternGroup : g , value : p })
7469 }
7570 }
7671
@@ -177,7 +172,7 @@ func (g *globalWatcher) listenForFileEvents() {
177172 timer := time .NewTimer (debounceDuration )
178173 timer .Stop ()
179174
180- eventsPerGroup := make (map [* patternGroup ][]* Event )
175+ eventsPerGroup := make (map [* PatternGroup ][]* Event , len ( g . groups ) )
181176
182177 defer timer .Stop ()
183178 for {
@@ -201,22 +196,22 @@ func (g *globalWatcher) listenForFileEvents() {
201196 }
202197
203198 g .scheduleReload (eventsPerGroup )
204- eventsPerGroup = make (map [* patternGroup ][]* Event )
199+ eventsPerGroup = make (map [* PatternGroup ][]* Event , len ( g . groups ) )
205200 }
206201 }
207202}
208203
209- func (g * globalWatcher ) scheduleReload (eventsPerGroup map [* patternGroup ][]* Event ) {
204+ func (g * globalWatcher ) scheduleReload (eventsPerGroup map [* PatternGroup ][]* Event ) {
210205 reloadWaitGroup .Add (1 )
211206
212207 // Call callbacks in order
213- for _ , w := range g .watchers {
214- if w . value == "" {
215- w . patternGroup . callback (nil )
208+ for _ , g := range g .groups {
209+ if len ( g . Patterns ) == 0 {
210+ g . Callback (nil )
216211 }
217212
218- if e , ok := eventsPerGroup [w . patternGroup ]; ok {
219- w . patternGroup . callback (e )
213+ if e , ok := eventsPerGroup [g ]; ok {
214+ g . Callback (e )
220215 }
221216 }
222217
0 commit comments