|
Gaudi Framework, version v23r2 |
| Home | Generated: Thu Jun 28 2012 |
HistorySvc class definition. More...
#include <HistorySvc.h>


HistorySvc class definition.
Definition at line 46 of file HistorySvc.h.
typedef std::multimap<DHH,DataHistory*> HistorySvc::DataHistMap [private] |
Definition at line 101 of file HistorySvc.h.
typedef DataHistMap::const_iterator HistorySvc::DHMCitr [private] |
Definition at line 103 of file HistorySvc.h.
typedef DataHistMap::iterator HistorySvc::DHMitr [private] |
Definition at line 102 of file HistorySvc.h.
typedef IVersHistoryObj::PropertyList HistorySvc::PropertyList [private] |
Definition at line 99 of file HistorySvc.h.
| HistorySvc::HistorySvc | ( | const std::string & | name, |
| ISvcLocator * | svc | ||
| ) |
Definition at line 67 of file HistorySvc.cpp.
: base_class( name, svc ), m_isInitialized(false), m_dump(false), p_algCtxSvc(0), m_jobHistory(0), m_outputFile(""), m_incidentSvc(0), m_log(msgSvc(), name ) { declareProperty("Dump",m_dump); declareProperty("Activate", m_activate=true); declareProperty("OutputFile",m_outputFile); // hack to bring in environ vector<string> envtmp = System::getEnv(); envtmp.size(); // prevent icc remark #177: X declared but never referenced }
| HistorySvc::~HistorySvc | ( | ) | [virtual] |
Definition at line 89 of file HistorySvc.cpp.
{
delete m_jobHistory;
}
| StatusCode HistorySvc::captureState | ( | ) | [virtual] |
Get all the Algorithms
Get all the AlgTools
Get all the Services
Definition at line 192 of file HistorySvc.cpp.
{
if (m_jobHistory == 0) {
m_jobHistory = new JobHistory;
IJobOptionsSvc *jo;
if (service("JobOptionsSvc",jo).isFailure()) {
m_log << MSG::ERROR
<< "Could not get jobOptionsSvc - "
<< "not adding properties to JobHistory" << endmsg;
} else {
bool foundAppMgr(false);
std::vector<std::string> clients = jo->getClients();
std::vector<std::string>::const_iterator it;
std::vector<const Property*>::const_iterator itr;
for (it=clients.begin(); it!=clients.end(); ++it) {
if (*it == "ApplicationMgr") {
foundAppMgr = true;
}
const std::vector<const Property*> *props = jo->getProperties(*it);
for (itr=props->begin(); itr != props->end(); ++itr) {
m_jobHistory->addProperty( *it, *itr );
}
}
if (!foundAppMgr) {
IProperty *ap;
if (service("ApplicationMgr",ap).isFailure()) {
m_log << MSG::ERROR << "could not get the ApplicationMgr" << endmsg;
} else {
std::vector<Property*>::const_iterator itr2;
const std::vector<Property*> props = ap->getProperties();
for (itr2=props.begin(); itr2 != props.end(); ++itr2) {
m_jobHistory->addProperty( "ApplicationMgr", *itr2 );
}
}
}
}
}
StatusCode sc;
IAlgManager* algMgr = 0;
sc = Gaudi::svcLocator()->queryInterface( IAlgManager::interfaceID(),
pp_cast<void>(&algMgr) );
if (sc.isFailure()) {
m_log << MSG::ERROR << "Could not get AlgManager" << endmsg;
return StatusCode::FAILURE;
} else {
std::list<IAlgorithm*> algs;
algs = algMgr->getAlgorithms();
std::list<IAlgorithm*>::const_iterator itr;
for (itr=algs.begin(); itr!=algs.end(); ++itr) {
Algorithm* alg = dynamic_cast<Algorithm*> (*itr);
if (alg == 0) {
m_log << MSG::WARNING << "Algorithm " << (*itr)->name()
<< " does not inherit from Algorithm. Not registering it."
<< endmsg;
} else {
registerAlg( *alg ).ignore();
}
}
m_log << MSG::INFO;
m_log << "Registered " << algs.size() << " Algorithms" << endmsg;
}
m_isInitialized = true;
std::set<const IAlgTool*>::const_iterator itra;
for (itra = m_ialgtools.begin(); itra != m_ialgtools.end(); ++itra) {
(const_cast<IAlgTool*>(*itra))->addRef();
registerAlgTool(**itra).ignore();
}
m_log << MSG::INFO << "Registered " << m_algtools.size() << " AlgTools"
<< endmsg;
std::list<IService*> svcs = Gaudi::svcLocator()->getServices();
std::list<IService*>::const_iterator itrs;
for (itrs=svcs.begin(); itrs!=svcs.end(); ++itrs) {
(*itrs)->addRef();
registerSvc(**itrs).ignore();
}
m_log << MSG::INFO;
m_log << "Registered " << svcs.size() << " Services" << endmsg;
return StatusCode::SUCCESS;
}
| void HistorySvc::clearState | ( | ) | [private] |
Definition at line 107 of file HistorySvc.cpp.
{
m_algs.clear();
std::map<const Algorithm*, AlgorithmHistory*>::iterator algitr;
for (algitr = m_algmap.begin(); algitr != m_algmap.end(); ++algitr) {
AlgorithmHistory* h = algitr->second;
(const_cast<Algorithm*> (algitr->first))->release();
delete h;
}
m_algmap.clear();
m_ialgtools.clear();
m_algtools.clear();
std::map<const AlgTool*, AlgToolHistory*>::iterator atitr;
for (atitr=m_algtoolmap.begin(); atitr != m_algtoolmap.end(); ++atitr) {
(const_cast<AlgTool*> (atitr->first))->release();
delete atitr->second;
}
m_algtoolmap.clear();
m_svcs.clear();
std::map<const IService*, ServiceHistory*>::iterator svitr;
for (svitr = m_svcmap.begin(); svitr != m_svcmap.end(); ++svitr) {
(const_cast<IService*> (svitr->first))->release();
delete svitr->second;
}
m_svcmap.clear();
}
| DataHistory * HistorySvc::createDataHistoryObj | ( | const CLID & | id, |
| const std::string & | key, | ||
| const std::string & | store | ||
| ) | [virtual] |
Definition at line 586 of file HistorySvc.cpp.
{
if (!m_activate) return 0;
AlgorithmHistory *algHist;
IAlgorithm* ialg = getCurrentIAlg();
if (ialg == 0) {
#ifndef NDEBUG
m_log << MSG::DEBUG
<< "Could not discover current Algorithm:" << endl
<< " object CLID: " << id << " key: \"" << key
<< "\"" << endmsg;
#endif
algHist = 0;
} else {
Algorithm* alg = dynamic_cast<Algorithm*>(ialg);
if (alg != 0) {
algHist = getAlgHistory( *alg );
} else {
m_log << MSG::WARNING
<< "Could not extract concerete Algorithm:"
<< endl
<< " object CLID: " << id << " key: \"" << key
<< "\"" << endmsg;
algHist = 0;
}
}
DataHistory *hist = new DataHistory(id, key, algHist);
return hist;
}
| std::string HistorySvc::dumpProp | ( | const Property * | prop, |
| const bool | isXML = false, |
||
| int | indent = 0 |
||
| ) | const [private] |
Definition at line 958 of file HistorySvc.cpp.
{
std::ostringstream ost;
if (isXML) {
while (ind > 0) {
ost << " ";
ind --;
}
ost << "<PROPERTY name=\"" << prop->name()
<< "\" value=\"" << HistoryObj::convert_string(prop->toString())
<< "\" documentation=\"" << HistoryObj::convert_string(prop->documentation())
<< "\">";
} else {
prop->fillStream(ost);
}
return ost.str();
}
| void HistorySvc::dumpProperties | ( | std::ofstream & | ofs ) | const [private] |
Definition at line 519 of file HistorySvc.cpp.
{
ofs << "GLOBAL" << std::endl;
const JobHistory::PropertyPairList props = m_jobHistory->propertyPairs();
JobHistory::PropertyPairList::const_iterator itrj;
for (itrj=props.begin(); itrj != props.end(); ++itrj) {
std::string client = itrj->first;
const Property* prp = itrj->second;
ofs << client << " " << dumpProp(prp) << std::endl;
}
ofs << std::endl << "SERVICES" << std::endl;
std::map<const IService*, ServiceHistory*>::const_iterator itr_s;
for (itr_s=m_svcmap.begin(); itr_s != m_svcmap.end(); ++itr_s) {
const IService* svc = itr_s->first;
dumpProperties( *svc, ofs );
}
ofs << std::endl << "ALGORITHMS" << std::endl;
std::map<const Algorithm*, AlgorithmHistory*>::const_iterator itr;
for (itr=m_algmap.begin(); itr != m_algmap.end(); ++itr) {
const Algorithm* alg = itr->first;
dumpProperties( *alg, ofs );
}
ofs << std::endl << "ALGTOOLS" << std::endl;
std::map<const AlgTool*, AlgToolHistory*>::const_iterator itr_a;
for (itr_a=m_algtoolmap.begin(); itr_a != m_algtoolmap.end(); ++itr_a) {
const AlgTool* alg = itr_a->first;
dumpProperties( *alg, ofs );
}
}
| void HistorySvc::dumpProperties | ( | const IService & | svc, |
| std::ofstream & | ofs | ||
| ) | const [private] |
Definition at line 802 of file HistorySvc.cpp.
{
ServiceHistory *hist = getServiceHistory( svc );
if (hist == 0) {
return;
}
PropertyList::const_iterator itr;
for (itr=hist->properties().begin(); itr != hist->properties().end();++itr) {
ofs << svc.name() << " " << dumpProp(*itr) << std::endl;
}
}
| void HistorySvc::dumpProperties | ( | const Algorithm & | alg, |
| std::ofstream & | ofs | ||
| ) | const [private] |
Definition at line 399 of file HistorySvc.cpp.
{
AlgorithmHistory *hist = getAlgHistory( alg );
if (hist == 0) {
return;
}
PropertyList::const_iterator itr;
for (itr=hist->properties().begin(); itr!=hist->properties().end(); ++itr) {
ofs << alg.name() << " " << dumpProp(*itr) << std::endl;
}
}
| void HistorySvc::dumpProperties | ( | const IAlgTool & | alg, |
| std::ofstream & | ofs | ||
| ) | const [private] |
Definition at line 891 of file HistorySvc.cpp.
{
AlgToolHistory *hist = getAlgToolHistory( alg );
if (hist == 0) {
return;
}
PropertyList::const_iterator itr;
for (itr=hist->properties().begin(); itr!=hist->properties().end(); ++itr) {
ofs << alg.name() << " " << dumpProp(*itr) << std::endl;
}
}
| void HistorySvc::dumpState | ( | const INamedInterface * | in, |
| std::ofstream & | ofs | ||
| ) | const [private] |
Definition at line 1070 of file HistorySvc.cpp.
{
HistoryObj *hist(0);
IVersHistoryObj *vhist(0);
const IService* is(0);
const Algorithm* ia(0);
const IAlgTool* it(0);
if ( (is=dynamic_cast<const IService*>(in)) != 0) {
// m_log << MSG::DEBUG << in->name() << " is Service" << endmsg;
hist = getServiceHistory( *is );
} else if ( (ia = dynamic_cast<const Algorithm*>(in)) != 0 ) {
// m_log << MSG::DEBUG << in->name() << " is Alg" << endmsg;
hist = getAlgHistory( *ia );
} else if ( (it = dynamic_cast<const IAlgTool*>(in)) != 0 ) {
// m_log << MSG::DEBUG << in->name() << " is AlgTool" << endmsg;
hist = getAlgToolHistory( *it );
} else {
m_log << MSG::ERROR
<< "Could not dcast interface to accepted History Obj type for "
<< in->name() << endmsg;
return;
}
if (hist == 0) { return; }
vhist = dynamic_cast<IVersHistoryObj*>(hist);
if (!vhist) {
warning() << "Failed to dynamic cast IVersHistoryObj for " << in->name() << endmsg;
return;
}
if (m_outputFileTypeXML) {
hist->dump(ofs,true);
} else {
ofs << ">> " << vhist->name() << endl << *hist << endl;
}
}
| void HistorySvc::dumpState | ( | std::ofstream & | ofs ) | const [private] |
Definition at line 978 of file HistorySvc.cpp.
{
if(m_outputFileTypeXML) {
//xml header
ofs << "<?xml version=\"1.0\" ?> " << std::endl;
ofs << "<!--Test-xml-->" << std::endl;
ofs << "<SETUP>" << std::endl;
ofs << " <GLOBAL>" << std::endl;
} else {
ofs << "GLOBAL" << std::endl;
}
const JobHistory::PropertyPairList props = m_jobHistory->propertyPairs();
JobHistory::PropertyPairList::const_iterator itrj;
std::string client_currently_open = "start";
for (itrj=props.begin(); itrj != props.end(); ++itrj) {
// client is the name of the component of the current property
std::string client = itrj->first;
const Property* prp = itrj->second;
if (m_outputFileTypeXML) {
if (client != client_currently_open) {
if(client_currently_open!="start") ofs << " </COMPONENT>" << endl;
ofs << " <COMPONENT name=\""
<< client << "\" class=\"undefined\">" << std::endl;
}
} else {
ofs << client << " ";
}
ofs << dumpProp(prp,m_outputFileTypeXML,6) << endl;
client_currently_open = client;
}
if (m_outputFileTypeXML)
ofs << " </COMPONENT>" << endl;
if(m_outputFileTypeXML) {
ofs << "</GLOBAL>" << endl << "<SERVICES>" << endl;
} else {
ofs << "SERVICES" << std::endl;
}
std::map<const IService*, ServiceHistory*>::const_iterator itr_s;
for (itr_s=m_svcmap.begin(); itr_s != m_svcmap.end(); ++itr_s) {
const IService* svc = itr_s->first;
dumpState(svc,ofs);
}
if(m_outputFileTypeXML) {
ofs << "</SERVICES>" << endl << "<ALGORITHMS> " << endl;
} else {
ofs << "ALGORITHMS" << std::endl;
}
std::map<const Algorithm*, AlgorithmHistory*>::const_iterator itr;
for (itr=m_algmap.begin(); itr != m_algmap.end(); ++itr) {
const Algorithm* alg = itr->first;
dumpState(alg,ofs);
}
if(m_outputFileTypeXML) {
ofs << "</ALGORITHMS>" << endl << "<ALGTOOLS> " << endl;
} else {
ofs << "ALGTOOLS" << std::endl;
}
std::map<const AlgTool*, AlgToolHistory*>::const_iterator itr_a;
for (itr_a=m_algtoolmap.begin(); itr_a != m_algtoolmap.end(); ++itr_a) {
const AlgTool* alg = itr_a->first;
dumpState( alg, ofs);
}
if(m_outputFileTypeXML) {
ofs << "</ALGTOOLS>" << endl << "</SETUP>" << endl;
}
}
| StatusCode HistorySvc::finalize | ( | ) | [virtual] |
Reimplemented from Service.
Definition at line 327 of file HistorySvc.cpp.
{
clearState();
StatusCode status = Service::finalize();
if ( status.isSuccess() )
m_log << MSG::INFO << "Service finalised successfully" << endmsg;
return status;
}
| void HistorySvc::getAlgHistory | ( | std::set< AlgorithmHistory * > & | algs ) | const [virtual] |
Definition at line 435 of file HistorySvc.cpp.
{
set<const Algorithm*>::const_iterator itr;
for (itr=m_algs.begin(); itr!=m_algs.end(); ++itr) {
AlgorithmHistory *ah = m_algmap.find(*itr)->second;
algs.insert(ah);
}
}
| AlgorithmHistory * HistorySvc::getAlgHistory | ( | const Algorithm & | alg ) | const [virtual] |
Definition at line 416 of file HistorySvc.cpp.
{
const Algorithm *palg = &alg;
set<const Algorithm*>::const_iterator itr = m_algs.find(palg);
if ( itr == m_algs.end() ) {
m_log << MSG::WARNING << "Algorithm " << alg.name() << " not registered"
<< endmsg;
return 0;
}
map<const Algorithm*, AlgorithmHistory*>::const_iterator itr2;
itr2 = m_algmap.find( *itr );
return ( itr2->second );
}
| AlgToolHistory * HistorySvc::getAlgToolHistory | ( | const IAlgTool & | alg ) | const [virtual] |
Definition at line 909 of file HistorySvc.cpp.
{
const AlgTool *palg = dynamic_cast<const AlgTool*>(&alg);
set<const AlgTool*>::const_iterator itr = m_algtools.find(palg);
if ( itr == m_algtools.end() ) {
m_log << MSG::WARNING << "AlgTool " << alg.name() << " not registered"
<< endmsg;
return 0;
}
map<const AlgTool*, AlgToolHistory*>::const_iterator itr2;
itr2 = m_algtoolmap.find( *itr );
return ( itr2->second );
}
| void HistorySvc::getAlgToolHistory | ( | std::set< AlgToolHistory * > & | algs ) | const [virtual] |
Definition at line 929 of file HistorySvc.cpp.
{
set<const AlgTool*>::const_iterator itr;
for (itr=m_algtools.begin(); itr!=m_algtools.end(); ++itr) {
AlgToolHistory *ah = m_algtoolmap.find(*itr)->second;
algs.insert(ah);
}
}
| IAlgorithm * HistorySvc::getCurrentIAlg | ( | ) | const [private] |
Definition at line 571 of file HistorySvc.cpp.
{
if (p_algCtxSvc == 0) {
m_log << MSG::WARNING << "trying to create DataHistoryObj before "
<< "HistorySvc has been initialized" << endmsg;
return 0;
} else {
return p_algCtxSvc->currentAlg();
}
}
| DataHistory * HistorySvc::getDataHistory | ( | const CLID & | id, |
| const std::string & | key, | ||
| const std::string & | store | ||
| ) | const [virtual] |
Definition at line 669 of file HistorySvc.cpp.
{
DHH dhh(id,key);
pair<DHMCitr,DHMCitr> mitr = m_datMap.equal_range(dhh);
if(mitr.first == mitr.second) {
return 0;
}
return mitr.first->second;
}
| int HistorySvc::getDataHistory | ( | const CLID & | id, |
| const std::string & | key, | ||
| const std::string & | storeName, | ||
| std::list< DataHistory * > & | dhlist | ||
| ) | const [virtual] |
Definition at line 687 of file HistorySvc.cpp.
{
DHH dhh(id,key);
int n(0);
pair<DHMCitr,DHMCitr> mitr = m_datMap.equal_range(dhh);
for (DHMCitr itr=mitr.first; itr != mitr.second; ++itr) {
dhlist.push_back(itr->second);
n++;
}
return n;
}
| JobHistory * HistorySvc::getJobHistory | ( | ) | const [virtual] |
Definition at line 563 of file HistorySvc.cpp.
{
return m_jobHistory;
}
| ServiceHistory * HistorySvc::getServiceHistory | ( | const IService & | svc ) | const [virtual] |
Definition at line 745 of file HistorySvc.cpp.
{
const IService *psvc = &svc;
map<const IService*, ServiceHistory*>::const_iterator itr =
m_svcmap.find(psvc);
if ( itr == m_svcmap.end() ) {
m_log << MSG::WARNING << "Service " << svc.name() << " not registered"
<< endmsg;
return 0;
}
return ( itr->second );
}
| void HistorySvc::getServiceHistory | ( | std::set< ServiceHistory * > & | svcs ) | const [virtual] |
Definition at line 762 of file HistorySvc.cpp.
{
set<const IService*>::const_iterator itr;
for (itr=m_svcs.begin(); itr!=m_svcs.end(); ++itr) {
ServiceHistory *sh = m_svcmap.find( *itr )->second;
svcs.insert(sh);
}
}
| void HistorySvc::handle | ( | const Incident & | inc ) | [virtual] |
Definition at line 943 of file HistorySvc.cpp.
{
if (incident.type() == IncidentType::BeginEvent) {
if (captureState().isFailure()) {
m_log << MSG::WARNING << "Error capturing state." << endl
<< "Will try again at next BeginEvent incident" << endmsg;
}
}
}
| StatusCode HistorySvc::initialize | ( | ) | [virtual] |
Reimplemented from Service.
Definition at line 138 of file HistorySvc.cpp.
{
StatusCode status = Service::initialize();
m_log.setLevel( m_outputLevel.value() );
if (status.isFailure()) {
#ifndef NDEBUG
m_log << MSG::DEBUG << "Failed to initialize the base class (Service)"
<< endmsg;
#endif
return status;
}
#ifndef NDEBUG
m_log << MSG::DEBUG << "Initializing HistorySvc" << endmsg;
#endif
if (!m_activate) return StatusCode::SUCCESS;
static const bool CREATEIF(true);
if ( service("AlgContextSvc",p_algCtxSvc,CREATEIF).isFailure() ) {
m_log << MSG::ERROR << "unable to get the AlgContextSvc" << endmsg;
return StatusCode::FAILURE;
}
if (service("IncidentSvc", m_incidentSvc, CREATEIF).isFailure()) {
m_log << MSG::ERROR << "unable to get the IncidentSvc" << endmsg;
return StatusCode::FAILURE;
}
// create a weak dependency on the ToolSvc, so that it doesn't get deleted
// before we're done with it in finalize
m_toolSvc = serviceLocator()->service("ToolSvc");
if (! m_toolSvc) {
m_log << MSG::ERROR << "could not retrieve the ToolSvc handle !"
<< endmsg;
return StatusCode::FAILURE;
}
// add listener to be triggered by first BeginEvent with low priority
// so it gets called first
const bool rethrow = false;
const bool oneShot = true; // make the listener called only once
m_incidentSvc->addListener(this,IncidentType::BeginEvent,
std::numeric_limits<long>::min(),rethrow,oneShot);
m_isInitialized = true;
return StatusCode::SUCCESS;
}
| StatusCode HistorySvc::listProperties | ( | const IAlgTool & | alg ) | const [virtual] |
Definition at line 868 of file HistorySvc.cpp.
{
m_log << MSG::INFO << "Dumping properties for " << alg.name() << endl;
AlgToolHistory *hist = getAlgToolHistory( alg );
if (hist == 0) {
return StatusCode::FAILURE;
}
ostringstream ost;
ost << *hist;
std::string str = ost.str();
m_log << MSG::INFO << alg.name() << " --> " << endl << str << endmsg;
return StatusCode::SUCCESS;
}
| StatusCode HistorySvc::listProperties | ( | ) | const [virtual] |
Definition at line 460 of file HistorySvc.cpp.
{
m_log << MSG::INFO;
m_log.setColor(MSG::CYAN);
m_log << "Dumping properties for all Algorithms (" << m_algmap.size()
<< ")" << endmsg;
std::map<const Algorithm*, AlgorithmHistory*>::const_iterator itr;
for (itr=m_algmap.begin(); itr != m_algmap.end(); ++itr) {
const Algorithm* alg = itr->first;
listProperties( *alg ).ignore();
}
m_log << MSG::INFO;
m_log.setColor(MSG::CYAN);
m_log << "Dumping properties for all AlgTools (" << m_algtoolmap.size()
<< ")" << endmsg;
std::map<const AlgTool*, AlgToolHistory*>::const_iterator itr_a;
for (itr_a=m_algtoolmap.begin(); itr_a != m_algtoolmap.end(); ++itr_a) {
m_log << MSG::DEBUG << " --> " << itr_a->second->algtool_name() << endmsg;
const AlgTool* alg = itr_a->first;
listProperties( *alg ).ignore();
}
m_log << MSG::INFO;
m_log.setColor(MSG::CYAN);
m_log << "Dumping properties for all Services (" << m_svcmap.size()
<< ")" << endmsg;
std::map<const IService*, ServiceHistory*>::const_iterator itr_s;
for (itr_s=m_svcmap.begin(); itr_s != m_svcmap.end(); ++itr_s) {
const IService* svc = itr_s->first;
listProperties( *svc ).ignore();
}
m_log << MSG::INFO;
m_log.setColor(MSG::CYAN);
m_log << "Dumping properties for Job";
m_log.resetColor();
ostringstream ost;
ost << *m_jobHistory;
std::string str = ost.str();
m_log << std::endl << str << endmsg;
return StatusCode(StatusCode::SUCCESS,true);
}
| StatusCode HistorySvc::listProperties | ( | const IService & | svc ) | const [virtual] |
Definition at line 776 of file HistorySvc.cpp.
{
m_log << MSG::INFO << "Dumping properties for " << svc.name() << endl;
ServiceHistory *hist = getServiceHistory( svc );
if (hist == 0) {
return StatusCode::FAILURE;
}
ostringstream ost;
ost << *hist;
std::string str = ost.str();
m_log << MSG::INFO << svc.name() << " --> " << endl << str << endmsg;
return StatusCode(StatusCode::SUCCESS,true);
}
| StatusCode HistorySvc::listProperties | ( | const Algorithm & | alg ) | const [virtual] |
Definition at line 376 of file HistorySvc.cpp.
{
m_log << MSG::INFO << "Dumping properties for " << alg.name() << endl;
AlgorithmHistory *hist = getAlgHistory( alg );
if (hist == 0) {
return StatusCode::FAILURE;
}
ostringstream ost;
ost << *hist;
std::string str = ost.str();
m_log << MSG::INFO << alg.name() << " --> " << endl << str << endmsg;
return StatusCode(StatusCode::SUCCESS,true);
}
| StatusCode HistorySvc::registerAlg | ( | const Algorithm & | alg ) | [virtual] |
Definition at line 347 of file HistorySvc.cpp.
{
JobHistory *job = getJobHistory();
if (m_algmap.find(&alg) != m_algmap.end()) {
m_log << MSG::WARNING << "Algorithm " << alg.name()
<< " already registered with HistorySvc" << endmsg;
return StatusCode::SUCCESS;
}
(const_cast<Algorithm*>(&alg))->addRef();
m_algs.insert(&alg);
AlgorithmHistory *algHist = new AlgorithmHistory(alg, job);
m_algmap[&alg] = algHist;
#ifndef NDEBUG
m_log << MSG::DEBUG << "Registering algorithm: ";
m_log.setColor(MSG::CYAN);
m_log << alg.name() << endmsg;
m_log.resetColor();
#endif
return StatusCode(StatusCode::SUCCESS,true);
}
| StatusCode HistorySvc::registerAlgTool | ( | const IAlgTool & | ialg ) | [virtual] |
Definition at line 820 of file HistorySvc.cpp.
{
if (! m_isInitialized) {
if (p_algCtxSvc == 0) {
if ( service("AlgContextSvc",p_algCtxSvc,true).isFailure() ) {
m_log << MSG::ERROR << "unable to get the AlgContextSvc" << endmsg;
return StatusCode::FAILURE;
}
}
m_ialgtools.insert(&ialg);
return StatusCode::SUCCESS;
}
const AlgTool *alg = dynamic_cast<const AlgTool*>( &ialg );
if ( alg == 0 ) {
m_log << MSG::ERROR << "Could not dcast IAlgTool \"" << ialg.name()
<< "\" to an AlgTool" << endmsg;
return StatusCode::FAILURE;
}
if (m_algtools.find(alg) != m_algtools.end()) {
m_log << MSG::WARNING << "AlgTool " << ialg.name()
<< " already registered in HistorySvc" << endmsg;
return StatusCode::SUCCESS;
}
m_algtools.insert(alg);
(const_cast<AlgTool*>(alg))->addRef();
const JobHistory *job = getJobHistory();
AlgToolHistory *algHist = new AlgToolHistory(*alg, job);
m_algtoolmap[alg] = algHist;
#ifndef NDEBUG
m_log << MSG::DEBUG << "Registering algtool: ";
m_log.setColor(MSG::CYAN);
m_log << alg->name() << endmsg;
m_log.resetColor();
#endif
return StatusCode::SUCCESS;
}
| StatusCode HistorySvc::registerDataHistory | ( | const CLID & | id, |
| const std::string & | key, | ||
| const std::string & | store | ||
| ) | [virtual] |
Definition at line 625 of file HistorySvc.cpp.
{
DHH dhh(id,key);
pair<DHMitr,DHMitr> mitr = m_datMap.equal_range(dhh);
if (mitr.first == mitr.second) {
// not in the map
DataHistory *dh = createDataHistoryObj(id,key,storeName);
m_datMap.insert(pair<DHH,DataHistory*>(dhh,dh));
} else {
// found at least one
bool match(false);
std::string algName;
IAlgorithm *ialg = getCurrentIAlg();
if (ialg != 0) {
algName = ialg->name();
} else {
algName = "UNKNOWN";
}
for (DHMitr itr = mitr.first; itr != mitr.second; ++itr) {
DataHistory *dh = itr->second;
if (dh->algorithmHistory()->algorithm_name() == algName) {
match = true;
break;
}
}
if (! match) {
DataHistory *dh = createDataHistoryObj(id,key,storeName);
m_datMap.insert(pair<DHH,DataHistory*>(dhh,dh));
}
}
return StatusCode::SUCCESS;
}
| StatusCode HistorySvc::registerJob | ( | ) | [virtual] |
Definition at line 449 of file HistorySvc.cpp.
{
return StatusCode(StatusCode::SUCCESS,true);
}
| StatusCode HistorySvc::registerSvc | ( | const IService & | svc ) | [virtual] |
Definition at line 709 of file HistorySvc.cpp.
{
if ( svc.name() == "HistoryStore" ) {
// m_log << MSG::WARNING << "not registering store" << endmsg;
return StatusCode(StatusCode::SUCCESS,true);
}
JobHistory *job = getJobHistory();
const IService* psvc = &svc;
map<const IService*, ServiceHistory*>::const_iterator itr =
m_svcmap.find(psvc);
if (itr == m_svcmap.end()) {
#ifndef NDEBUG
m_log << MSG::DEBUG << "Registering Service: ";
m_log.setColor(MSG::CYAN);
m_log << svc.name() << endmsg;
#endif
m_svcs.insert(psvc);
ServiceHistory *svcHist = new ServiceHistory(&svc, job);
m_svcmap[psvc] = svcHist;
(const_cast<IService*>(psvc))->addRef();
}
m_log.resetColor();
return StatusCode(StatusCode::SUCCESS,true);
}
| StatusCode HistorySvc::reinitialize | ( | ) | [virtual] |
Reimplemented from Service.
Definition at line 95 of file HistorySvc.cpp.
{
clearState();
m_state = Gaudi::StateMachine::OFFLINE;
return initialize();
}
| StatusCode HistorySvc::stop | ( | ) | [virtual] |
Reimplemented from Service.
Definition at line 296 of file HistorySvc.cpp.
{
if (!m_activate) return StatusCode::SUCCESS;
if (m_dump) {
listProperties().ignore();
}
if (m_outputFile != "") {
std::ofstream ofs;
ofs.open(m_outputFile.c_str());
if (!ofs) {
m_log << MSG::ERROR << "Unable to open output file \"m_outputFile\""
<< endmsg;
} else {
// dumpProperties(ofs);
dumpState(ofs);
ofs.close();
}
}
clearState();
return StatusCode::SUCCESS;
}
friend class SvcFactory< HistorySvc > [friend] |
Definition at line 108 of file HistorySvc.h.
bool HistorySvc::m_activate [private] |
Definition at line 112 of file HistorySvc.h.
std::map<const Algorithm*, AlgorithmHistory*> HistorySvc::m_algmap [private] |
Definition at line 117 of file HistorySvc.h.
std::set<const Algorithm*> HistorySvc::m_algs [private] |
Definition at line 116 of file HistorySvc.h.
std::map<const AlgTool*, AlgToolHistory*> HistorySvc::m_algtoolmap [private] |
Definition at line 121 of file HistorySvc.h.
std::set<const AlgTool*> HistorySvc::m_algtools [private] |
Definition at line 120 of file HistorySvc.h.
std::multimap<DHH, DataHistory*> HistorySvc::m_datMap [private] |
Definition at line 126 of file HistorySvc.h.
bool HistorySvc::m_dump [private] |
Definition at line 111 of file HistorySvc.h.
std::set<const IAlgTool*> HistorySvc::m_ialgtools [private] |
Definition at line 119 of file HistorySvc.h.
IIncidentSvc* HistorySvc::m_incidentSvc [private] |
Definition at line 147 of file HistorySvc.h.
bool HistorySvc::m_isInitialized [private] |
Definition at line 110 of file HistorySvc.h.
JobHistory* HistorySvc::m_jobHistory [private] |
Definition at line 130 of file HistorySvc.h.
MsgStream HistorySvc::m_log [mutable, private] |
Definition at line 150 of file HistorySvc.h.
std::string HistorySvc::m_outputFile [private] |
Definition at line 132 of file HistorySvc.h.
bool HistorySvc::m_outputFileTypeXML [private] |
Definition at line 151 of file HistorySvc.h.
std::map<const IService*, ServiceHistory*> HistorySvc::m_svcmap [private] |
Definition at line 124 of file HistorySvc.h.
std::set<const IService*> HistorySvc::m_svcs [private] |
Definition at line 123 of file HistorySvc.h.
SmartIF<IToolSvc> HistorySvc::m_toolSvc [private] |
Definition at line 148 of file HistorySvc.h.
IAlgContextSvc* HistorySvc::p_algCtxSvc [private] |
Definition at line 114 of file HistorySvc.h.