X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=example%2Fdiameter%2FstackManagement%2Fmain.cpp;h=30971052ebe231f6be7b06f44efc94e6b65bb158;hb=64cc135e716c2ef018227375fc4f15ff0670fdf7;hp=727939ab8eeb59b2623a3b033d70e874cb2b5ac8;hpb=39033fd99e58e994a5e98c1060dcc79e0d81f9c9;p=anna.git diff --git a/example/diameter/stackManagement/main.cpp b/example/diameter/stackManagement/main.cpp index 727939a..3097105 100644 --- a/example/diameter/stackManagement/main.cpp +++ b/example/diameter/stackManagement/main.cpp @@ -1,37 +1,9 @@ -// ANNA - Anna is Not Nothingness Anymore -// -// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo -// -// http://redmine.teslayout.com/projects/anna-suite -// -// 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 the copyright holder 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 ,\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 \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"); }