If dictionary not found, exit with exception
[anna.git] / example / diameter / launcher / main.cpp
index 5a5db42..301ab34 100644 (file)
@@ -768,7 +768,7 @@ std::string Launcher::help() const throw() {
   result += "\n";
   result += "\nAnswer programming in hexadecimal is not really neccessary (you could use send primitives) and also";
   result += "\nis intended to be used with decoded messages in order to replace things like hop by hop, end to end,";
-  result += "\nsubscriber id, session id, etc.";
+  result += "\nsubscriber id, session id, etc. Anyway you could use 'decode' operation and then program the xml created.";
   result += "\n";
   result += "\nIf a request is received, answer map (built with 'answerxml<[2c] or 2e>' operations) will be";
   result += "\n checked to find a corresponding programmed answer to be replied(*). If no ocurrence is found,";
@@ -1477,42 +1477,39 @@ throw(anna::RuntimeException) {
   // Stack:
   anna::diameter::codec::Engine *codecEngine = new anna::diameter::codec::Engine();
   anna::diameter::stack::Engine &stackEngine = anna::diameter::stack::Engine::instantiate();
-
-  try {
-    anna::diameter::stack::Dictionary * d = stackEngine.createDictionary(0 /* stack id */);
-    // Analyze comma-separated list:
-    anna::Tokenizer lst;
-    std::string dictionaryParameter = cl.getValue("dictionary");
-    lst.apply(dictionaryParameter, ",");
-
-    if(lst.size() >= 1) {  // always true (at least one, because -dictionary is mandatory)
-      anna::Tokenizer::const_iterator tok_min(lst.begin());
-      anna::Tokenizer::const_iterator tok_max(lst.end());
-      anna::Tokenizer::const_iterator tok_iter;
-      std::string pathFile;
-      d->allowUpdates();
-
-      for(tok_iter = tok_min; tok_iter != tok_max; tok_iter++) {
-        pathFile = anna::Tokenizer::data(tok_iter);
-        d->load(pathFile);
-      }
+  anna::diameter::stack::Dictionary * d = stackEngine.createDictionary(0 /* stack id; its value don't mind, is not used (ADL is monostack) */);
+  // Analyze comma-separated list:
+  anna::Tokenizer lst;
+  std::string dictionaryParameter = cl.getValue("dictionary");
+  lst.apply(dictionaryParameter, ",");
+
+  if(lst.size() >= 1) {  // always true (at least one, because -dictionary is mandatory)
+    anna::Tokenizer::const_iterator tok_min(lst.begin());
+    anna::Tokenizer::const_iterator tok_max(lst.end());
+    anna::Tokenizer::const_iterator tok_iter;
+    std::string pathFile;
+    d->allowUpdates();
+
+    for(tok_iter = tok_min; tok_iter != tok_max; tok_iter++) {
+      pathFile = anna::Tokenizer::data(tok_iter);
+      d->load(pathFile);
     }
+  }
 
-    codecEngine->setDictionary(d);
-    LOGDEBUG(anna::Logger::debug(codecEngine->asString(), ANNA_FILE_LOCATION));
+  codecEngine->setDictionary(d);
+  LOGDEBUG(anna::Logger::debug(codecEngine->asString(), ANNA_FILE_LOCATION));
 
-    if(lst.size() > 1) {
-      std::string all_in_one = "./dictionary-all-in-one.xml";
-      std::ofstream out(all_in_one.c_str(), std::ifstream::out);
-      std::string buffer = d->asXMLString();
-      out.write(buffer.c_str(), buffer.size());
-      out.close();
-      std::cout << "Written accumulated '" << all_in_one << "' (provide it next time to be more comfortable)." << std::endl;
-    }
-  } catch(anna::RuntimeException &ex) {
-    ex.trace();
+  if(lst.size() > 1) {
+    std::string all_in_one = "./dictionary-all-in-one.xml";
+    std::ofstream out(all_in_one.c_str(), std::ifstream::out);
+    std::string buffer = d->asXMLString();
+    out.write(buffer.c_str(), buffer.size());
+    out.close();
+    std::cout << "Written accumulated '" << all_in_one << "' (provide it next time to be more comfortable)." << std::endl;
   }
 
+
+
   // Integration (validation 'Complete' for receiving messages) and debugging (validation also before encoding: 'Always').
   // If missing 'integrationAndDebugging', default behaviour at engine is: mode 'AfterDecoding', depth 'FirstError':
   if(cl.exists("integrationAndDebugging")) {