a_autoBind(true),
a_availableForEntities(false),
a_availableForLocalServers(false),
- a_cer(true),
- a_dwr(true),
+ a_client_cer(true),
+ a_client_dwr(true),
// a_cea(true),
// a_dwa(true),
a_watchdogPeriod(ClientSession::DefaultWatchdogPeriod),
}
-void comm::Engine::assertBaseProtocolHealth() throw(anna::RuntimeException) {
+void comm::Engine::assertBaseProtocolHealth() const noexcept(false) {
if (!getBaseProtocolCodecEngine()->getDictionary())
throw anna::RuntimeException("Invalid diameter::comm::Engine object: base protocol dictionary provided on constructor was NULL", ANNA_FILE_LOCATION);
// it would be interesting to check and identify certain base protocol elements in the dictionary ...
}
-comm::Server* comm::Engine::allocateServer() throw() { return a_serversRecycler.create(); }
-void comm::Engine::releaseServer(Server *server) throw() { a_serversRecycler.release(server); }
-comm::ClientSession* comm::Engine::allocateClientSession() throw() { return a_clientSessionsRecycler.create(); }
-void comm::Engine::releaseClientSession(ClientSession *clientSession) throw() { a_clientSessionsRecycler.release(clientSession); }
+comm::Server* comm::Engine::allocateServer() { return a_serversRecycler.create(); }
+void comm::Engine::releaseServer(Server *server) { a_serversRecycler.release(server); }
+comm::ClientSession* comm::Engine::allocateClientSession() { return a_clientSessionsRecycler.create(); }
+void comm::Engine::releaseClientSession(ClientSession *clientSession) { a_clientSessionsRecycler.release(clientSession); }
-
-void comm::Engine::setClientCERandDWR(const anna::DataBlock & cer, const anna::DataBlock & dwr) throw(anna::RuntimeException) {
+void comm::Engine::setClientCER(const anna::DataBlock & cer) noexcept(false) {
if(codec::functions::getCommandId(cer) != helpers::base::COMMANDID__Capabilities_Exchange_Request) {
throw anna::RuntimeException("The message provided as 'CER' is not a Capabilities-Exchange-Request", ANNA_FILE_LOCATION);
}
+ a_client_cer = cer;
+}
+
+void comm::Engine::setClientDWR(const anna::DataBlock & dwr) noexcept(false) {
if(codec::functions::getCommandId(dwr) != helpers::base::COMMANDID__Device_Watchdog_Request) {
throw anna::RuntimeException("The message provided as 'DWR' is not a Device-Watchdog-Request", ANNA_FILE_LOCATION);
}
- a_cer = cer;
- a_dwr = dwr;
+ a_client_dwr = dwr;
+}
+
+void comm::Engine::setClientCER(const std::string & cerPathfile) noexcept(false) {
+
+ // Check for base protocol codec engine health:
+ assertBaseProtocolHealth();
+
+ anna::diameter::codec::Message diameterCER(getBaseProtocolCodecEngine());
+ try {
+ diameterCER.loadXMLFile(cerPathfile);
+ } catch(anna::RuntimeException &ex) {
+ anna::Logger::error("CER file not found or unable to parse. Nothing done !", ANNA_FILE_LOCATION);
+ return;
+ }
+
+ // Assignment for internal encoded version:
+ setClientCER(diameterCER.code());
}
-void comm::Engine::setClientCERandDWR(const std::string & cer, const std::string & dwr) throw(anna::RuntimeException) {
+void comm::Engine::setClientDWR(const std::string & dwrPathfile) noexcept(false) {
+
+ // Check for base protocol codec engine health:
+ assertBaseProtocolHealth();
+
+ anna::diameter::codec::Message diameterDWR(getBaseProtocolCodecEngine());
+ std::string OH = getOriginHostName();
+ std::string OR = getOriginRealmName();
+
+ if (!dwrPathfile.empty()) {
+ try {
+ diameterDWR.loadXMLFile(dwrPathfile);
+ } catch(anna::RuntimeException &ex) {
+ anna::Logger::error("DWR file not found or unable to parse. Nothing done !", ANNA_FILE_LOCATION);
+ return;
+ }
+ }
+
+ // DEFAULT VERSION:
+ // Build DWR
+ // <DWR> ::= < Diameter Header: 280, REQ >
+ // { Origin-Host }
+ // { Origin-Realm }
+ diameterDWR.setId(anna::diameter::helpers::base::COMMANDID__Device_Watchdog_Request);
+ diameterDWR.setApplicationId(0); // base protocol
+ diameterDWR.addAvp(anna::diameter::helpers::base::AVPID__Origin_Host)->getDiameterIdentity()->setValue(OH);
+ diameterDWR.addAvp(anna::diameter::helpers::base::AVPID__Origin_Realm)->getDiameterIdentity()->setValue(OR);
+
+ // Assignment for internal encoded version:
+ setClientDWR(diameterDWR.code());
+}
+
+void comm::Engine::setClientCER(const anna::U32 &applicationId) noexcept(false) {
// Check for base protocol codec engine health:
assertBaseProtocolHealth();
// * [ Auth-Application-Id ] 258 Unsigned32
// * [Acct-Application-Id] 259 Unsigned32
anna::diameter::codec::Message diameterCER(getBaseProtocolCodecEngine());
- int applicationId = 0 /*anna::diameter::helpers::APPID__3GPP_Rx*/; // Unsigned32
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
- bool encodeDefault = false;
-
- if (cer != "") {
- try {
- diameterCER.loadXMLFile(cer);
- } catch(anna::RuntimeException &ex) {
- //ex.trace();
- encodeDefault = true;
- LOGWARNING(anna::Logger::warning("CER file not found or unable to parse. Encoding harcoded default version ...", ANNA_FILE_LOCATION));
- }
- }
- else {
- encodeDefault = true;
- }
- if(encodeDefault) {
- diameterCER.setId(anna::diameter::helpers::base::COMMANDID__Capabilities_Exchange_Request);
- diameterCER.setApplicationId(applicationId);
- diameterCER.addAvp(anna::diameter::helpers::base::AVPID__Origin_Host)->getDiameterIdentity()->setValue(OH);
- diameterCER.addAvp(anna::diameter::helpers::base::AVPID__Origin_Realm)->getDiameterIdentity()->setValue(OR);
- diameterCER.addAvp(anna::diameter::helpers::base::AVPID__Host_IP_Address)->getAddress()->fromPrintableString(hostIP.c_str()); // supported by Address class, anyway is better to provide "1|<ip address>"
- diameterCER.addAvp(anna::diameter::helpers::base::AVPID__Vendor_Id)->getUnsigned32()->setValue(vendorId);
- diameterCER.addAvp(anna::diameter::helpers::base::AVPID__Product_Name)->getUTF8String()->setValue(productName);
- diameterCER.addAvp(anna::diameter::helpers::base::AVPID__Auth_Application_Id)->getUnsigned32()->setValue(applicationId);
- }
-
- // Build DWR
- // <DWR> ::= < Diameter Header: 280, REQ >
- // { Origin-Host }
- // { Origin-Realm }
- anna::diameter::codec::Message diameterDWR(getBaseProtocolCodecEngine());
- encodeDefault = false;
-
- if (dwr != "") {
- try {
- diameterDWR.loadXMLFile(dwr);
- } catch(anna::RuntimeException &ex) {
- //ex.trace();
- encodeDefault = true;
- LOGWARNING(anna::Logger::warning("DWR file not found or unable to parse. Encoding harcoded default version ...", ANNA_FILE_LOCATION));
- }
- }
- else {
- encodeDefault = true;
- }
-
- if(encodeDefault) {
- diameterDWR.setId(anna::diameter::helpers::base::COMMANDID__Device_Watchdog_Request);
- diameterDWR.setApplicationId(applicationId);
- diameterDWR.addAvp(anna::diameter::helpers::base::AVPID__Origin_Host)->getDiameterIdentity()->setValue(OH);
- diameterDWR.addAvp(anna::diameter::helpers::base::AVPID__Origin_Realm)->getDiameterIdentity()->setValue(OR);
- }
+ diameterCER.setId(anna::diameter::helpers::base::COMMANDID__Capabilities_Exchange_Request);
+ diameterCER.setApplicationId(0); // base protocol
+ diameterCER.addAvp(anna::diameter::helpers::base::AVPID__Origin_Host)->getDiameterIdentity()->setValue(OH);
+ diameterCER.addAvp(anna::diameter::helpers::base::AVPID__Origin_Realm)->getDiameterIdentity()->setValue(OR);
+ diameterCER.addAvp(anna::diameter::helpers::base::AVPID__Host_IP_Address)->getAddress()->fromPrintableString(hostIP.c_str()); // supported by Address class, anyway is better to provide "1|<ip address>"
+ diameterCER.addAvp(anna::diameter::helpers::base::AVPID__Vendor_Id)->getUnsigned32()->setValue(vendorId);
+ diameterCER.addAvp(anna::diameter::helpers::base::AVPID__Product_Name)->getUTF8String()->setValue(productName);
+ diameterCER.addAvp(anna::diameter::helpers::base::AVPID__Auth_Application_Id)->getUnsigned32()->setValue(applicationId);
// Assignment for internal encoded versions:
- setClientCERandDWR(diameterCER.code(), diameterDWR.code());
+ setClientCER(diameterCER.code());
}
-void comm::Engine::setWatchdogPeriod(const anna::Millisecond & wp) throw(anna::RuntimeException) {
+void comm::Engine::setWatchdogPeriod(const anna::Millisecond & wp) noexcept(false) {
if(wp < ClientSession::DefaultWatchdogPeriod) {
throw anna::RuntimeException(anna::functions::asString("Please set watchdog period over %s", ClientSession::DefaultWatchdogPeriod.asString().c_str()), ANNA_FILE_LOCATION);
}
a_watchdogPeriod = wp;
}
-void comm::Engine::checkEntityCollision(const socket_v &v) throw(anna::RuntimeException) {
+void comm::Engine::checkEntityCollision(const socket_v &v) noexcept(false) {
socket_v::const_iterator it;
socket_v::const_iterator it_min(v.begin());
socket_v::const_iterator it_max(v.end());
}
comm::Entity* comm::Engine::createEntity(const socket_v & socketList, const std::string &description)
-throw(anna::RuntimeException) {
+noexcept(false) {
Entity* result(NULL);
anna::Guard guard(this, "anna::diameter::comm::Engine::createEntity");
comm::LocalServer *comm::Engine::createLocalServer(const std::string & addr, int port, int maxConnections, const anna::Millisecond & allowedInactivityTime, int category, const std::string & description)
-throw(anna::RuntimeException) {
+noexcept(false) {
LocalServer* result(NULL);
anna::Guard guard(this, "anna::diameter::comm::Engine::createLocalServer");
// Proteccion antes de reservar memoria para un LocalServer
socket_t key(addr, port);
- if(a_localServers.find(key) != a_localServers.end())
+ if(a_localServers.find(key) != a_localServers.end()) {
throw anna::RuntimeException("LocalServer is already reserved by a former created access point. Cannot create again", ANNA_FILE_LOCATION);
+ }
if((result = allocateLocalServer()) == NULL)
throw anna::RuntimeException("diameter::comm::Engine::allocateLocalServer returns NULL (perhaps virtual method was not implemented)", ANNA_FILE_LOCATION);
- result->setEngine(this); // lo podia haber asignado en el allocateLocalServer (no importa)
+ result->setEngine(this); // only to refresh availability
result->setKey(key);
result->setCategory(category);
result->setDescription(description);
);
// // Listen: (*)
// /*if (a_autoListen) */result->enable(); // creates server socket
+ // ENABLE THE SERVER: if already open (other comm engine for another origin host in the same address), nothing done. But the reference to the server is doubled along 2 comm engines ...
result->setMaxConnections(maxConnections); // (*) this enables the listen port ... or not
return result;
}
comm::Entity* comm::Engine::createEntity(const std::string & addr1, int port1, const std::string & addr2, int port2, const std::string &description)
-throw(anna::RuntimeException) {
+noexcept(false) {
socket_v dualList;
dualList.push_back(socket_t(addr1, port1));
dualList.push_back(socket_t(addr2, port2));
comm::Server* comm::Engine::createServer(Entity *entity, const socket_t & socket)
-throw(anna::RuntimeException) {
+noexcept(false) {
Server* result(NULL);
anna::Guard guard(this, "anna::diameter::comm::Engine::createServer");
result->a_parent = entity;
result->a_socket = socket;
result->setMaxClientSessions(a_numberOfClientSessionsPerServer /* engine */);
- result->a_engine = this;
result->initializeStatisticResources();
+ result->a_engine = this;
for(int k = 0; k < a_numberOfClientSessionsPerServer; k++)
result->addClientSession(k);
// Lohacemos privado
comm::ClientSession* comm::Engine::createClientSession(Server *server, int socketId)
-throw(anna::RuntimeException) {
+noexcept(false) {
ClientSession* result(NULL);
anna::Guard guard(this, "anna::diameter::comm::Engine::createClientSession");
result->initialize(); // warning: recycler does not initialize its objects and at least...
// Assignments (it could be done at allocate):
- if((a_cer.isEmpty()) || (a_dwr.isEmpty()))
- throw anna::RuntimeException("Must define valid CER and DWR messages by mean setClientCERandDWR()", ANNA_FILE_LOCATION);
+ if((a_client_cer.isEmpty()) || (a_client_dwr.isEmpty()))
+ throw anna::RuntimeException("Must define valid CER and DWR messages by mean setClientCER and setClientDWR()", ANNA_FILE_LOCATION);
- result->a_cer.setBody(a_cer);
- result->a_dwr.setBody(a_dwr);
+ result->a_cer.setBody(a_client_cer);
+ result->a_dwr.setBody(a_client_dwr);
result->setWatchdogPeriod(a_watchdogPeriod);
result->a_parent = server;
result->a_socketId = socketId;
}
-bool comm::Engine::broadcastEntities(const Message* message) throw(anna::RuntimeException) {
+bool comm::Engine::broadcastEntities(const Message* message) noexcept(false) {
LOGMETHOD(anna::TraceMethod tttm("diameter::comm::Engine", "broadcastEntities", ANNA_FILE_LOCATION));
bool allok = true;
bool ok;
return allok;
}
-bool comm::Engine::broadcastLocalServers(const Message* message) throw(anna::RuntimeException) {
+bool comm::Engine::broadcastLocalServers(const Message* message) noexcept(false) {
LOGMETHOD(anna::TraceMethod tttm("diameter::comm::Engine", "broadcastLocalServers", ANNA_FILE_LOCATION));
bool allok = true;
bool ok;
return allok;
}
-bool comm::Engine::bind() throw(anna::RuntimeException) {
+bool comm::Engine::bind() noexcept(false) {
LOGMETHOD(anna::TraceMethod tttm("diameter::comm::Engine", "bind", ANNA_FILE_LOCATION));
bool result = true; // all OK return
}
comm::ClientSession* comm::Engine::findClientSession(const std::string & addr, int port, int socketId, anna::Exception::Mode::_v emode)
-throw(anna::RuntimeException) {
+noexcept(false) {
return findClientSession(ClientSession::getKey(addr, port, socketId), emode);
}
comm::ClientSession* comm::Engine::findClientSession(const std::string & key, anna::Exception::Mode::_v emode)
-throw(anna::RuntimeException) {
+noexcept(false) {
anna::Guard guard(this, "anna::diameter::comm::Engine::findClientSession");
clientSession_iterator ii = clientSession_find(key);
comm::Server* comm::Engine::findServer(const std::string & addr, int port, anna::Exception::Mode::_v emode)
-throw(anna::RuntimeException) {
+noexcept(false) {
anna::Guard guard(this, "anna::diameter::comm::Engine::findServer");
server_iterator ii = server_find(server_key(addr, port));
}
comm::Entity* comm::Engine::findEntity(const socket_v & socketList, anna::Exception::Mode::_v emode)
-throw(anna::RuntimeException) {
+noexcept(false) {
anna::Guard guard(this, "anna::diameter::comm::Engine::findEntity");
entity_key key(getEntityKey(socketList));
entity_iterator ii = entity_find(key);
}
comm::Entity* comm::Engine::findEntity(const std::string & addr1, int port1, const std::string & addr2, int port2, anna::Exception::Mode::_v emode)
-throw(anna::RuntimeException) {
+noexcept(false) {
socket_v dualList;
dualList.push_back(socket_t(addr1, port1));
dualList.push_back(socket_t(addr2, port2));
//Entity* Engine::findEntity(int category, anna::Exception::Mode::_v emode)
-//throw(anna::RuntimeException) {
+//noexcept(false) {
//
// Entity *entity;
//
comm::LocalServer* comm::Engine::findLocalServer(const std::string & addr, int port, anna::Exception::Mode::_v emode)
-throw(anna::RuntimeException) {
+noexcept(false) {
anna::Guard guard(this, "anna::diameter::comm::Engine::findLocalServer");
socket_t key(addr, port);
localServer_iterator ii = localServer_find(key);
}
-comm::ServerSession* comm::Engine::findServerSession(int socketId, anna::Exception::Mode::_v emode) throw(anna::RuntimeException) {
+comm::ServerSession* comm::Engine::findServerSession(int socketId, anna::Exception::Mode::_v emode) noexcept(false) {
anna::Guard guard(this, "anna::diameter::comm::Engine::findServerSession");
ServerSession *result;
void comm::Engine::closeClientSession(comm::ClientSession* clientSession, bool destroy)
-throw(anna::RuntimeException) {
+noexcept(false) {
if(clientSession == NULL)
return;
void comm::Engine::closeServer(comm::Server* server, bool destroy)
-throw(anna::RuntimeException) {
+noexcept(false) {
if(server == NULL)
return;
void comm::Engine::closeEntity(comm::Entity* entity, bool destroy)
-throw(anna::RuntimeException) {
+noexcept(false) {
if(entity == NULL)
return;
void comm::Engine::closeLocalServer(comm::LocalServer* localServer, bool destroy)
-throw(anna::RuntimeException) {
+noexcept(false) {
if(localServer == NULL)
return;
-void comm::Engine::closeEntities(bool destroy) throw(anna::RuntimeException) {
+void comm::Engine::closeEntities(bool destroy) noexcept(false) {
LOGMETHOD(anna::TraceMethod tttm("diameter::comm::Engine", "closeEntities", ANNA_FILE_LOCATION));
anna::Guard guard(this, "anna::diameter::comm::Engine::closeEntities");
closeEntity(entity(it), destroy);
}
-void comm::Engine::closeLocalServers(bool destroy) throw(anna::RuntimeException) {
+void comm::Engine::closeLocalServers(bool destroy) noexcept(false) {
LOGMETHOD(anna::TraceMethod tttm("diameter::comm::Engine", "closeLocalServers", ANNA_FILE_LOCATION));
anna::Guard guard(this, "anna::diameter::comm::Engine::closeLocalServers");
closeLocalServer(localServer(it), destroy);
}
-void comm::Engine::eraseDeprecatedIdleEntities() throw() {
+void comm::Engine::eraseDeprecatedIdleEntities() {
LOGMETHOD(anna::TraceMethod tttm("diameter::comm::Engine", "eraseDeprecatedIdleEntities", ANNA_FILE_LOCATION));
Entity *et;
}
}
-int comm::Engine::getOTARequestsForEntities() const throw() {
+int comm::Engine::getOTARequestsForEntities() const {
int result = 0;
for(const_entity_iterator it = entity_begin(), maxii = entity_end(); it != maxii; it ++)
return result;
}
-int comm::Engine::getOTARequestsForLocalServers() const throw() {
+int comm::Engine::getOTARequestsForLocalServers() const {
int result = 0;
for(const_localServer_iterator it = localServer_begin(), maxii = localServer_end(); it != maxii; it ++)
}
-void comm::Engine::setOriginRealmName(const std::string & originRealmName) throw() {
+void comm::Engine::setOriginRealmName(const std::string & originRealmName) {
a_originRealm = ((originRealmName != "") ? originRealmName : anna::functions::getDomainname());
}
-void comm::Engine::setOriginHostName(const std::string & originHostName) throw() {
+void comm::Engine::setOriginHostName(const std::string & originHostName) {
a_originHost = ((originHostName != "") ? originHostName : anna::functions::getHostname());
}
-void comm::Engine::raiseAutoRecovery(bool autoRecovery) throw(anna::RuntimeException) {
+void comm::Engine::raiseAutoRecovery(bool autoRecovery) noexcept(false) {
LOGMETHOD(anna::TraceMethod tttm("diameter::comm::Engine", "raiseAutoRecovery", ANNA_FILE_LOCATION));
for(entity_iterator it = entity_begin(), maxii = entity_end(); it != maxii; it ++)
}
void comm::Engine::do_stop()
-throw() {
+{
LOGMETHOD(anna::TraceMethod tttm("diameter::comm::Engine", "do_stop", ANNA_FILE_LOCATION));
close(true /* destroy */);
}
-std::string comm::Engine::asString(void) const throw() {
+std::string comm::Engine::asString(void) const {
std::string trace;
trace = "\n================================";
trace += "\nDiameter comm Engine information";
anna::xml::Node* comm::Engine::asXML(anna::xml::Node* parent) const
-throw() {
+{
parent = anna::app::Component::asXML(parent);
anna::xml::Node* result = parent->createChild("diameter.comm.Engine");
result->createAttribute("AutoBind", a_autoBind ? "yes" : "no");
return result;
}
-comm::Engine::clientSession_iterator comm::Engine::clientSession_find(const clientSession_key &key) throw() {
+comm::Engine::clientSession_iterator comm::Engine::clientSession_find(const clientSession_key &key) {
return a_clientSessions.find(key);
}
-comm::Engine::server_iterator comm::Engine::server_find(const server_key &key) throw() {
+comm::Engine::server_iterator comm::Engine::server_find(const server_key &key) {
return a_servers.find(key);
}
-comm::Engine::entity_iterator comm::Engine::entity_find(const entity_key &key) throw() {
+comm::Engine::entity_iterator comm::Engine::entity_find(const entity_key &key) {
return a_entities.find(key);
}
-comm::Engine::localServer_iterator comm::Engine::localServer_find(const socket_t &key) throw() {
+comm::Engine::localServer_iterator comm::Engine::localServer_find(const socket_t &key) {
return a_localServers.find(key);
}
-comm::Engine::entity_key comm::Engine::getEntityKey(const std::string & addr1, int port1, const std::string & addr2, int port2) const throw() {
+comm::Engine::entity_key comm::Engine::getEntityKey(const std::string & addr1, int port1, const std::string & addr2, int port2) const {
socket_v dualList;
dualList.push_back(socket_t(addr1, port1));
dualList.push_back(socket_t(addr2, port2));
return (getEntityKey(dualList));
}
-comm::Engine::entity_key comm::Engine::getEntityKey(const socket_v &v) const throw() {
+comm::Engine::entity_key comm::Engine::getEntityKey(const socket_v &v) const {
std::string result;
socket_v::const_iterator it;
socket_v::const_iterator it_min(v.begin());
}
-void comm::Engine::availabilityLostForEntities() throw() {
+void comm::Engine::availabilityLostForEntities() {
a_availableForEntities = false;
LOGDEBUG(
std::string msg = "diameter::comm::Engine { Origin-Realm: ";
OamModule &oamModule = OamModule::instantiate();
oamModule.activateAlarm(OamModule::Alarm::c_LostAvailabilityOverEntitiesForEngineWithClassName__s__, getClassName());
oamModule.count(OamModule::Counter::LostAvailabilityOverEngineForEntities);
- // Virtual
- availabilityLostForEntities(this);
}
-void comm::Engine::availabilityRecoveredForEntities() throw() {
+void comm::Engine::availabilityRecoveredForEntities() {
a_availableForEntities = true;
LOGDEBUG(
std::string msg = "diameter::comm::Engine { Origin-Realm: ";
OamModule &oamModule = OamModule::instantiate();
oamModule.cancelAlarm(OamModule::Alarm::c_LostAvailabilityOverEntitiesForEngineWithClassName__s__, getClassName());
oamModule.count(OamModule::Counter::RecoveredAvailabilityOverEngineForEntities);
- // Virtual
- availabilityRecoveredForEntities(this);
}
-void comm::Engine::availabilityLostForLocalServers() throw() {
+void comm::Engine::availabilityLostForLocalServers() {
a_availableForLocalServers = false;
LOGDEBUG(
std::string msg = "diameter::comm::Engine { Origin-Realm: ";
OamModule &oamModule = OamModule::instantiate();
oamModule.activateAlarm(OamModule::Alarm::c_LostAvailabilityOverLocalServersForEngineWithClassName__s__, getClassName());
oamModule.count(OamModule::Counter::LostAvailabilityOverEngineForLocalServers);
- // Virtual
- availabilityLostForLocalServers(this);
}
-void comm::Engine::availabilityRecoveredForLocalServers() throw() {
+void comm::Engine::availabilityRecoveredForLocalServers() {
a_availableForLocalServers = true;
LOGDEBUG(
std::string msg = "diameter::comm::Engine { Origin-Realm: ";
OamModule &oamModule = OamModule::instantiate();
oamModule.cancelAlarm(OamModule::Alarm::c_LostAvailabilityOverLocalServersForEngineWithClassName__s__, getClassName());
oamModule.count(OamModule::Counter::RecoveredAvailabilityOverEngineForLocalServers);
- // Virtual
- availabilityRecoveredForLocalServers(this);
}
-bool comm::Engine::refreshAvailabilityForEntities() throw() {
+bool comm::Engine::refreshAvailabilityForEntities() {
// Here available
if(a_availableForEntities) { // check not-bound state for all client-sessions:
bool isolate = true;
return false;
}
-bool comm::Engine::refreshAvailabilityForLocalServers() throw() {
+bool comm::Engine::refreshAvailabilityForLocalServers() {
// Here available
if(a_availableForLocalServers) { // check not-bound state for all client-sessions:
bool isolate = true;
}
-void comm::Engine::readDPA(anna::DataBlock &dpa, const anna::DataBlock & dpr) throw() {
+void comm::Engine::readDPA(anna::DataBlock &dpa, const anna::DataBlock & dpr) const {
// Check for base protocol codec engine health:
try {
}
-void comm::Engine::readCEA(anna::DataBlock &cea, const anna::DataBlock &cer) throw() {
+void comm::Engine::readCEA(anna::DataBlock &cea, const anna::DataBlock &cer) const {
// Check for base protocol codec engine health:
assertBaseProtocolHealth();
- if (a_ceaPathfile != "") {
+ if (getCEA() != "") {
anna::diameter::codec::Message diameterCEA(getBaseProtocolCodecEngine());
try {
- diameterCEA.loadXMLFile(a_ceaPathfile);
+ diameterCEA.loadXMLFile(getCEA());
diameterCEA.setHopByHop(anna::diameter::codec::functions::getHopByHop(cer));
diameterCEA.setEndToEnd(anna::diameter::codec::functions::getEndToEnd(cer));
cea = diameterCEA.code();
}
}
-void comm::Engine::manageDrDhServerSession(ServerSession *ss, bool register_or_desregister) throw() {
+void comm::Engine::manageDrDhServerSession(ServerSession *ss, bool register_or_desregister) {
// Decode CER (TODO: use raw buffer helpers)
std::string destinationRealm, destinationHost;
codec::Message codecMsg(getBaseProtocolCodecEngine());
try {
- codecMsg.decode(ss->a_cer);
+ codecMsg.decode(a_client_cer);
destinationRealm = codecMsg.getAvp(anna::diameter::helpers::base::AVPID__Origin_Realm)->getDiameterIdentity()->getValue();
destinationHost = codecMsg.getAvp(anna::diameter::helpers::base::AVPID__Origin_Host)->getDiameterIdentity()->getValue();
}
}
}
-void comm::Engine::readDWA(anna::DataBlock &dwa, const anna::DataBlock & dwr) throw() {
+void comm::Engine::readDWA(anna::DataBlock &dwa, const anna::DataBlock & dwr) const {
// Check for base protocol codec engine health:
assertBaseProtocolHealth();
// Message header
diameterDWA.setId(anna::diameter::helpers::base::COMMANDID__Device_Watchdog_Answer);
diameterDWA.setVersion(1);
- diameterDWA.setApplicationId(codec::functions::getApplicationId(dwr));
- diameterDWA.setHopByHop(codec::functions::getHopByHop(dwr));
- diameterDWA.setEndToEnd(codec::functions::getEndToEnd(dwr));
+ diameterDWA.setApplicationId(anna::diameter::codec::functions::getApplicationId(dwr));
+ diameterDWA.setHopByHop(anna::diameter::codec::functions::getHopByHop(dwr));
+ diameterDWA.setEndToEnd(anna::diameter::codec::functions::getEndToEnd(dwr));
// Result-Code
avpRC.setId(anna::diameter::helpers::base::AVPID__Result_Code);
avpRC.setMandatoryBit();
}
}
-void comm::Engine::resetStatistics() throw() {
+void comm::Engine::resetStatistics() {
for(server_iterator it = server_begin(), maxii = server_end(); it != maxii; it ++)
server(it)->resetStatistics();
localServer(it)->resetStatistics();
}
-void comm::Engine::do_initialize() throw(RuntimeException) {
+void comm::Engine::do_initialize() noexcept(false) {
LOGMETHOD(anna::TraceMethod tttm("diameter::comm::Engine", "do_initialize", ANNA_FILE_LOCATION));
LOGDEBUG(anna::Logger::debug("Nothing special done on component initialization", ANNA_FILE_LOCATION));
}
-void comm::Engine::lazyInitialize() throw(RuntimeException) {
+void comm::Engine::lazyInitialize() noexcept(false) {
LOGMETHOD(anna::TraceMethod tttm("diameter::comm::Engine", "lazyInitialize", ANNA_FILE_LOCATION));
anna::app::Component::initialize(); // this will invoke do_initialize
}
// Not tested yet
-const comm::Response* comm::Engine::sendRealmHost(const Message* message, const std::string &destinationRealm, const std::string &destinationHost) throw(anna::RuntimeException) {
+const comm::Response* comm::Engine::sendRealmHost(const Message* message, const std::string &destinationRealm, const std::string &destinationHost) noexcept(false) {
if (destinationRealm == "")
throw anna::RuntimeException("Unable to resolve the destination: empty provided Destination-Realm name", ANNA_FILE_LOCATION);