From 631c49a2c11aca8a58c443c03311a26cff48279e Mon Sep 17 00:00:00 2001 From: Eduardo Ramos Testillano Date: Thu, 24 Jul 2014 20:16:24 +0200 Subject: [PATCH] tme example using derived format "Unsigned16" and checking 16bits overflow (specific derived tme Avp behaviour) All the derived formats are now outside codec::Avp, and derived over codec::tme::Avp, which are at the moment: ISDNNumber, ISDNAddress, Unsigned16. Verified correct behaviour on derived tme::Message and tme::Avp. --- example/diameter/tme/main.cpp | 64 ++++++++++++++--------------------- 1 file changed, 26 insertions(+), 38 deletions(-) diff --git a/example/diameter/tme/main.cpp b/example/diameter/tme/main.cpp index 567cf8a..7973513 100644 --- a/example/diameter/tme/main.cpp +++ b/example/diameter/tme/main.cpp @@ -8,10 +8,16 @@ #include #include #include -#include #include #include +#include +#include + + +typedef anna::diameter::codec::tme::Message tmeMessage; +typedef anna::diameter::codec::tme::Avp tmeAvp; + void _exit(const std::string & msg) { std::cout << std::endl << msg << std::endl; @@ -37,8 +43,9 @@ int main(int argc, char** argv) { Logger::initialize("tme", new TraceWriter("file.trace", 2048000)); anna::time::functions::initialize(); // before application instantiation (it have a anna::time object) anna::time::functions::setControlPoint(); // start control point (application lifetime) - anna::diameter::stack::Engine & engine = anna::diameter::stack::Engine::instantiate(); + anna::diameter::stack::Engine & stackEngine = anna::diameter::stack::Engine::instantiate(); anna::diameter::stack::Dictionary *dictionary; + anna::diameter::codec::tme::Engine *codecEngine = new anna::diameter::codec::tme::Engine(); std::string exec = argv[0]; std::string param = argv[1] ? argv[1] : ""; @@ -67,62 +74,42 @@ int main(int argc, char** argv) { } try { - dictionary = engine.createDictionary(0 /* general unique stack id */); + dictionary = stackEngine.createDictionary(0 /* general unique stack id */); dictionary->allowUpdates(); dictionary->load(param + "/avps_ietf.xml"); dictionary->load(param + "/avps_etsi.xml"); dictionary->load(param + "/avps_tgpp.xml"); dictionary->load(param + "/avps_tme.xml"); dictionary->load(param + "/commands_dccaOCS-CS_HuaweiNGIN_de-es.xml"); + codecEngine->setDictionary(dictionary); // Trace: - LOGINFORMATION(Logger::information(engine.asString(), ANNA_FILE_LOCATION)); + LOGINFORMATION(Logger::information(stackEngine.asString(), ANNA_FILE_LOCATION)); LOGDEBUG(Logger::debug(dictionary->asString(), ANNA_FILE_LOCATION)); + LOGDEBUG(Logger::debug(codecEngine->asString(), ANNA_FILE_LOCATION)); } catch (anna::RuntimeException &ex) { ex.trace(); std::cout << ex.getText() << std::endl; } + // Build CCA + tmeMessage cca; + cca.setId("Credit-Control-Answer"); - anna::diameter::codec::Message ccr; - ccr.setId("Credit-Control-Request"); - - //LOGDEBUG(Logger::debug(ccr.asXMLString(), ANNA_FILE_LOCATION)); -/* - - tmeAvp *sid = (tmeAvp*)ccr.addAvp("Session-Id"); - tmeAvp *ohst = (tmeAvp*)ccr.addAvp("Origin-Host"); - tmeAvp *orlm = (tmeAvp*)ccr.addAvp("Origin-Realm"); + tmeAvp *sid = (tmeAvp*)cca.addAvp("Session-Id"); + tmeAvp *ohst = (tmeAvp*)cca.addAvp("Origin-Host"); + tmeAvp *orlm = (tmeAvp*)cca.addAvp("Origin-Realm"); sid->getUTF8String()->setValue("grump.example.com:33041;23432;893;0AF3B81"); ohst->getDiameterIdentity()->setValue("c0-10-70-238-74-w5p1vepg1.vepc.ericsson.se"); orlm->getDiameterIdentity()->setValue("vepc.ericsson.se"); -*/ -/* - - - - - - - - - - - - - - - - - - - - - - + int inRange = 65535; + int outRange = inRange + 1; + //((tmeAvp*)cca.addAvp("CS-Result-Code"))->getUnsigned16()->setValue(inRange); + ((tmeAvp*)cca.addAvp("CS-Result-Code"))->getUnsigned16()->setValue(outRange); // WILL BE 0 !! +/* @@ -149,7 +136,8 @@ int main(int argc, char** argv) { */ + LOGDEBUG(Logger::debug(cca.asXMLString(), ANNA_FILE_LOCATION)); - _exit("Open 'file.trace' in order to see the stacks loaded"); + _exit("Open 'file.trace' in order to see traces"); } -- 2.20.1