diff --git a/src/core/cpn/CampaignManager.cc b/src/core/cpn/CampaignManager.cc index a9c78940..1de0f170 100644 --- a/src/core/cpn/CampaignManager.cc +++ b/src/core/cpn/CampaignManager.cc @@ -47,6 +47,11 @@ void CampaignManager::setTotalCount(uint64_t count) m_jobserver->setTotalCount(count); } +void CampaignManager::increaseTotalCount(uint64_t count) +{ + m_jobserver->increaseTotalCount(count); +} + void CampaignManager::skipJobs(uint64_t count) { m_jobserver->skipJobs(count); diff --git a/src/core/cpn/CampaignManager.hpp b/src/core/cpn/CampaignManager.hpp index fcc35882..27e6f4ab 100644 --- a/src/core/cpn/CampaignManager.hpp +++ b/src/core/cpn/CampaignManager.hpp @@ -72,6 +72,7 @@ public: * in the database). */ void setTotalCount(uint64_t count); + void increaseTotalCount(uint64_t count); void skipJobs(uint64_t count); /** * User campaign has finished. diff --git a/src/core/cpn/DatabaseCampaign.cc b/src/core/cpn/DatabaseCampaign.cc index 86d9e60a..72d6ab43 100644 --- a/src/core/cpn/DatabaseCampaign.cc +++ b/src/core/cpn/DatabaseCampaign.cc @@ -221,7 +221,7 @@ bool DatabaseCampaign::run_variant(Database::Variant variant) { log_send << "Found " << experiment_count << " jobs in database. (" << variant.variant << "/" << variant.benchmark << ")" << std::endl; - campaignmanager.setTotalCount(experiment_count); + campaignmanager.increaseTotalCount(experiment_count); // abstraction of injection point: // must not be initialized in loop, because hop chain calculator would lose diff --git a/src/core/cpn/JobServer.hpp b/src/core/cpn/JobServer.hpp index 604374c8..c248c958 100644 --- a/src/core/cpn/JobServer.hpp +++ b/src/core/cpn/JobServer.hpp @@ -124,6 +124,7 @@ public: * in the database). */ void setTotalCount(uint64_t count) { m_TotalCount = count; } + void increaseTotalCount(uint64_t count) { m_TotalCount = m_TotalCount.value_or(0) + count; } void skipJobs(uint64_t count) { ++m_DoneCount; /* FIXME assume atomic */ } /** * Checks whether there are no more experiment parameter sets.