aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.eu>2020-04-26 17:44:20 +0200
committerRené 'Necoro' Neumann <necoro@necoro.eu>2020-04-26 17:44:20 +0200
commit9e69c102b596924d589693ce537c4fecae3aa44c (patch)
treebc43276b03f1f92da51e41b48ebe5fa5adb437c7 /internal
parent835d5f3547f10ede1997a938d9278a506a089bb7 (diff)
downloadfeed2imap-go-9e69c102b596924d589693ce537c4fecae3aa44c.tar.gz
feed2imap-go-9e69c102b596924d589693ce537c4fecae3aa44c.tar.bz2
feed2imap-go-9e69c102b596924d589693ce537c4fecae3aa44c.zip
Handle the waitGroup internally in ForeachGo
Diffstat (limited to 'internal')
-rw-r--r--internal/feed/parse.go4
-rw-r--r--internal/feed/state.go20
2 files changed, 10 insertions, 14 deletions
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)
}