Dynamic lib selection and deployment
[anna.git] / example / diameter / launcher / MyDiameterEngine.cpp
1 // ANNA - Anna is Not Nothingness Anymore                                                         //
2 //                                                                                                //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
4 //                                                                                                //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite                           //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7
8
9 // Project
10 #include <anna/core/core.hpp>
11 #include <anna/diameter/codec/functions.hpp>
12
13 //#include <anna/time/functions.hpp>
14 //#include <anna/diameter.comm/Response.hpp>
15 //#include <anna/diameter.comm/ClientSession.hpp>
16 //#include <anna/diameter/helpers/base/functions.hpp>
17 //#include <anna/diameter/helpers/dcca/functions.hpp>
18
19 // Process
20 #include <MyDiameterEngine.hpp>
21
22
23 void MyDiameterEngine::readCEA(anna::DataBlock &cea, const anna::DataBlock & cer) throw() {
24
25   LOGMETHOD(anna::TraceMethod tm("launcher::MyDiameterEngine", "readCEA", ANNA_FILE_LOCATION));
26
27   // Default implementation:
28   if (a_ceaPathfile == "")
29     return anna::diameter::comm::Engine::readCEA(cea, cer);
30
31 //  if(codec::functions::getCommandId(cer) != helpers::base::COMMANDID__Capabilities_Exchange_Answer) {
32 //throw anna::RuntimeException("The message provided as 'CEA' is not a Capabilities-Exchange-Answer", 
33 //}
34
35   anna::diameter::codec::Message diameterCEA(getBaseProtocolCodecEngine());
36   try {
37     diameterCEA.loadXML(a_ceaPathfile);
38     diameterCEA.setHopByHop(anna::diameter::codec::functions::getHopByHop(cer));
39     diameterCEA.setEndToEnd(anna::diameter::codec::functions::getEndToEnd(cer));
40     cea = diameterCEA.code();
41
42   } catch(anna::RuntimeException &ex) {
43     ex.trace();
44     LOGWARNING(anna::Logger::warning("CEA file not found or unable to parse. Encoding harcoded default version ...", ANNA_FILE_LOCATION));
45     //return anna::diameter::comm::Engine::readCEA(cea, cer);
46     // will fail with empty cea
47   }
48 }
49