Fix local server for multiple applications
[anna.git] / example / diameter / rxSimpleTest / MyLocalServer.cpp
index 1327dd1..a3809a1 100755 (executable)
 #include <rxSimpleTest.hpp>
 
 
-void MyLocalServer::eventRequest(anna::diameter::comm::ServerSession *serverSession, const anna::DataBlock &message)
+void MyLocalServer::eventRequest(anna::diameter::comm::ServerSession *serverSession, const anna::DataBlock &message, const anna::diameter::comm::OriginHost *myNode)
 noexcept(false) {
   LOGMETHOD(anna::TraceMethod tm("rxSimpleTest::MyLocalServer", "eventRequest", ANNA_FILE_LOCATION));
+
+  // Protection:
+  if (!myNode) return;
+
   // Performance stats:
   RxSimpleTest& my_app = static_cast <RxSimpleTest&>(anna::app::functions::getApp());
-  anna::diameter::comm::OriginHost *my_node = my_app.getOriginHost(getEngine()->getOriginHostName());
-  anna::diameter::codec::Engine *codecEngine = my_node->getCodecEngine();
+  anna::diameter::codec::Engine *codecEngine = myNode->getCodecEngine();
 
   // CommandId:
   anna::diameter::CommandId cid = anna::diameter::codec::functions::getCommandId(message);
@@ -51,7 +54,7 @@ noexcept(false) {
 
   anna::diameter::comm::Message *msg;
   try {
-    msg = my_node->createCommMessage();
+    msg = (const_cast<anna::diameter::comm::OriginHost*>(myNode))->createCommMessage();
     msg->setBody(answer_message->code());
     /* response = NULL =*/serverSession->send(msg);
   } catch(anna::RuntimeException &ex) {
@@ -59,14 +62,13 @@ noexcept(false) {
   }
 
   // release msg
-  my_node->releaseCommMessage(msg);
+  (const_cast<anna::diameter::comm::OriginHost*>(myNode))->releaseCommMessage(msg);
 }
 
-void MyLocalServer::eventResponse(const anna::diameter::comm::Response &response)
+void MyLocalServer::eventResponse(const anna::diameter::comm::Response &response, const anna::diameter::comm::OriginHost *myNode)
 noexcept(false) {
   LOGMETHOD(anna::TraceMethod tm("rxSimpleTest::MyLocalServer", "eventResponse", ANNA_FILE_LOCATION));
   RxSimpleTest& my_app = static_cast <RxSimpleTest&>(anna::app::functions::getApp());
-  anna::diameter::comm::OriginHost * my_node = my_app.getOriginHost(getEngine()->getOriginHostName());
   anna::diameter::comm::ClassCode::_v code = response.getClassCode();
   anna::diameter::comm::Response::ResultCode::_v result = response.getResultCode();
   anna::diameter::comm::Message* request = const_cast<anna::diameter::comm::Message*>(response.getRequest());
@@ -110,12 +112,11 @@ noexcept(false) {
   }
 }
 
-void MyLocalServer::eventUnknownResponse(anna::diameter::comm::ServerSession *serverSession, const anna::DataBlock &message)
+void MyLocalServer::eventUnknownResponse(anna::diameter::comm::ServerSession *serverSession, const anna::DataBlock &message, const anna::diameter::comm::OriginHost *myNode)
 noexcept(false) {
   LOGMETHOD(anna::TraceMethod tm("rxSimpleTest::MyLocalServer", "eventUnknownResponse", ANNA_FILE_LOCATION));
   // Performance stats:
   RxSimpleTest& my_app = static_cast <RxSimpleTest&>(anna::app::functions::getApp());
-  anna::diameter::comm::OriginHost *my_node = my_app.getOriginHost(getEngine()->getOriginHostName());
   // CommandId:
   anna::diameter::CommandId cid = anna::diameter::codec::functions::getCommandId(message);
   LOGDEBUG
@@ -130,12 +131,11 @@ noexcept(false) {
   );
 }
 
-void MyLocalServer::eventDPA(anna::diameter::comm::ServerSession *serverSession, const anna::DataBlock &message)
+void MyLocalServer::eventDPA(anna::diameter::comm::ServerSession *serverSession, const anna::DataBlock &message, const anna::diameter::comm::OriginHost *myNode)
 noexcept(false) {
   LOGMETHOD(anna::TraceMethod tm("rxSimpleTest::MyLocalServer", "eventDPA", ANNA_FILE_LOCATION));
   // Performance stats:
   RxSimpleTest& my_app = static_cast <RxSimpleTest&>(anna::app::functions::getApp());
-  anna::diameter::comm::OriginHost *my_node = my_app.getOriginHost(getEngine()->getOriginHostName());
   // CommandId:
   anna::diameter::CommandId cid = anna::diameter::codec::functions::getCommandId(message);
   LOGDEBUG