From 9e69c102b596924d589693ce537c4fecae3aa44c Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Sun, 26 Apr 2020 17:44:20 +0200 Subject: Handle the waitGroup internally in ForeachGo --- internal/feed/parse.go | 4 +--- internal/feed/state.go | 20 +++++++++----------- 2 files changed, 10 insertions(+), 14 deletions(-) (limited to 'internal/feed') diff --git a/internal/feed/parse.go b/internal/feed/parse.go index d7b20ad..c027bd3 100644 --- a/internal/feed/parse.go +++ b/internal/feed/parse.go @@ -3,7 +3,6 @@ package feed import ( ctxt "context" "fmt" - "sync" "time" "github.com/mmcdole/gofeed" @@ -32,8 +31,7 @@ func parseFeed(feed *Feed) error { return nil } -func handleFeed(feed *Feed, group *sync.WaitGroup) { - defer group.Done() +func handleFeed(feed *Feed) { log.Printf("Fetching %s from %s", feed.Name, feed.Url) err := parseFeed(feed) diff --git a/internal/feed/state.go b/internal/feed/state.go index 8ec8dfd..6f284ad 100644 --- a/internal/feed/state.go +++ b/internal/feed/state.go @@ -19,12 +19,17 @@ func (state *State) Foreach(f func(*Feed)) { } } -func (state *State) ForeachGo(goFunc func(*Feed, *sync.WaitGroup)) { +func (state *State) ForeachGo(goFunc func(*Feed)) { var wg sync.WaitGroup wg.Add(len(state.feeds)) + f := func(feed *Feed, wg *sync.WaitGroup) { + goFunc(feed) + wg.Done() + } + for _, feed := range state.feeds { - go goFunc(feed, &wg) + go f(feed, &wg) } wg.Wait() } @@ -62,7 +67,7 @@ func (state *State) Fetch() int { return ctr } -func filterFeed(feed *Feed, group *sync.WaitGroup) { +func filterFeed(feed *Feed) { if len(feed.items) > 0 { origLen := len(feed.items) @@ -80,19 +85,12 @@ func filterFeed(feed *Feed, group *sync.WaitGroup) { } else { log.Debugf("No items for %s. No filtering.", feed.Name) } - - if group != nil { - // group is nil in debug case - group.Done() - } } func (state *State) Filter() { if log.IsDebug() { // single threaded for better output - state.Foreach(func(f *Feed) { - filterFeed(f, nil) - }) + state.Foreach(filterFeed) } else { state.ForeachGo(filterFeed) } -- cgit v1.2.3-54-g00ecf