LCOV - code coverage report
Current view: top level - src/utilities - BatchFeedDiscovery.cpp (source / functions) Coverage Total Hit
Test: coverage.info.cleaned Lines: 93.9 % 33 31
Test Date: 2026-01-27 22:31:25 Functions: 80.0 % 5 4

            Line data    Source code
       1              : #include "BatchFeedDiscovery.h"
       2              : 
       3            8 : BatchFeedDiscovery::BatchFeedDiscovery(QObject *parent) :
       4              :     FangObject(parent),
       5            8 :     feedList(nullptr)
       6              : {
       7            8 : }
       8              : 
       9            8 : void BatchFeedDiscovery::checkFeedList(ListModel* feedList, int maxConcurrent)
      10              : {
      11            8 :     this->feedList = feedList;
      12              : 
      13           27 :     for(int i = 0; i < feedList->count(); i++) {
      14           19 :         FeedItem* item = qobject_cast<FeedItem*>(feedList->row(i));
      15           19 :         if (i < maxConcurrent) {
      16              :             // Run the first few concurrently.
      17           10 :             FeedDiscovery* discovery = createFeedDiscovery();
      18           10 :             connect(discovery, &FeedDiscovery::done, this, &BatchFeedDiscovery::onFeedDiscoveryFinished);
      19              : 
      20           10 :             runDiscovery(discovery, item);
      21              :         } else {
      22              :             // Queue up the reset.
      23            9 :             queue.enqueue(item);
      24              :         }
      25              :     }
      26            8 : }
      27              : 
      28            0 : FeedDiscovery* BatchFeedDiscovery::createFeedDiscovery()
      29              : {
      30            0 :     return new FeedDiscovery(this);
      31              : }
      32              : 
      33           19 : void BatchFeedDiscovery::onFeedDiscoveryFinished(FeedDiscovery* discovery)
      34              : {
      35           19 :     FeedItem* item = lookup.take(discovery);
      36           19 :     item->setIsUpdating(false);
      37              :     
      38              :     // See what we got.
      39           19 :     if (discovery->error()) {
      40            3 :         item->setErrorFlag(true);
      41              :     } else {
      42              :         // Yay, we got one!  Copy over the corrected URL.
      43           16 :         item->setURL(discovery->feedURL());
      44              :         
      45              :         // Now select it.
      46           16 :         item->setIsSelected(true);
      47              :     }
      48              :     
      49              :     // Last-item check.
      50           19 :     if (queue.isEmpty()) {
      51           10 :         if (lookup.isEmpty()) {
      52              :             // That's all, folks!
      53            6 :             emit done();
      54              :         }
      55              :         
      56           10 :         delete discovery;
      57           10 :         return;
      58              :     }
      59              :     
      60              :     // Grab the next one and DISOVERYize it!!11
      61            9 :     runDiscovery(discovery, queue.dequeue());
      62              : }
      63              : 
      64           19 : void BatchFeedDiscovery::runDiscovery(FeedDiscovery* discovery, FeedItem* item)
      65              : {
      66           19 :     lookup.insert(discovery, item);
      67           19 :     item->setIsUpdating(true);
      68           19 :     discovery->checkFeed(item->getURL().toString());
      69           19 : }
        

Generated by: LCOV version 2.0-1