X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Fdiameter.comm%2FEngine.cpp;h=40289914303d9784bcb4aec6fa494125611351a6;hb=84c30c372cf2926a138a6d51a52d56f3b2a63804;hp=53de6ac0a51e1570a24a235e0f131db6bf13ae23;hpb=129500a50678c43ff28fb0054d6197899b8c0b2c;p=anna.git diff --git a/source/diameter.comm/Engine.cpp b/source/diameter.comm/Engine.cpp index 53de6ac..4028991 100644 --- a/source/diameter.comm/Engine.cpp +++ b/source/diameter.comm/Engine.cpp @@ -37,8 +37,9 @@ using namespace std; using namespace anna::diameter::comm; -Engine::Engine(const char *className) : +Engine::Engine(const char *className, codec::Engine *baseProtocolCodecEngine) : anna::app::Component(className), + a_baseProtocolCodecEngine(baseProtocolCodecEngine), a_autoBind(true), a_availableForEntities(false), a_availableForLocalServers(false), @@ -939,10 +940,10 @@ void Engine::readDPA(anna::DataBlock &dpa, const anna::DataBlock & dpr) throw() // [Error-Message].................................(281,0) // *[Failed-AVP]....................................(279,0) try { - anna::diameter::codec::Message diameterDPA; - anna::diameter::codec::Avp avpRC; - anna::diameter::codec::Avp avpOH; - anna::diameter::codec::Avp avpOR; + anna::diameter::codec::Message diameterDPA(getBaseProtocolCodecEngine()); + anna::diameter::codec::Avp avpRC(getBaseProtocolCodecEngine()); + anna::diameter::codec::Avp avpOH(getBaseProtocolCodecEngine()); + anna::diameter::codec::Avp avpOR(getBaseProtocolCodecEngine()); // Message header diameterDPA.setId(anna::diameter::helpers::base::COMMANDID__Disconnect_Peer_Answer); diameterDPA.setVersion(1); @@ -967,7 +968,10 @@ void Engine::readDPA(anna::DataBlock &dpa, const anna::DataBlock & dpr) throw() // Encode dpa = diameterDPA.code(); } catch(anna::RuntimeException &ex) { - ex.trace(); + std::string msg = ex.getText(); + msg += " | Use diameter::comm::Engine::setBaseProtocolCodecEngine() to allow internal base protocol messages encoding (unable to answer with DPA)"; + anna::Logger::error(msg, ANNA_FILE_LOCATION); + //throw anna::RuntimeException(msg, ANNA_FILE_LOCATION); } } @@ -993,10 +997,10 @@ void Engine::readCEA(anna::DataBlock &cea, const anna::DataBlock & cer) throw() // [Firmware-Revision].............................(267,0) // *[AVP]...........................................(0,0) try { - anna::diameter::codec::Message diameterCEA; - anna::diameter::codec::Avp avpRC; - anna::diameter::codec::Avp avpOH; - anna::diameter::codec::Avp avpOR; + anna::diameter::codec::Message diameterCEA(getBaseProtocolCodecEngine()); + anna::diameter::codec::Avp avpRC(getBaseProtocolCodecEngine()); + anna::diameter::codec::Avp avpOH(getBaseProtocolCodecEngine()); + anna::diameter::codec::Avp avpOR(getBaseProtocolCodecEngine()); // Message header diameterCEA.setId(anna::diameter::helpers::base::COMMANDID__Capabilities_Exchange_Answer); diameterCEA.setVersion(1); @@ -1030,7 +1034,10 @@ void Engine::readCEA(anna::DataBlock &cea, const anna::DataBlock & cer) throw() // Encode cea = diameterCEA.code(); } catch(anna::RuntimeException &ex) { - ex.trace(); + std::string msg = ex.getText(); + msg += " | Use diameter::comm::Engine::setBaseProtocolCodecEngine() to allow internal base protocol messages encoding (unable to answer with CEA)"; + anna::Logger::error(msg, ANNA_FILE_LOCATION); + //throw anna::RuntimeException(msg, ANNA_FILE_LOCATION); } } @@ -1046,10 +1053,10 @@ void Engine::readDWA(anna::DataBlock &dwa, const anna::DataBlock & dwr) throw() // *[Failed-AVP]....................................(279,0) // [Origin-State-Id]...............................(278,0) try { - anna::diameter::codec::Message diameterDWA; - anna::diameter::codec::Avp avpRC; - anna::diameter::codec::Avp avpOH; - anna::diameter::codec::Avp avpOR; + anna::diameter::codec::Message diameterDWA(getBaseProtocolCodecEngine()); + anna::diameter::codec::Avp avpRC(getBaseProtocolCodecEngine()); + anna::diameter::codec::Avp avpOH(getBaseProtocolCodecEngine()); + anna::diameter::codec::Avp avpOR(getBaseProtocolCodecEngine()); // Message header diameterDWA.setId(anna::diameter::helpers::base::COMMANDID__Device_Watchdog_Answer); diameterDWA.setVersion(1); @@ -1074,7 +1081,10 @@ void Engine::readDWA(anna::DataBlock &dwa, const anna::DataBlock & dwr) throw() // Encode dwa = diameterDWA.code(); } catch(anna::RuntimeException &ex) { - ex.trace(); + std::string msg = ex.getText(); + msg += " | Use diameter::comm::Engine::setBaseProtocolCodecEngine() to allow internal base protocol messages encoding (unable to answer with DWA)"; + anna::Logger::error(msg, ANNA_FILE_LOCATION); + //throw anna::RuntimeException(msg, ANNA_FILE_LOCATION); } }