using namespace anna::diameter::comm;
-Engine::Engine() :
- anna::app::Component(getClassName()),
+Engine::Engine(const char *className, codec::Engine *baseProtocolCodecEngine) :
+ anna::app::Component(className),
+ a_baseProtocolCodecEngine(baseProtocolCodecEngine),
a_autoBind(true),
a_availableForEntities(false),
a_availableForLocalServers(false),
// a_dwa(true),
a_watchdogPeriod(ClientSession::DefaultWatchdogPeriod),
a_maxConnectionDelay(anna::comm::ClientSocket::DefaultMaxConnectionDelay /* 200 ms*/),
- a_numberOfClientSessionsPerServer(1),
- a_freezeEndToEndOnSending(false) {
+ a_numberOfClientSessionsPerServer(1) {
anna::diameter::sccs::activate();
a_realm = anna::functions::getDomainname();
a_host = anna::functions::getHostname();
result->setWatchdogPeriod(a_watchdogPeriod);
result->a_parent = server;
result->a_socketId = socketId;
- result->initializeSequences(); // después de asignar el server y el socketId (*)
+ result->initializeSequences(); // despu�s de asignar el server y el socketId (*)
// (*) Las secuencias se basan en la semilla: srand(::time(NULL) + anna::functions::exclusiveHash(anna::functions::asString("%s:%d|%d", getAddress().c_str(), getPort(), a_socketId)));
result->a_engine = this;
clientSession_key key = ClientSession::getKey(server->getAddress(), server->getPort(), socketId);
// [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);
// 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);
}
}
// [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);
// 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);
}
}
// *[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);
// 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);
}
}