anna::diameter::sccs::activate();
a_originRealm = anna::functions::getDomainname();
a_originHost = anna::functions::getHostname();
+ a_ceaPathfile = "";
// Internal base protocol codec engine:
a_baseProtocolCodecEngine.setValidationMode(anna::diameter::codec::Engine::ValidationMode::Always); // default was: after decoding
// * [Acct-Application-Id] 259 Unsigned32
anna::diameter::codec::Message diameterCER(getBaseProtocolCodecEngine());
int applicationId = 0 /*anna::diameter::helpers::APPID__3GPP_Rx*/; // Unsigned32
- std::string OH = getOriginHost();
- std::string OR = getOriginRealm();
+ std::string OH = getOriginHostName();
+ std::string OR = getOriginRealmName();
std::string hostIP = anna::functions::getHostnameIP(); // Address
int vendorId = anna::diameter::helpers::VENDORID__tgpp; // Unsigned32
std::string productName = "ANNA Diameter Client"; // UTF8String
}
-void comm::Engine::setOriginRealm(const std::string & originRealm) throw() {
- a_originRealm = ((originRealm != "") ? originRealm : anna::functions::getDomainname());
+void comm::Engine::setOriginRealmName(const std::string & originRealmName) throw() {
+ a_originRealm = ((originRealmName != "") ? originRealmName : anna::functions::getDomainname());
}
-void comm::Engine::setOriginHost(const std::string & originHost) throw() {
- a_originHost = ((originHost != "") ? originHost : anna::functions::getHostname());
+void comm::Engine::setOriginHostName(const std::string & originHostName) throw() {
+ a_originHost = ((originHostName != "") ? originHostName : anna::functions::getHostname());
}
a_availableForEntities = false;
LOGDEBUG(
std::string msg = "diameter::comm::Engine { Origin-Realm: ";
- msg += getOriginRealm();
+ msg += getOriginRealmName();
msg += " | Origin-Host: ";
- msg += getOriginHost();
+ msg += getOriginHostName();
msg += " } has lost its availability for entities";
anna::Logger::debug(msg, ANNA_FILE_LOCATION);
);
a_availableForEntities = true;
LOGDEBUG(
std::string msg = "diameter::comm::Engine { Origin-Realm: ";
- msg += getOriginRealm();
+ msg += getOriginRealmName();
msg += " | Origin-Host: ";
- msg += getOriginHost();
+ msg += getOriginHostName();
msg += " } has recovered its availability for entities";
anna::Logger::debug(msg, ANNA_FILE_LOCATION);
);
a_availableForLocalServers = false;
LOGDEBUG(
std::string msg = "diameter::comm::Engine { Origin-Realm: ";
- msg += getOriginRealm();
+ msg += getOriginRealmName();
msg += " | Origin-Host: ";
- msg += getOriginHost();
+ msg += getOriginHostName();
msg += " } has lost its availability for local servers";
anna::Logger::debug(msg, ANNA_FILE_LOCATION);
);
a_availableForLocalServers = true;
LOGDEBUG(
std::string msg = "diameter::comm::Engine { Origin-Realm: ";
- msg += getOriginRealm();
+ msg += getOriginRealmName();
msg += " | Origin-Host: ";
- msg += getOriginHost();
+ msg += getOriginHostName();
msg += " } has recovered its availability for local servers";
anna::Logger::debug(msg, ANNA_FILE_LOCATION);
);
}
-void comm::Engine::readCEA(anna::DataBlock &cea, const anna::DataBlock & cer) throw() {
+void comm::Engine::readCEA(anna::DataBlock &cea, const anna::DataBlock &cer) throw() {
// Check for base protocol codec engine health:
assertBaseProtocolHealth();
+ if (a_ceaPathfile != "") {
+ anna::diameter::codec::Message diameterCEA(getBaseProtocolCodecEngine());
+
+ try {
+ diameterCEA.loadXML(a_ceaPathfile);
+ diameterCEA.setHopByHop(anna::diameter::codec::functions::getHopByHop(cer));
+ diameterCEA.setEndToEnd(anna::diameter::codec::functions::getEndToEnd(cer));
+ cea = diameterCEA.code();
+
+ } catch(anna::RuntimeException &ex) {
+ ex.trace();
+ LOGWARNING(anna::Logger::warning("CEA file not found or unable to parse. Encoding harcoded default version ...", ANNA_FILE_LOCATION));
+ //return anna::diameter::comm::Engine::readCEA(cea, cer);
+ // will fail with empty cea
+ }
+
+ return;
+ }
+
// Default CEA implementation:
//
// 'Capabilities-Exchange-Answer' (257,answer)