Remove dynamic exceptions
[anna.git] / example / diameter / batchConverter / main.cpp
index 85f7948..9009b61 100644 (file)
@@ -25,7 +25,7 @@
 #include <anna/diameter/codec/Engine.hpp>
 #include <anna/diameter/codec/EngineManager.hpp>
 #include <anna/diameter/codec/Message.hpp>
-//#include <anna/diameter/codec/functions.hpp> // ApplicationId anna::diameter::codec::functions::getApplicationId(const anna::DataBlock &) throw(anna::RuntimeException);
+//#include <anna/diameter/codec/functions.hpp> // ApplicationId anna::diameter::codec::functions::getApplicationId(const anna::DataBlock &) noexcept(false);
 
 
 using namespace anna;
@@ -33,7 +33,7 @@ using namespace anna::diameter;
 
 anna::diameter::codec::Message G_codecMsg;
 
-bool getDataBlockFromHexFile(const std::string &pathfile, anna::DataBlock &db) throw() {
+bool getDataBlockFromHexFile(const std::string &pathfile, anna::DataBlock &db) {
   // Get hex string
   static char buffer[8192];
   std::ifstream infile(pathfile.c_str(), std::ifstream::in);
@@ -68,14 +68,17 @@ 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() {
+bool decodeDataBlock(const anna::DataBlock &db/*, unsigned int & detectedApplicationId*/) {
   try {
     G_codecMsg.clear();
     G_codecMsg.decode(db);
   } catch(RuntimeException &ex) {
-    std::cerr << ex.asString() << std::endl << std::endl; 
+    std::cerr << ex.asString() << std::endl << std::endl;
     //_exit(ex.asString());
+    return false;
   }
+
+  return true;
 }
 
 //-------------------------------------------------------------------
@@ -191,7 +194,7 @@ int main(int argc, char **argv) {
   directoryHex.read(wkDir.c_str(), anna::io::Directory::Mode::FullPath);
   directoryXml.setPattern(".xml$");
   directoryXml.read(wkDir.c_str(), anna::io::Directory::Mode::FullPath);
-  
+
   // Processing .hex files:
   bool anyHexConverted = false;
   if (processHex) {
@@ -203,15 +206,16 @@ int main(int argc, char **argv) {
         _exit("Error reading hex file provided");
 
       // Decode datablock:
-      decodeDataBlock(db_aux);
+      if (decodeDataBlock(db_aux)) {
 
-      // Write conversion:
-      std::string outputFile = entry + ".as.xml";
-      std::ofstream out(outputFile.c_str(), std::ifstream::out);
-      out << G_codecMsg.asXMLString();
-      out.close();
+        // Write conversion:
+        std::string outputFile = entry + ".as.xml";
+        std::ofstream out(outputFile.c_str(), std::ifstream::out);
+        out << G_codecMsg.asXMLString();
+        out.close();
 
-      anyHexConverted = true;
+        anyHexConverted = true;
+      }
     }
   }
 
@@ -221,17 +225,17 @@ int main(int argc, char **argv) {
     for (anna::io::Directory::const_iterator it = directoryXml.begin(); it != directoryXml.end(); it++) {
       const std::string& entry = anna::io::Directory::data (it);
       LOGDEBUG(anna::Logger::debug(entry + " is being converted to hex", ANNA_FILE_LOCATION));
-  
+
       // Load file:
-      G_codecMsg.loadXML(entry);  
-      
+      G_codecMsg.loadXMLFile(entry);
+
       // Write conversion:
       std::string hexString = anna::functions::asHexString(G_codecMsg.code());
       std::string outputFile = entry + ".as.hex";
       std::ofstream out(outputFile.c_str(), std::ifstream::out);
       out.write(hexString.c_str(), hexString.size());
       out.close();
-  
+
       anyXmlConverted = true;
     }
   }