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,";
// 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")) {