Not allowed to set engine NULL !!
authorEduardo Ramos Testillano <eduardo.ramos.testillano@ericsson.com>
Tue, 6 Oct 2015 23:10:52 +0000 (01:10 +0200)
committerEduardo Ramos Testillano <eduardo.ramos.testillano@ericsson.com>
Tue, 6 Oct 2015 23:10:52 +0000 (01:10 +0200)
example/diameter/batchConverter/main.cpp
include/anna/diameter/codec/Message.hpp
source/diameter/codec/Message.cpp

index 0e7eff4..12265cf 100644 (file)
@@ -70,7 +70,7 @@ void _exit(const std::string &message, int resultCode = 1) {
 // Decodes a diameter message coming from a datablock
 void decodeDataBlock(const anna::DataBlock &db/*, unsigned int & detectedApplicationId*/) throw() {
   try {
-    G_codecMsg.setEngine(NULL); // perhaps we will need another codec engine ...
+    G_codecMsg.clear();
     G_codecMsg.decode(db);
   } catch(RuntimeException &ex) {
     _exit(ex.asString());
index 32aa932..a040aa1 100644 (file)
@@ -189,12 +189,9 @@ public:
   * may occur. If you add elements (vendors, avps, messages) is not a problem.
   *
   * IMPORTANT NOTES:
-  * 1) if you want to reuse the message, as a recommendation, you should set engine to
-  * NULL or use #clear. In that way, next operation will adjust automatically the needed
-  * engine because it would not be configured in such stage.
-  * 2) if you want to pre-configure the engine you will need to set the engine to NULL
-  * previously and then you could change to the new one without warning/ignoring.
-  * 3) if you have dedicated message objects for each interface (application id), then
+  * 1) if you want to reuse the message, as a recommendation, you should #clear the
+  * message. In that way, next operation will adjust automatically the needed engine.
+  * 2) if you have dedicated message objects for each interface (application id), then
   * you could set the corresponding engine on constructor (or setEngine), and forget
   * about #clear. The needed cleanup will be done automatically from decoding and xml
   * loading procedures, and initialized engine will be kept along message operations.
index 5849196..28a1d45 100644 (file)
@@ -84,7 +84,12 @@ Message::~Message() {
 //------------------------------------------------------------------------------
 void Message::setEngine(Engine *engine) throw() {
 
-  if (a_engine && engine && (engine != a_engine)) {
+  if (!engine) {
+    LOGWARNING(anna::Logger::warning("Ignored: you must assign a valid codec engine. If you want to set NULL engine, clear the message", ANNA_FILE_LOCATION));
+    return;
+  }
+
+  if (a_engine && (engine != a_engine)) {
     LOGWARNING(anna::Logger::warning("Ignored: it is not a good practice to change the codec engine once assigned. Clear the message first to set the engine again.", ANNA_FILE_LOCATION));
     return;
   }