Virtual bindingClientSession for diameter::comm::Engine, in order to have control...
authorEduardo Ramos Testillano <eduardo.ramos.testillano@gmail.com>
Mon, 17 Feb 2014 20:46:55 +0000 (12:46 -0800)
committerEduardo Ramos Testillano <eduardo.ramos.testillano@gmail.com>
Mon, 17 Feb 2014 20:46:55 +0000 (12:46 -0800)
include/anna/diameter.comm/Engine.hpp
source/diameter.comm/ClientSession.cpp

index 2d36b6f..1d9b77e 100644 (file)
@@ -590,6 +590,12 @@ public:
   */
   virtual void availabilityRecovered(Server *) const throw() {;}
 
+  /**
+     When a subyacent client session is going to be bound, this method is invoked before.
+     Default implementation do nothing.
+  */
+  virtual void bindingClientSession(const ClientSession *) const throw() {;}
+
   /**
    * Class user should implement this method in order to define Disconnect-Peer-Answer for last received DPR.
    * Origin-Host and Origin-Realm are configured at comm::Engine with hostname and FQDN (Fully Qualified Domain Name).
index 73d097a..71be8a3 100644 (file)
@@ -140,6 +140,10 @@ void ClientSession::bind() throw(anna::RuntimeException) {
     return;
   }
 
+  // Some operations could be done before sending CER, for example non-standard Origin-Host manipulation for
+  // Tekelec PCRF
+  a_engine->bindingClientSession(this);
+
   // OAM Lo comento, porque no se contabilizan los reintentos y por lo tanto no son muy Ăștiles.
 //  OamModule &oamModule = OamModule::instantiate();
 //  oamModule.count(a_server->isAvailable() ? OamModule::Counter::TCPConnectOK:OamModule::Counter::TCPConnectNOK);