Base protocol codec for comm::Engine. Supported retransmissions
[anna.git] / source / diameter.comm / ClientSession.cpp
index 7974ae7..5a7ca94 100644 (file)
 #include <stdlib.h> // rand()
 #include <time.h>
 
+// XXXXXXXXXX
+#include <iostream>
+
+
 
 
 using namespace std;
@@ -302,12 +306,18 @@ const Response* ClientSession::send(const Message* message) throw(anna::RuntimeE
     countSendings(cid, aid, true /* send ok */);
     // Trace non-application messages:
     LOGDEBUG(
-
       if((cid == helpers::base::COMMANDID__Capabilities_Exchange_Request) ||
          (cid == helpers::base::COMMANDID__Device_Watchdog_Request) ||
-    (cid == helpers::base::COMMANDID__Disconnect_Peer_Request)) {
-    anna::Logger::debug("Sent DataBlock to XML representation:", ANNA_FILE_LOCATION);
-      try { anna::diameter::codec::Message msg; msg.decode(message->getBody()); /* decode to be traced */ } catch(anna::RuntimeException&) {;}
+         (cid == helpers::base::COMMANDID__Disconnect_Peer_Request)) {
+      anna::Logger::debug("Sent DataBlock to XML representation:", ANNA_FILE_LOCATION);
+      try {
+        anna::diameter::codec::Message msg(a_engine->getBaseProtocolCodecEngine()); msg.decode(message->getBody()); /* decode to be traced */
+      }
+      catch(anna::RuntimeException &ex) {
+        std::string msg = ex.getText();
+        msg += " | Use diameter::comm::Engine::setBaseProtocolCodecEngine() to allow internal base protocol messages full tracing";
+        anna::Logger::debug(msg, ANNA_FILE_LOCATION);
+      }
     }
     );
 
@@ -442,6 +452,11 @@ void ClientSession::eventPeerShutdown() throw() {
   a_parent->eventPeerShutdown(this);
 }
 
+void ClientSession::eventRequestRetransmission(Message *request) throw() {
+  // Inform father server:
+  a_parent->eventRequestRetransmission(this, request);
+}
+
 void ClientSession::eventResponse(const Response& response) throw(anna::RuntimeException) {
   // Inform father server:
   a_parent->eventResponse(response);
@@ -482,8 +497,17 @@ throw(anna::RuntimeException) {
     msg += anna::diameter::functions::commandIdAsPairString(cid);
     anna::Logger::debug(msg, ANNA_FILE_LOCATION);
 
-    if((cid == helpers::base::COMMANDID__Capabilities_Exchange_Answer) || (cid.first == helpers::base::COMMANDID__Device_Watchdog_Request.first))
-  try { anna::diameter::codec::Message dmsg; dmsg.decode(db); /* decode to be traced */ } catch(anna::RuntimeException&) {;}
+    if( (cid == helpers::base::COMMANDID__Capabilities_Exchange_Answer) ||
+        (cid.first == helpers::base::COMMANDID__Device_Watchdog_Request.first)) {
+      try {
+        anna::diameter::codec::Message dmsg(a_engine->getBaseProtocolCodecEngine()); dmsg.decode(db); /* decode to be traced */
+      }
+      catch(anna::RuntimeException &ex) {
+        std::string msg = ex.getText();
+        msg += " | Use diameter::comm::Engine::setBaseProtocolCodecEngine() to allow internal base protocol messages full tracing";
+        anna::Logger::debug(msg, ANNA_FILE_LOCATION);
+      }
+    }
 );
   // Main counters:
   OamModule &oamModule = OamModule::instantiate();