Dynamic lib selection and deployment
[anna.git] / example / diameter / launcher / OriginHost.cpp
index 056031f..195edad 100644 (file)
@@ -36,7 +36,7 @@ OriginHost::OriginHost(const std::string &originHost, unsigned int applicationId
   std::string commEngineName = a_originHost + "_DiameterCommEngine";
   a_commEngine = new MyDiameterEngine(commEngineName.c_str(), baseProtocolDictionary);
   a_commEngine->setAutoBind(false);  // allow to create client-sessions without binding them, in order to set timeouts.
-  a_codecEngine = anna::diameter::codec::EngineManager::instantiate().getCodecEngine(applicationId);
+  a_codecEngine = anna::diameter::codec::EngineManager::instantiate().getCodecEngine(applicationId); // i know, this is going to exist (getCodecEngine is not null)
 
   a_logFile = "";
   a_burstLogFile = "";
@@ -74,19 +74,21 @@ void OriginHost::createEntity(const std::string &entityRepresentation, const ann
   a_entity->setClassCodeTimeout(anna::diameter::comm::ClassCode::ApplicationMessage, applicationTimeout);
 }
 
-void OriginHost::startDiameterServer(const std::string &serverRepresentation, int sessions, const anna::Millisecond &inactivityTimeout) throw(anna::RuntimeException) {
+void OriginHost::startDiameterServer(const std::string &serverRepresentation, int sessions, const anna::Millisecond &inactivityTimeout, const anna::Millisecond &applicationTimeout, const std::string &ceaPathfile) throw(anna::RuntimeException) {
 
   //if(sessions <= 0) return; negative implies no limit for accepted connections
 
   std::string address; int port;
   anna::functions::getAddressAndPortFromSocketLiteral(serverRepresentation, address, port);
   std::string serverDescription = "Launcher diameter local server for "; serverDescription += a_originHost;
+  a_commEngine->setCEA(ceaPathfile);
   a_diameterServer = (MyLocalServer*)(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.
 
   a_diameterServer->setDescription(serverDescription);
   a_diameterServer->setAllowedInactivityTime(inactivityTimeout);
+  a_diameterServer->setClassCodeTimeout(anna::diameter::comm::ClassCode::ApplicationMessage, applicationTimeout);
 }
 
 anna::diameter::comm::Message *OriginHost::createCommMessage() throw(anna::RuntimeException) {