#define SIGUSR2_TASKS_INPUT_FILENAME "./sigusr2.tasks.input"
#define SIGUSR2_TASKS_OUTPUT_FILENAME "./sigusr2.tasks.output"
-
+#define DIAMETER_CODEC_ENGINE_NAME_PREFIX "MyCodecEngine"
Launcher::Launcher() : anna::comm::Application("launcher", "DiameterLauncher", "1.1"), a_communicator(NULL) {
a_myDiameterEngine = new MyDiameterEngine();
//ServerSocket *createServerSocket(const std::string & addr, int port = Session::DefaultPort, int maxConnections = -1, int category = 1, const std::string & description = "")
a_diameterLocalServer = (MyLocalServer*)(a_myDiameterEngine->createLocalServer(address, port, diameterServerSessions));
a_diameterLocalServer->setDescription("Launcher diameter local server");
+ a_diameterLocalServer->setProgrammedAnswersCodecEngine(getCodecEngine());
int allowedInactivityTime = 90000; // ms
if(cl.exists("allowedInactivityTime")) allowedInactivityTime = cl.getIntegerValue("allowedInactivityTime");
}
// Stack:
- anna::diameter::codec::Engine *codecEngine = new anna::diameter::codec::Engine();
+ a_codecEngine = new anna::diameter::codec::Engine(DIAMETER_CODEC_ENGINE_NAME_PREFIX);
anna::diameter::stack::Engine &stackEngine = anna::diameter::stack::Engine::instantiate();
anna::diameter::stack::Dictionary * d = stackEngine.createDictionary(0 /* stack id; its value don't mind, is not used (ADL is monostack) */);
// Analyze comma-separated list:
}
}
- codecEngine->setDictionary(d);
- LOGDEBUG(anna::Logger::debug(codecEngine->asString(), ANNA_FILE_LOCATION));
+ getCodecEngine()->setDictionary(d);
+ LOGDEBUG(anna::Logger::debug(getCodecEngine()->asString(), ANNA_FILE_LOCATION));
if(lst.size() > 1) {
std::string all_in_one = "./dictionary-all-in-one.xml";
// Integration (validation 'Complete' for receiving messages) and debugging (validation also before encoding: 'Always').
// If missing 'integrationAndDebugging', default behaviour at engine is: mode 'AfterDecoding', depth 'FirstError':
if(cl.exists("integrationAndDebugging")) {
- codecEngine->setValidationMode(anna::diameter::codec::Engine::ValidationMode::Always);
- codecEngine->setValidationDepth(anna::diameter::codec::Engine::ValidationDepth::Complete);
+ getCodecEngine()->setValidationMode(anna::diameter::codec::Engine::ValidationMode::Always);
+ getCodecEngine()->setValidationDepth(anna::diameter::codec::Engine::ValidationDepth::Complete);
}
// Fix mode
else if (fixMode == "Always") fm = anna::diameter::codec::Engine::FixMode::Always;
else if (fixMode == "Never") fm = anna::diameter::codec::Engine::FixMode::Never;
else LOGINFORMATION(anna::Logger::information("Unreconized command-line fix mode. Assumed default 'BeforeEncoding'", ANNA_FILE_LOCATION));
- codecEngine->setFixMode(fm);
+ getCodecEngine()->setFixMode(fm);
}
- codecEngine->ignoreFlagsOnValidation(cl.exists("ignoreFlags"));
+ getCodecEngine()->ignoreFlagsOnValidation(cl.exists("ignoreFlags"));
// Diameter Server:
if(cl.exists("diameterServer"))
a_entity = (MyDiameterEntity*)(a_myDiameterEngine->createEntity(servers, "Launcher diameter entity"));
a_entity->setClassCodeTimeout(anna::diameter::comm::ClassCode::Bind, ceaTimeout);
a_entity->setClassCodeTimeout(anna::diameter::comm::ClassCode::ApplicationMessage, answersTimeout);
+ a_entity->setProgrammedAnswersCodecEngine(getCodecEngine());
a_entity->bind();
}
}
} else if (param1 == "dump") {
localServer->getReactingAnswers()->dump();
} else {
- anna::diameter::codec::Engine *engine = anna::functions::component <Engine> (ANNA_FILE_LOCATION);
- anna::diameter::codec::Message *message = engine->createMessage(param1);
+ anna::diameter::codec::Message *message = getCodecEngine()->createMessage(param1);
LOGDEBUG
(
anna::Logger::debug(message->asXMLString(), ANNA_FILE_LOCATION);
} else if (param1 == "dump") {
entity->getReactingAnswers()->dump();
} else {
- anna::diameter::codec::Engine *engine = anna::functions::component <Engine> (ANNA_FILE_LOCATION);
- anna::diameter::codec::Message *message = engine->createMessage(param1);
+ anna::diameter::codec::Message *message = getCodecEngine()->createMessage(param1);
LOGDEBUG
(
anna::Logger::debug(message->asXMLString(), ANNA_FILE_LOCATION);
result->createAttribute("StartTime", a_start_time.asString());
result->createAttribute("SecondsLifeTime", anna::time::functions::lapsedMilliseconds() / 1000);
// Diameter:
- (anna::functions::component <anna::diameter::codec::Engine> (ANNA_FILE_LOCATION))->asXML(result);
+ getCodecEngine()->asXML(result);
// OAM:
anna::diameter::comm::OamModule::instantiate().asXML(result);
anna::diameter::comm::ApplicationMessageOamModule::instantiate().asXML(result);