#include <anna/diameter/helpers/dcca/functions.hpp>
// Process
-#include "MyDiameterEngine.hpp"
-#include "MyDiameterEntity.hpp"
-#include "MyLocalServer.hpp"
-#include "Launcher.hpp"
-#include "RealmNode.hpp"
+#include <MyDiameterEngine.hpp>
+#include <MyDiameterEntity.hpp>
+#include <MyLocalServer.hpp>
+#include <Launcher.hpp>
+#include <RealmNode.hpp>
+#include <TestManager.hpp>
void MyDiameterEntity::eventRequestRetransmission(const anna::diameter::comm::ClientSession* clientSession, anna::diameter::comm::Message *request) throw() {
// Performance stats:
Launcher& my_app = static_cast <Launcher&>(anna::app::functions::getApp());
RealmNode * my_node = my_app.getRealmNode(getEngine()->getRealm());
+
// CommandId:
anna::diameter::CommandId cid = anna::diameter::codec::functions::getCommandId(message);
LOGDEBUG
if (answer_message) {
// Prepare answer:
my_app.getCommunicator()->prepareAnswer(answer_message, message);
+ anna::diameter::comm::Message *msg;
try {
- anna::diameter::comm::Message *msg = my_node->createCommMessage();
+ msg = my_node->createCommMessage();
msg->setBody(answer_message->code());
/* response = NULL =*/clientSession->send(msg);
- my_node->releaseCommMessage(msg);
if(my_node->logEnabled()) my_node->writeLogFile(*answer_message, "sent2e", clientSession->asString());
} catch(anna::RuntimeException &ex) {
if(my_node->logEnabled()) my_node->writeLogFile(*answer_message, "send2eError", clientSession->asString());
}
+ // release msg
+ my_node->releaseCommMessage(msg);
+
// Pop front the reacting answer:
a_reactingAnswers.nextMessage(code);
return;
ex.trace();
}
}
+
+ // Testing:
+ TestManager::instantiate().receiveMessage(message, my_node, clientSession);
}
void MyDiameterEntity::eventResponse(const anna::diameter::comm::Response &response)
bool contextExpired = (result == anna::diameter::comm::Response::ResultCode::Timeout);
bool isUnavailable = (result == anna::diameter::comm::Response::ResultCode::DiameterUnavailable);
bool isOK = (result == anna::diameter::comm::Response::ResultCode::Success);
+
// CommandId:
anna::diameter::CommandId request_cid = request->getCommandId();
LOGDEBUG
MyLocalServer *localServer = my_node->getDiameterServer();
if(localServer && (request_cid != anna::diameter::helpers::base::COMMANDID__Capabilities_Exchange_Request) /* don't forward CEA */) {
+ anna::diameter::comm::Message *msg;
+
try {
- anna::diameter::comm::Message *msg = my_node->createCommMessage();
+ msg = my_node->createCommMessage();
msg->forwardEndToEnd(); // end-to-end will be kept
msg->setBody(*message);
bool success = localServer->send(msg, request->getRequestServerSessionKey());
- my_node->releaseCommMessage(msg);
- my_node->releaseCommMessage(request);
// Detailed log:
anna::diameter::comm::ServerSession *usedServerSession = my_node->getMyDiameterEngine()->findServerSession(request->getRequestServerSessionKey());
} catch(anna::RuntimeException &ex) {
ex.trace();
}
+
+ // release msgs
+ my_node->releaseCommMessage(msg);
+ my_node->releaseCommMessage(request);
}
}
// Triggering burst:
if(isOK || contextExpired) my_node->sendBurstMessage();
+
+ // Testing:
+ TestManager::instantiate().receiveMessage(*message, my_node, clientSession);
}
void MyDiameterEntity::eventUnknownResponse(anna::diameter::comm::ClientSession *clientSession, const anna::DataBlock &message)