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:
@ -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.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user