From 86ba9cb377e6e39d7f989f60e047355c6bf636b4 Mon Sep 17 00:00:00 2001 From: hsc Date: Sat, 10 Nov 2012 16:14:06 +0000 Subject: [PATCH] CampaignManager: only instantiate JobServer when needed As we have a global CampaignManager instance in the fail-cpn library, a JobServer member variable is not such a good idea. Essentially, we started all JobServer threads (which is done in its constructor) within a fail-client before this commit. git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1915 8c4709b5-6ec9-48aa-a5cd-a96041d1645a --- src/core/cpn/CampaignManager.hpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/core/cpn/CampaignManager.hpp b/src/core/cpn/CampaignManager.hpp index 26b1ac99..d283388a 100644 --- a/src/core/cpn/CampaignManager.hpp +++ b/src/core/cpn/CampaignManager.hpp @@ -20,18 +20,21 @@ namespace fail { */ class CampaignManager { private: - JobServer m_jobserver; + JobServer *m_jobserver; Campaign* m_currentCampaign; public: - CampaignManager() { } + CampaignManager() : m_jobserver(0) { } /** * Executes a user campaign */ bool runCampaign(Campaign* c) { + if (!m_jobserver) { + m_jobserver = new JobServer; + } m_currentCampaign = c; bool ret = c->run(); - m_jobserver.done(); + m_jobserver->done(); return ret; } /** @@ -49,21 +52,21 @@ public: * A Parameter set includes space for results. * @param exp A pointer to a ExperimentData set. */ - void addParam(ExperimentData* exp) { m_jobserver.addParam(exp); } + void addParam(ExperimentData* exp) { m_jobserver->addParam(exp); } /** * A user campaign can request a single result (blocking) from the queue. * @return Pointer to a parameter object with filled result data * @see addParam() */ - ExperimentData* getDone() { return m_jobserver.getDone(); } + ExperimentData* getDone() { return m_jobserver->getDone(); } /** * Signal, that there will not come any further parameter sets. */ - void noMoreParameters() { m_jobserver.setNoMoreExperiments(); } + void noMoreParameters() { m_jobserver->setNoMoreExperiments(); } /** * User campaign has finished. */ - void done() { m_jobserver.done(); } + void done() { m_jobserver->done(); } /** * Wait actively, until all experiments expired. */