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
This commit is contained in:
hsc
2012-11-10 16:14:06 +00:00
parent 4957cfb71b
commit 86ba9cb377

View File

@ -20,18 +20,21 @@ namespace fail {
*/ */
class CampaignManager { class CampaignManager {
private: private:
JobServer m_jobserver; JobServer *m_jobserver;
Campaign* m_currentCampaign; Campaign* m_currentCampaign;
public: public:
CampaignManager() { } CampaignManager() : m_jobserver(0) { }
/** /**
* Executes a user campaign * Executes a user campaign
*/ */
bool runCampaign(Campaign* c) bool runCampaign(Campaign* c)
{ {
if (!m_jobserver) {
m_jobserver = new JobServer;
}
m_currentCampaign = c; m_currentCampaign = c;
bool ret = c->run(); bool ret = c->run();
m_jobserver.done(); m_jobserver->done();
return ret; return ret;
} }
/** /**
@ -49,21 +52,21 @@ public:
* A Parameter set includes space for results. * A Parameter set includes space for results.
* @param exp A pointer to a ExperimentData set. * @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. * A user campaign can request a single result (blocking) from the queue.
* @return Pointer to a parameter object with filled result data * @return Pointer to a parameter object with filled result data
* @see addParam() * @see addParam()
*/ */
ExperimentData* getDone() { return m_jobserver.getDone(); } ExperimentData* getDone() { return m_jobserver->getDone(); }
/** /**
* Signal, that there will not come any further parameter sets. * Signal, that there will not come any further parameter sets.
*/ */
void noMoreParameters() { m_jobserver.setNoMoreExperiments(); } void noMoreParameters() { m_jobserver->setNoMoreExperiments(); }
/** /**
* User campaign has finished. * User campaign has finished.
*/ */
void done() { m_jobserver.done(); } void done() { m_jobserver->done(); }
/** /**
* Wait actively, until all experiments expired. * Wait actively, until all experiments expired.
*/ */