X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=example%2Fdiameter%2Flauncher%2FLauncher.cpp;h=d3a937305f661d0e1549dfce2a00b760475c4018;hb=5a6cba5fde2b2f538a7515f8293cc0a8d9589dfa;hp=0fe55a042684c923842120b80ad8d2d3514c6063;hpb=3753f8bd8025131cc0b62da8942daefc376c1c46;p=anna.git diff --git a/example/diameter/launcher/Launcher.cpp b/example/diameter/launcher/Launcher.cpp index 0fe55a0..d3a9373 100644 --- a/example/diameter/launcher/Launcher.cpp +++ b/example/diameter/launcher/Launcher.cpp @@ -150,16 +150,16 @@ Launcher::Launcher() : anna::comm::Application("launcher", "DiameterLauncher", " } -std::string Launcher::getSignalUSR2InputFile() const throw() { +std::string Launcher::getSignalUSR2InputFile() const { return (getInitialWorkingDirectory() + "/" + SIGUSR2_TASKS_INPUT_FILENAME); } -std::string Launcher::getSignalUSR2OutputFile() const throw() { +std::string Launcher::getSignalUSR2OutputFile() const { return (getInitialWorkingDirectory() + "/" + SIGUSR2_TASKS_OUTPUT_FILENAME); } -void Launcher::servicesFromXML(const anna::xml::Node* servicesNode, bool bindResources) throw(anna::RuntimeException) { +void Launcher::servicesFromXML(const anna::xml::Node* servicesNode, bool bindResources) noexcept(false) { CommandLine& cl(anna::CommandLine::instantiate()); bool allLogsDisabled = cl.exists("disableLogs"); @@ -437,7 +437,7 @@ void Launcher::servicesFromXML(const anna::xml::Node* servicesNode, bool bindRes } -void Launcher::loadServicesFromFile(const std::string & xmlPathFile, bool bindResources) throw(anna::RuntimeException) { +void Launcher::loadServicesFromFile(const std::string & xmlPathFile, bool bindResources) noexcept(false) { if (xmlPathFile == "null" || xmlPathFile == "") { LOGWARNING(anna::Logger::warning("Ignoring services configuration on start: empty or 'null' string provided as xml file. Use management interface (operation 'services') in order to add services", ANNA_FILE_LOCATION)); @@ -478,7 +478,7 @@ void Launcher::loadServicesFromFile(const std::string & xmlPathFile, bool bindRe } -void Launcher::loadServicesFromXMLString(const std::string & xmlString, bool bindResources) throw(anna::RuntimeException) { +void Launcher::loadServicesFromXMLString(const std::string & xmlString, bool bindResources) noexcept(false) { anna::xml::DocumentMemory xmlDocument; // has private copy constructor defined but not implemented to avoid inhenrit/copy (is very heavy) anna::xml::DTDMemory xmlDTD; @@ -506,7 +506,7 @@ void Launcher::loadServicesFromXMLString(const std::string & xmlString, bool bin } -anna::Millisecond Launcher::checkTimeMeasure(const std::string ¶meter, const std::string &value) throw(anna::RuntimeException) { +anna::Millisecond Launcher::checkTimeMeasure(const std::string ¶meter, const std::string &value) noexcept(false) { if(anna::functions::isLike("^[0-9]+$", value)) { // para incluir numeros decimales: ^[0-9]+(.[0-9]+)?$ int msecs; @@ -547,7 +547,7 @@ anna::Millisecond Launcher::checkTimeMeasure(const std::string ¶meter, const throw RuntimeException(msg, ANNA_FILE_LOCATION); } -bool Launcher::setWorkingNode(const std::string &name) throw() { +bool Launcher::setWorkingNode(const std::string &name) { bool result = false; anna::diameter::comm::OriginHostManager &ohm = anna::diameter::comm::OriginHostManager::instantiate(); @@ -561,7 +561,7 @@ bool Launcher::setWorkingNode(const std::string &name) throw() { return result; } -anna::diameter::comm::OriginHost *Launcher::getOriginHost(const std::string &name) const throw(anna::RuntimeException) { +anna::diameter::comm::OriginHost *Launcher::getOriginHost(const std::string &name) const noexcept(false) { anna::diameter::comm::OriginHostManager &ohm = anna::diameter::comm::OriginHostManager::instantiate(); anna::diameter::comm::OriginHost *result = ohm.getOriginHost(name); @@ -571,39 +571,39 @@ anna::diameter::comm::OriginHost *Launcher::getOriginHost(const std::string &nam return result; } -anna::diameter::comm::OriginHost *Launcher::getOriginHost(const anna::diameter::codec::Message &message) const throw(anna::RuntimeException) { +anna::diameter::comm::OriginHost *Launcher::getOriginHost(const anna::diameter::codec::Message &message) const noexcept(false) { std::string originHost = message.getAvp(anna::diameter::helpers::base::AVPID__Origin_Host)->getDiameterIdentity()->getValue(); return (getOriginHost(originHost)); } -anna::diameter::comm::OriginHost *Launcher::getOriginHost(const anna::DataBlock &messageDataBlock) const throw(anna::RuntimeException) { +anna::diameter::comm::OriginHost *Launcher::getOriginHost(const anna::DataBlock &messageDataBlock) const noexcept(false) { std::string originHost = anna::diameter::helpers::base::functions::getOriginHost(messageDataBlock); return (getOriginHost(originHost)); } -bool Launcher::uniqueOriginHost() const throw() { +bool Launcher::uniqueOriginHost() const { anna::diameter::comm::OriginHostManager &ohm = anna::diameter::comm::OriginHostManager::instantiate(); return (ohm.size() == 1); } -void Launcher::updateOperatedOriginHostWithMessage(const anna::diameter::codec::Message &message) throw(anna::RuntimeException) { +void Launcher::updateOperatedOriginHostWithMessage(const anna::diameter::codec::Message &message) noexcept(false) { if (!a_operatedHost) // priority for working node by mean 'node' operation a_operatedHost = getOriginHost(message); } -void Launcher::updateOperatedOriginHostWithMessage(const anna::DataBlock &messageDataBlock) throw(anna::RuntimeException) { +void Launcher::updateOperatedOriginHostWithMessage(const anna::DataBlock &messageDataBlock) noexcept(false) { if (!a_operatedHost) // priority for working node by mean 'node' operation a_operatedHost = getOriginHost(messageDataBlock); } -anna::diameter::comm::OriginHost *Launcher::getWorkingNode() const throw(anna::RuntimeException) { +anna::diameter::comm::OriginHost *Launcher::getWorkingNode() const noexcept(false) { if(!a_workingNode) throw anna::RuntimeException("Working node not identified (try to load services)", ANNA_FILE_LOCATION); return a_workingNode; } -anna::diameter::comm::OriginHost *Launcher::getOperatedHost() const throw(anna::RuntimeException) { +anna::diameter::comm::OriginHost *Launcher::getOperatedHost() const noexcept(false) { if(!a_operatedHost) throw anna::RuntimeException("Node not identified (try to force a specific Origin-Host with 'node' operation)", ANNA_FILE_LOCATION); @@ -614,26 +614,26 @@ void Launcher::setOperatedHost(anna::diameter::comm::OriginHost *op) { a_operatedHost = op; } -MyDiameterEntity *Launcher::getOperatedEntity() const throw(anna::RuntimeException) { +MyDiameterEntity *Launcher::getOperatedEntity() const noexcept(false) { MyDiameterEntity *result = (MyDiameterEntity *)(getOperatedHost()->getEntity()); if (!result) throw anna::RuntimeException("No entity configured for the operated node", ANNA_FILE_LOCATION); return result; } -MyLocalServer *Launcher::getOperatedServer() const throw(anna::RuntimeException) { +MyLocalServer *Launcher::getOperatedServer() const noexcept(false) { MyLocalServer *result = (MyLocalServer *)(getOperatedHost()->getDiameterServer()); if (!result) throw anna::RuntimeException("No local server configured for the operated node", ANNA_FILE_LOCATION); return result; } -MyDiameterEngine *Launcher::getOperatedEngine() const throw(anna::RuntimeException) { +MyDiameterEngine *Launcher::getOperatedEngine() const noexcept(false) { return (MyDiameterEngine *)getOperatedHost()->getCommEngine(); // never will be NULL } void Launcher::initialize() -throw(anna::RuntimeException) { +noexcept(false) { anna::comm::Application::initialize(); CommandLine& cl(anna::CommandLine::instantiate()); anna::comm::Communicator::WorkMode::_v workMode(anna::comm::Communicator::WorkMode::Single); @@ -672,7 +672,7 @@ throw(anna::RuntimeException) { } void Launcher::run() -throw(anna::RuntimeException) { +noexcept(false) { LOGMETHOD(anna::TraceMethod tm("Launcher", "run", ANNA_FILE_LOCATION)); CommandLine& cl(anna::CommandLine::instantiate()); anna::diameter::stack::Engine::instantiate(); @@ -854,7 +854,7 @@ throw(anna::RuntimeException) { a_communicator->accept(); } -bool Launcher::getDataBlockFromHexFile(const std::string &pathfile, anna::DataBlock &db) const throw(anna::RuntimeException) { +bool Launcher::getDataBlockFromHexFile(const std::string &pathfile, anna::DataBlock &db) const noexcept(false) { // Get hex string static char buffer[8192]; std::ifstream infile(pathfile.c_str(), std::ifstream::in); @@ -879,7 +879,7 @@ bool Launcher::getDataBlockFromHexFile(const std::string &pathfile, anna::DataBl return false; } -void Launcher::resetStatistics() throw() { +void Launcher::resetStatistics() { if (a_workingNode) { a_workingNode->getCommEngine()->resetStatistics(); } @@ -891,13 +891,13 @@ void Launcher::resetStatistics() throw() { } } -void Launcher::resetCounters() throw() { +void Launcher::resetCounters() { anna::diameter::comm::OamModule::instantiate().resetCounters(); anna::diameter::comm::ApplicationMessageOamModule::instantiate().resetCounters(); anna::diameter::codec::OamModule::instantiate().resetCounters(); } -void Launcher::signalTerminate() throw(anna::RuntimeException) { +void Launcher::signalTerminate() noexcept(false) { LOGMETHOD(anna::TraceMethod tm("Launcher", "signalTerminate", ANNA_FILE_LOCATION)); forceCountersRecord(); @@ -906,7 +906,7 @@ void Launcher::signalTerminate() throw(anna::RuntimeException) { comm::Application::signalTerminate (); } -void Launcher::signalUSR2() throw(anna::RuntimeException) { +void Launcher::signalUSR2() noexcept(false) { std::string inputFile = getSignalUSR2InputFile(); std::string outputFile = getSignalUSR2OutputFile(); @@ -956,7 +956,7 @@ void Launcher::signalUSR2() throw(anna::RuntimeException) { } -void Launcher::logStatisticsSamples(const std::string &conceptsList) throw() { +void Launcher::logStatisticsSamples(const std::string &conceptsList) { anna::statistics::Engine &statEngine = anna::statistics::Engine::instantiate(); if(conceptsList == "all") { @@ -987,7 +987,7 @@ void Launcher::logStatisticsSamples(const std::string &conceptsList) throw() { } -bool Launcher::eventOperation(const std::string &operation, std::string &response) throw(anna::RuntimeException) { +bool Launcher::eventOperation(const std::string &operation, std::string &response) noexcept(false) { bool result = true; @@ -1201,7 +1201,7 @@ bool Launcher::eventOperation(const std::string &operation, std::string &respons if(getOperatedHost()->logEnabled()) { anna::diameter::comm::Server *usedServer = getOperatedEntity()->getLastUsedResource(); anna::diameter::comm::ClientSession *usedClientSession = usedServer ? usedServer->getLastUsedResource() : NULL; - std::string detail = usedClientSession ? usedClientSession->asString() : ""; // shouldn't happen + std::string detail = usedClientSession ? usedClientSession->asString() : "[null client session]"; // shouldn't happen getOperatedHost()->writeLogFile(codecMsg, (success ? "sent2e" : "send2eError"), detail); } } else if((opType == "sendxml2c") || (opType == "sendhex2c")) { @@ -1230,7 +1230,7 @@ bool Launcher::eventOperation(const std::string &operation, std::string &respons // Detailed log: if(getOperatedHost()->logEnabled()) { anna::diameter::comm::ServerSession *usedServerSession = getOperatedServer()->getLastUsedResource(); - std::string detail = usedServerSession ? usedServerSession->asString() : ""; // shouldn't happen + std::string detail = usedServerSession ? usedServerSession->asString() : "[null server session]"; // shouldn't happen getOperatedHost()->writeLogFile(codecMsg, (success ? "sent2c" : "send2cError"), detail); } } else if(opType == "answerxml2e") { @@ -1441,12 +1441,12 @@ bool Launcher::eventOperation(const std::string &operation, std::string &respons limit = atoi(param2.c_str()); testManager.setInProgressLimit(limit); opt_response = "new in-progress limit: "; - opt_response += (limit != UINT_MAX) ? anna::functions::asString(limit) : ""; + opt_response += (limit != UINT_MAX) ? anna::functions::asString(limit) : "[no limit]"; } else { opt_response = "in-progress limit amount: "; limit = testManager.getInProgressLimit(); - opt_response += (limit != UINT_MAX) ? anna::functions::asString(limit) : ""; + opt_response += (limit != UINT_MAX) ? anna::functions::asString(limit) : "[no limit]"; opt_response += "; currently there are "; opt_response += anna::functions::asString(testManager.getInProgressCount()); opt_response += " test cases running"; @@ -1820,18 +1820,22 @@ bool Launcher::eventOperation(const std::string &operation, std::string &respons std::string::size_type pos, pos_1, pos_2; pos = regexp.find("end-to-end-id=", 0u); - pos = regexp.find("\"", pos); - pos_1 = pos; - pos = regexp.find("\"", pos+1); - pos_2 = pos; - regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+"); + if (pos != std::string::npos) { + pos = regexp.find("\"", pos); + pos_1 = pos; + pos = regexp.find("\"", pos+1); + pos_2 = pos; + regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+"); + } pos = regexp.find("hop-by-hop-id=", 0u); - pos = regexp.find("\"", pos); - pos_1 = pos; - pos = regexp.find("\"", pos+1); - pos_2 = pos; - regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+"); + if (pos != std::string::npos) { + pos = regexp.find("\"", pos); + pos_1 = pos; + pos = regexp.find("\"", pos+1); + pos_2 = pos; + regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+"); + } // For this representation: //pos = regexp.find("Origin-State-Id", 0u); @@ -1843,13 +1847,15 @@ bool Launcher::eventOperation(const std::string &operation, std::string &respons //regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+"); // But we have this one: pos = regexp.find("Origin-State-Id", 0u); - pos = regexp.rfind("\"", pos); - pos = regexp.rfind("\"", pos-1); - pos = regexp.rfind("\"", pos-1); - pos_1 = pos; - pos = regexp.find("\"", pos+1); - pos_2 = pos; - regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+"); + if (pos != std::string::npos) { + pos = regexp.rfind("\"", pos); + pos = regexp.rfind("\"", pos-1); + pos = regexp.rfind("\"", pos-1); + pos_1 = pos; + pos = regexp.find("\"", pos+1); + pos_2 = pos; + regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+"); + } //regexp.insert(0, "^"); //regexp += "$"; @@ -1899,7 +1905,7 @@ bool Launcher::eventOperation(const std::string &operation, std::string &respons } anna::xml::Node* Launcher::asXML(anna::xml::Node* parent) const -throw() { +{ anna::xml::Node* result = parent->createChild("launcher"); anna::comm::Application::asXML(result); // Timming: @@ -1927,7 +1933,7 @@ throw() { } anna::xml::Node* Launcher::oamAsXML(anna::xml::Node* parent) const -throw() { +{ anna::xml::Node* result = parent->createChild("Oam"); // OAM: @@ -1939,7 +1945,7 @@ throw() { } anna::xml::Node* Launcher::statsAsXML(anna::xml::Node* parent) const -throw() { +{ anna::xml::Node* result = parent->createChild("Statistics"); // Statistics: