diff options
author | René 'Necoro' Neumann <necoro@necoro.eu> | 2020-04-23 23:48:09 +0200 |
---|---|---|
committer | René 'Necoro' Neumann <necoro@necoro.eu> | 2020-04-23 23:48:09 +0200 |
commit | 8467dbb9bd9960191f16def3ba43dcbde0fdda14 (patch) | |
tree | 5af73797e16dfee0a49de72e122c570053988e51 /internal/feed | |
parent | 6911562cf4214531343b7509afe77e38b28a0801 (diff) | |
download | feed2imap-go-8467dbb9bd9960191f16def3ba43dcbde0fdda14.tar.gz feed2imap-go-8467dbb9bd9960191f16def3ba43dcbde0fdda14.tar.bz2 feed2imap-go-8467dbb9bd9960191f16def3ba43dcbde0fdda14.zip |
Notify about the number of successfully fetched feeds.
Diffstat (limited to 'internal/feed')
-rw-r--r-- | internal/feed/parse.go | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/internal/feed/parse.go b/internal/feed/parse.go index 22d16f2..35a7596 100644 --- a/internal/feed/parse.go +++ b/internal/feed/parse.go @@ -32,22 +32,36 @@ func parseFeed(feed *Feed) error { return nil } -func handleFeed(feed *Feed, wg *sync.WaitGroup) { - defer wg.Done() +func handleFeed(feed *Feed, group *sync.WaitGroup, success chan<- bool) { + defer group.Done() log.Printf("Fetching %s from %s", feed.Name, feed.Url) - if err := parseFeed(feed); err != nil { + err := parseFeed(feed) + if err != nil { log.Error(err) } + success <- err == nil } -func Parse(feeds Feeds) { +func Parse(feeds Feeds) int { var wg sync.WaitGroup wg.Add(len(feeds)) + success := make(chan bool, len(feeds)) + for _, feed := range feeds { - go handleFeed(feed, &wg) + go handleFeed(feed, &wg, success) } wg.Wait() + close(success) + + ctr := 0 + for s := range success { + if s { + ctr++ + } + } + + return ctr } |