//------------------------------------------------------------------------------
-//--------------------------------------------------- Engine::createDictionary()
+//------------------------------------------------- Engine::registerDictionary()
//------------------------------------------------------------------------------
-anna::diameter::stack::Dictionary * anna::diameter::stack::Engine::createDictionary(int stackId, const std::string & xmlPathFile) throw(anna::RuntimeException) {
+anna::diameter::stack::Dictionary * anna::diameter::stack::Engine::registerDictionary(int stackId, Dictionary *dictionary) throw(anna::RuntimeException) {
Dictionary * result = const_cast<Dictionary *>(getDictionary(stackId));
+ if(!dictionary)
+ throw anna::RuntimeException("Cannot provide a NULL dictionary. It must be previously allocated", ANNA_FILE_LOCATION);
+
if(result) { // if exists, launch exception
throw anna::RuntimeException("Such provided stack id has already been created. Removes it before call this method", ANNA_FILE_LOCATION);
} else { // new stack
- a_stacks[stackId] = new Dictionary(); // no need for singleton destructor
+ a_stacks[stackId] = dictionary; // no need for singleton destructor
const_stack_iterator it = a_stacks.find(stackId);
- result = (Dictionary *)(*it).second;
+ //result = (Dictionary *)(*it).second;
+ result = dictionary;
}
+ return result;
+}
+
+//------------------------------------------------------------------------------
+//--------------------------------------------------- Engine::createDictionary()
+//------------------------------------------------------------------------------
+anna::diameter::stack::Dictionary * anna::diameter::stack::Engine::createDictionary(int stackId, const std::string & xmlPathFile) throw(anna::RuntimeException) {
+ Dictionary * result = const_cast<Dictionary *>(getDictionary(stackId));
+
+ if(result) // if exists, launch exception
+ throw anna::RuntimeException("Such provided stack id has already been created. Removes it before call this method", ANNA_FILE_LOCATION);
+
+ // Register a new dictionary:
+ result = registerDictionary(stackId, new Dictionary());
+
if(xmlPathFile != "") {
try {
result->load(xmlPathFile);