Changed LICENSE. Now referenced to web site and file on project root directory
[anna.git] / example / diameter / stackManagement / main.cpp
index 3fb6ada..3097105 100644 (file)
@@ -1,37 +1,9 @@
-// ANNA - Anna is Not Nothingness Anymore
-//
-// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo
-//
-// https://bitbucket.org/testillano/anna
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: eduardo.ramos.testillano@gmail.com
-//          cisco.tierra@gmail.com
+// ANNA - Anna is Not Nothingness Anymore                                                         //
+//                                                                                                //
+// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
+//                                                                                                //
+// See project site at http://redmine.teslayout.com/projects/anna-suite                           //
+// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
 
 
 // Standard
@@ -55,51 +27,51 @@ using namespace anna::diameter;
 
 
 void _exit(const std::string & msg) {
-   std::cout << std::endl << msg << std::endl;
-   exit(-1);
+  std::cout << std::endl << msg << std::endl;
+  exit(-1);
 }
 
 
 int main(int argc, char** argv) {
-   Logger::setLevel(Logger::Debug);
-   Logger::initialize("stackManagement", new TraceWriter("file.trace", 2048000));
-   stack::Engine & engine = stack::Engine::instantiate();
-   std::string exec = argv[0];
-   std::string param = argv[1] ? argv[1] : "";
-
-   if (param == "") {
-      std::string msg = anna::functions::asString("Use: %s <list of xml dictionaries overloaded>,\n     i.e. '%s avps.xml commands.xml'", exec.c_str(), exec.c_str());
-      _exit(msg);
-   }
-
-   int index = 1;
-   const char *xmlFile = argv[index];
-   stack::Dictionary *dictionary;
-
-   try {
-      dictionary = engine.createDictionary(0 /* general unique stack id */);
-      dictionary->allowUpdates();
-
-      while (xmlFile) {
-         dictionary->load(xmlFile);
-         xmlFile = argv[++index];
-      }
-
-      engine.removeStack(0);
-      // Trace:
-      LOGINFORMATION(Logger::information(engine.asString(), ANNA_FILE_LOCATION));
-      LOGDEBUG(Logger::debug(dictionary->asString(), ANNA_FILE_LOCATION));
-      // Output:
-      std::ofstream out("./result.xml", std::ifstream::out);
-      std::string buffer = dictionary->asXMLString();
-      out.write(buffer.c_str(), buffer.size());
-      out.close();
-      std::cout << "Written 'result.xml'" << std::endl;
-   } catch (anna::RuntimeException &ex) {
-      ex.trace();
-      std::cout << ex.getText() << std::endl;
-   }
-
-   _exit("Open 'file.trace' in order to see the stacks loaded");
+  std::string exec = argv[0];
+  std::string execBN = exec.substr(exec.find_last_of("/") + 1);
+  std::string filetrace = execBN + ".trace";
+  Logger::setLevel(Logger::Debug);
+  Logger::initialize(execBN.c_str(), new TraceWriter(filetrace.c_str(), 2048000));
+  stack::Engine & engine = stack::Engine::instantiate();
+
+  if(argc < 2) {
+    std::string msg = anna::functions::asString("Usage: %s <list of '.xml' dictionaries overloaded>\n       e.g. '%s avps.xml commands.xml'", exec.c_str(), exec.c_str());
+    _exit(msg);
+  }
+
+  stack::Dictionary *dictionary;
+  int index = 1;
+
+  try {
+    dictionary = engine.createDictionary(0 /* general unique stack id */);
+    dictionary->allowUpdates();
+
+    while(index < argc) {
+      dictionary->load(argv[index]);
+      index++;
+    }
+
+    engine.removeStack(0);
+    // Trace:
+    LOGINFORMATION(Logger::information(engine.asString(), ANNA_FILE_LOCATION));
+    LOGDEBUG(Logger::debug(dictionary->asString(), ANNA_FILE_LOCATION));
+    // Output:
+    std::ofstream out("./result.xml", std::ifstream::out);
+    std::string buffer = dictionary->asXMLString();
+    out.write(buffer.c_str(), buffer.size());
+    out.close();
+    std::cout << "Written 'result.xml'" << std::endl;
+  } catch(anna::RuntimeException &ex) {
+    ex.trace();
+    std::cout << ex.getText() << std::endl;
+  }
+
+  _exit("Open 'file.trace' in order to see the stacks loaded");
 }