Fix local server for multiple applications
[anna.git] / source / diameter.comm / OriginHost.cpp
index ed181bd..a518292 100644 (file)
@@ -50,11 +50,11 @@ OriginHost::OriginHost(anna::diameter::comm::Engine* commEngine, unsigned int ap
   a_burstPopCounter = 0;
 }
 
-const std::string &OriginHost::getName() const throw() {
+const std::string &OriginHost::getName() const {
   return a_commEngine->getOriginHostName();
 }
 
-void OriginHost::createEntity(const std::string &entityRepresentation, const anna::Millisecond &bindTimeout, const anna::Millisecond &applicationTimeout) throw(anna::RuntimeException) {
+void OriginHost::createEntity(const std::string &entityRepresentation, const anna::Millisecond &bindTimeout, const anna::Millisecond &applicationTimeout) noexcept(false) {
 
   anna::socket_v servers = anna::functions::getSocketVectorFromString(entityRepresentation);
   std::string entityDescription = "Launcher diameter entity for "; entityDescription += getName();
@@ -63,7 +63,7 @@ void OriginHost::createEntity(const std::string &entityRepresentation, const ann
   a_entity->setClassCodeTimeout(anna::diameter::comm::ClassCode::ApplicationMessage, applicationTimeout);
 }
 
-void OriginHost::createDiameterServer(const std::string &serverRepresentation, int sessions, const anna::Millisecond &inactivityTimeout, const anna::Millisecond &applicationTimeout, const std::string &ceaPathfile) throw(anna::RuntimeException) {
+void OriginHost::createDiameterServer(const std::string &serverRepresentation, int sessions, const anna::Millisecond &inactivityTimeout, const anna::Millisecond &applicationTimeout, const std::string &ceaPathfile) noexcept(false) {
 
   //if(sessions <= 0) return; negative implies no limit for accepted connections
 
@@ -71,6 +71,7 @@ void OriginHost::createDiameterServer(const std::string &serverRepresentation, i
   anna::functions::getAddressAndPortFromSocketLiteral(serverRepresentation, address, port);
   std::string serverDescription = "Launcher diameter local server for "; serverDescription += getName();
   a_commEngine->setCEA(ceaPathfile);
+
   a_diameterServer = (anna::diameter::comm::LocalServer*)(a_commEngine->createLocalServer(address, port, sessions));
           // we could set sessions = 0, and after application run(), use setMaxConnections(real sessions)
           // over the local server in order to start it.
@@ -80,7 +81,7 @@ void OriginHost::createDiameterServer(const std::string &serverRepresentation, i
   a_diameterServer->setClassCodeTimeout(anna::diameter::comm::ClassCode::ApplicationMessage, applicationTimeout);
 }
 
-anna::diameter::comm::Message *OriginHost::createCommMessage() throw(anna::RuntimeException) {
+anna::diameter::comm::Message *OriginHost::createCommMessage() noexcept(false) {
   anna::diameter::comm::Message *result = a_commMessages.create();
   result->setRetries(a_requestRetransmissions);
   if (a_requestRetransmissions > 0) result->setOnExpiry(anna::diameter::comm::Message::OnExpiry::Retransmit);
@@ -88,19 +89,19 @@ anna::diameter::comm::Message *OriginHost::createCommMessage() throw(anna::Runti
 }
 
 
-void OriginHost::releaseCommMessage(anna::diameter::comm::Message *msg) throw() {
+void OriginHost::releaseCommMessage(anna::diameter::comm::Message *msg) {
   a_commMessages.release(msg);
 }
 
 
-void OriginHost::writeLogFile(const anna::DataBlock & db, const std::string &logExtension, const std::string &detail) const throw() {
+void OriginHost::writeLogFile(const anna::DataBlock & db, const std::string &logExtension, const std::string &detail) const {
   anna::diameter::codec::Message codecMsg;
   try { codecMsg.decode(db); } catch(anna::RuntimeException &ex) { ex.trace(); }
   writeLogFile(codecMsg, logExtension, detail);
 }
 
 // Already decoded:
-void OriginHost::writeLogFile(const anna::diameter::codec::Message &decodedMessage, const std::string &logExtension, const std::string &detail) const throw() {
+void OriginHost::writeLogFile(const anna::diameter::codec::Message &decodedMessage, const std::string &logExtension, const std::string &detail) const {
   // Open target file:
   std::string targetFile = a_logFile;
 
@@ -162,7 +163,7 @@ void OriginHost::writeLogFile(const anna::diameter::codec::Message &decodedMessa
   out.close();
 }
 
-void OriginHost::writeBurstLogFile(const std::string &buffer) throw() {
+void OriginHost::writeBurstLogFile(const std::string &buffer) {
   std::ofstream out(a_burstLogFile.c_str(), std::ifstream::out | std::ifstream::app);
   out.write(buffer.c_str(), buffer.size());
   out.close();    // close() will be called when the object is destructed (i.e., when it goes out of scope).
@@ -170,7 +171,7 @@ void OriginHost::writeBurstLogFile(const std::string &buffer) throw() {
   // earlier than it goes out of scope.
 }
 
-int OriginHost::clearBurst() throw() {
+int OriginHost::clearBurst() {
   int size = a_burstMessages.size();
 
   if(size) {
@@ -193,14 +194,14 @@ int OriginHost::clearBurst() throw() {
   return size;
 }
 
-int OriginHost::loadBurstMessage(const anna::DataBlock & db) throw(anna::RuntimeException) {
+int OriginHost::loadBurstMessage(const anna::DataBlock & db) noexcept(false) {
   anna::diameter::comm::Message *msg = createCommMessage();
   msg->setBody(db);
   a_burstMessages[a_burstLoadIndx++] = msg;
   return (a_burstLoadIndx - 1);
 }
 
-int OriginHost::stopBurst() throw() {
+int OriginHost::stopBurst() {
   if(!a_burstActive) {
     std::string msg = "Burst launch is already stopped. Nothing done";
     std::cout << msg << std::endl;
@@ -213,7 +214,7 @@ int OriginHost::stopBurst() throw() {
   return (a_burstMessages.size() - (*a_burstDeliveryIt).first);
 }
 
-int OriginHost::popBurst(int releaseAmount) throw() {
+int OriginHost::popBurst(int releaseAmount) {
   if(!a_burstActive) {
     std::string msg = "Burst launch is stopped. Nothing done";
     std::cout << msg << std::endl;
@@ -233,7 +234,7 @@ int OriginHost::popBurst(int releaseAmount) throw() {
   return a_burstPopCounter;
 }
 
-int OriginHost::pushBurst(int loadAmount) throw() {
+int OriginHost::pushBurst(int loadAmount) {
   if(a_burstMessages.size() == 0) {
     std::string msg = "Burst data not found (empty list). Ignoring burst launch";
     std::cout << msg << std::endl;
@@ -257,7 +258,7 @@ int OriginHost::pushBurst(int loadAmount) throw() {
   return count;
 }
 
-int OriginHost::sendBurst(int loadAmount) throw() {
+int OriginHost::sendBurst(int loadAmount) {
   if(a_burstMessages.size() == 0) {
     std::string msg = "Burst data not found (empty list). Ignoring burst launch";
     std::cout << msg << std::endl;
@@ -280,7 +281,7 @@ int OriginHost::sendBurst(int loadAmount) throw() {
   return count;
 }
 
-int OriginHost::startBurst(int initialLoad) throw() {
+int OriginHost::startBurst(int initialLoad) {
   if(initialLoad < 1) {
     std::string msg = "No initial load is specified. Ignoring burst start";
     std::cout << msg << std::endl;
@@ -294,7 +295,7 @@ int OriginHost::startBurst(int initialLoad) throw() {
   return (pushBurst(initialLoad));
 }
 
-bool OriginHost::sendBurstMessage(bool anyway) throw() {
+bool OriginHost::sendBurstMessage(bool anyway) {
   if(!anyway && !burstActive()) return false;
 
   if(a_burstPopCounter > 0) {
@@ -351,14 +352,14 @@ bool OriginHost::sendBurstMessage(bool anyway) throw() {
   if(logEnabled()) {
     anna::diameter::comm::Server *usedServer = a_entity->getLastUsedResource();
     anna::diameter::comm::ClientSession *usedClientSession = usedServer ? usedServer->getLastUsedResource() : NULL;
-    std::string detail = usedClientSession ? usedClientSession->asString() : "<null client session>"; // esto no deberia ocurrir
+    std::string detail = usedClientSession ? usedClientSession->asString() : "[null client session]"; // esto no deberia ocurrir
     writeLogFile(msg->getBody(), (result ? "sent2e" : "send2eError"), detail); // el del nodo de trabajo
   }
 
   return result;
 }
 
-std::string OriginHost::lookBurst(int order) const throw() {
+std::string OriginHost::lookBurst(int order) const {
 
   if (order == -1) order = a_burstDeliveryIt->first;
 
@@ -375,7 +376,7 @@ std::string OriginHost::lookBurst(int order) const throw() {
   return result;
 }
 
-std::string OriginHost::gotoBurst(int order) throw() {
+std::string OriginHost::gotoBurst(int order) {
   std::string result = "Position not found for order provided (";
   std::map<int, anna::diameter::comm::Message*>::iterator it = a_burstMessages.find(order - 1);
 
@@ -390,7 +391,7 @@ std::string OriginHost::gotoBurst(int order) throw() {
 }
 
 anna::xml::Node* OriginHost::asXML(anna::xml::Node* parent) const
-throw() {
+{
   anna::xml::Node* result = parent->createChild("OriginHost");
 
   result->createAttribute("originHost", getName());
@@ -409,7 +410,7 @@ throw() {
   return result;
 }
 
-std::string OriginHost::asXMLString() const throw() {
+std::string OriginHost::asXMLString() const {
   anna::xml::Node root("root");
   return anna::xml::Compiler().apply(asXML(&root));
 }