Fix enum bug (was on dictionary even when no data). PcapDecoder can load multiple...
[anna.git] / source / diameter / stack / Engine.cpp
index 07daa79..bb46cbe 100644 (file)
@@ -163,7 +163,7 @@ anna::diameter::stack::Engine::Engine(void) {
 //------------------------------------------------------------------------------
 //------------------------------------------------------ Engine::getDictionary()
 //------------------------------------------------------------------------------
-const anna::diameter::stack::Dictionary * anna::diameter::stack::Engine::getDictionary(int stackId) const throw() {
+const anna::diameter::stack::Dictionary * anna::diameter::stack::Engine::getDictionary(unsigned int stackId) const throw() {
   const Dictionary * result = NULL;
   const_stack_iterator it = a_stacks.find(stackId);
 
@@ -176,12 +176,12 @@ const anna::diameter::stack::Dictionary * anna::diameter::stack::Engine::getDict
 //------------------------------------------------------------------------------
 //----------------------------------------------------------- Engine::asString()
 //------------------------------------------------------------------------------
-std::string anna::diameter::stack::Engine::asString(void) const throw() {
+std::string anna::diameter::stack::Engine::asString(bool all) const throw() {
   std::string trace;
-  int stackId;
+  unsigned int stackId;
 
   if(isEmpty()) {
-    trace = "No diameter dictionaries found";
+    trace = "No diameter stacks found";
   } else {
     int numberOfStacks = stack_size();
     trace = ((numberOfStacks > 1) ? "Multi-stack " : "Mono-stack ");
@@ -194,7 +194,11 @@ std::string anna::diameter::stack::Engine::asString(void) const throw() {
       std::string title = "Diameter stack id = ";
       title += anna::functions::asString((*it).first);
       trace += anna::functions::highlightJustify(title);
-      trace += (*it).second->asString(); trace += "\n";
+
+      if(all) trace += (*it).second->asString();
+      else trace += (*it).second->getName();
+
+      trace += "\n";
     }
   }
 
@@ -206,7 +210,7 @@ std::string anna::diameter::stack::Engine::asString(void) const throw() {
 //------------------------------------------------------------------------------
 //------------------------------------------------- Engine::registerDictionary()
 //------------------------------------------------------------------------------
-anna::diameter::stack::Dictionary * anna::diameter::stack::Engine::registerDictionary(int stackId, Dictionary *dictionary) throw(anna::RuntimeException) {
+anna::diameter::stack::Dictionary * anna::diameter::stack::Engine::registerDictionary(unsigned int stackId, Dictionary *dictionary) throw(anna::RuntimeException) {
   Dictionary * result = const_cast<Dictionary *>(getDictionary(stackId));
 
   if(!dictionary)
@@ -227,7 +231,7 @@ anna::diameter::stack::Dictionary * anna::diameter::stack::Engine::registerDicti
 //------------------------------------------------------------------------------
 //--------------------------------------------------- Engine::createDictionary()
 //------------------------------------------------------------------------------
-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::createDictionary(unsigned int stackId, const std::string & xmlPathFile) throw(anna::RuntimeException) {
   Dictionary * result = const_cast<Dictionary *>(getDictionary(stackId));
 
   if(result)  // if exists, launch exception
@@ -249,8 +253,8 @@ anna::diameter::stack::Dictionary *  anna::diameter::stack::Engine::createDictio
 }
 
 
-void anna::diameter::stack::Engine::loadDictionary(const std::vector<int> & stacks, const std::string & xmlPathFile) throw(anna::RuntimeException) {
-  std::vector<int>::const_iterator it;
+void anna::diameter::stack::Engine::loadDictionary(const std::vector<unsigned int> & stacks, const std::string & xmlPathFile) throw(anna::RuntimeException) {
+  std::vector<unsigned int>::const_iterator it;
   Dictionary *d;
 
   if(xmlPathFile == "")
@@ -289,7 +293,7 @@ void anna::diameter::stack::Engine::loadDictionary(const std::string & xmlPathFi
 //------------------------------------------------------------------------------
 //-------------------------------------------------------- Engine::removeStack()
 //------------------------------------------------------------------------------
-void anna::diameter::stack::Engine::removeStack(int stackId) throw() {
+void anna::diameter::stack::Engine::removeStack(unsigned int stackId) throw() {
   stack_iterator it = a_stacks.find(stackId);
 
   if(it != stack_end()) {  // if exists, clear