void YConsoleManager::onExecutableFailed(void* which) { Executable* exe = (Executable*) which; if(config.find("module_failure").asString() == "prompt") cout<<exe->getCommand()<<" from "<<exe->getHost()<<" is failed!"<<endl; if(config.find("module_failure").asString() == "recover") { cout<<endl<<exe->getCommand()<<" from "<<exe->getHost()<<" is failed! (restarting...)"<<endl; exe->start(); } if(config.find("module_failure").asString() == "terminate") { cout<<endl<<exe->getCommand()<<" from "<<exe->getHost()<<" is failed! (terminating application...)"<<endl; bShouldRun = false; stop(); reportErrors(); } }
void SafeManager::onExecutableFailed(void* which) { WAIT_SEMAPHOR(); ErrorLogger* logger = ErrorLogger::Instance(); Executable* exe = static_cast<Executable*>(which); if(exe) { if(m_pConfig->find("module_failure").asString() == "prompt") { OSTRINGSTREAM err; err<<exe->getCommand()<<" from "<<exe->getHost()<<" is failed! [id:"<<exe->getID()<<"]"; logger->addError(err); if(eventReceiver && exe) eventReceiver->onModStop(exe->getID()); } if(m_pConfig->find("module_failure").asString() == "recover") { OSTRINGSTREAM err; err<<exe->getCommand()<<" from "<<exe->getHost()<<" is failed! [id:"<<exe->getID()<<"] (restarting...)"; logger->addError(err); exe->start(); } if(m_pConfig->find("module_failure").asString() == "terminate") { OSTRINGSTREAM err; err<<exe->getCommand()<<" from "<<exe->getHost()<<" is failed! [id:"<<exe->getID()<<"] (terminating...)"; logger->addError(err); Manager::stop(); } } if(eventReceiver) eventReceiver->onError(); POST_SEMAPHOR(); }