X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Fapp%2FApplication.cpp;h=6cca6e6fcd9bbe16589cead37fb071bcbbf0e7ce;hb=5a6cba5fde2b2f538a7515f8293cc0a8d9589dfa;hp=e838e88bc46036c2b047dc954a60d38265380d37;hpb=c3457fb55c1b3be997a2677b5519db95c8865bbb;p=anna.git diff --git a/source/app/Application.cpp b/source/app/Application.cpp index e838e88..6cca6e6 100644 --- a/source/app/Application.cpp +++ b/source/app/Application.cpp @@ -1,37 +1,9 @@ -// ANNA - Anna is Not 'N' 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 // #include @@ -65,6 +37,10 @@ using namespace std; using namespace anna; +// Web sites: +#define WEBSITE_PROJECT "http://redmine.teslayout.com/projects/anna-suite" +#define WEBSITE_GENERAL "http://www.teslayout.com" + app::Application* app::Application::st_application = NULL; app::Application::Application(const char* shortName, const char* title, const char* version, const char* date, const char* time) : @@ -97,13 +73,15 @@ app::Application::Application(const char* shortName, const char* title, const ch } cout << "(c) Copyright 2001-2006 Eduardo Ramos Testillano & Francisco Antonio Ruiz Rayo" << endl; - cout << " eduardo.ramos.testillano@gmail.com & cisco.tierra@gmail.com" << endl << endl; + cout << " eduardo.ramos.testillano@gmail.com & cisco.tierra@gmail.com" << endl; + cout << " (project site: " << WEBSITE_PROJECT << ")" << endl << endl; + //cout << " - Project site: " << WEBSITE_PROJECT << endl; + //cout << " - Main site: " << WEBSITE_GENERAL << endl << endl; } app::Component* app::Application::find(const char* className) -throw() { +{ Component* component; - for(iterator ii = begin(), maxii = end(); ii != maxii; ii ++) { component = Application::component(ii); @@ -118,7 +96,7 @@ throw() { * (1) Si se ejecuta el metodo clone evita que los hijos que termina se queden como zombies. */ void app::Application::start() -throw(RuntimeException) { +noexcept(false) { TraceMethod tm("app::Application", "start", ANNA_FILE_LOCATION); ModuleManager& moduleManager = ModuleManager::instantiate(); @@ -171,7 +149,7 @@ throw(RuntimeException) { } void app::Application::startComponents() -throw(RuntimeException) { +noexcept(false) { LOGMETHOD(TraceMethod tm("app::Application", "startComponents", ANNA_FILE_LOCATION)); Component* component; @@ -187,7 +165,7 @@ throw(RuntimeException) { } void app::Application::stopComponents() -throw(RuntimeException) { +noexcept(false) { LOGMETHOD(TraceMethod tm("app::Application", "stopComponents", ANNA_FILE_LOCATION)); Component* component; @@ -207,7 +185,7 @@ throw(RuntimeException) { * (1.1) Limpia la lista de hijos que pudiera tener el padre. */ app::Application& app::Application::clone() -throw(RuntimeException) { +noexcept(false) { if(anna::functions::supportMultithread() == true) { string msg("app::Application::clone | pid: "); msg += functions::asString((int) a_pid); @@ -287,7 +265,7 @@ throw(RuntimeException) { // ese momento los objetos est� completamente creados. //--------------------------------------------------------------------------------------- void app::Application::attach(app::Component* component) -throw(RuntimeException) { +noexcept(false) { if(component == NULL) throw RuntimeException("Cannot attach a NULL component", ANNA_FILE_LOCATION); @@ -295,8 +273,9 @@ throw(RuntimeException) { if(ii != end()) { LOGINFORMATION( - string msg((*ii)->asString()); - msg += " | Was previously attached"; + //string msg((*ii)->asString()); + string msg((*ii)->getClassName()); + msg += " | Was previously attached !"; Logger::write(Logger::Information, msg, ANNA_FILE_LOCATION); ) return; @@ -320,7 +299,7 @@ throw(RuntimeException) { } void app::Application::detach(app::Component* component) -throw(RuntimeException) { +noexcept(false) { LOGMETHOD(TraceMethod tm("app::Application", "detach(component)", ANNA_FILE_LOCATION)); if(component == NULL) @@ -340,7 +319,7 @@ throw(RuntimeException) { } void app::Application::writeContext(const std::string& file) -throw(RuntimeException) { +noexcept(false) { ofstream out; out.open(file.c_str()); @@ -362,7 +341,7 @@ throw(RuntimeException) { } xml::Node* app::Application::asXML(xml::Node* app) const -throw() { +{ xml::Node* node(NULL); app->createAttribute("Name", getShortName()); app->createAttribute("Version", getVersion()); @@ -392,29 +371,29 @@ throw() { } void app::Application::signalUSR(int signal) -throw(RuntimeException) { +noexcept(false) { if (signal == SIGUSR1) signalUSR1(); else if (signal == SIGUSR2) signalUSR2(); } void app::Application::signalUSR1() -throw(RuntimeException) { +noexcept(false) { writeContext(anna::functions::asString("/var/tmp/anna.context.%05d", getPid())); } void app::Application::signalUSR2() -throw(RuntimeException) { +noexcept(false) { Logger::notice("Captured signal SIGUSR2. Nothing implemented at the moment", ANNA_FILE_LOCATION); } void app::Application::sendSignalToChilds(const int signal) -throw() { +{ for(pid_iterator ii = pid_begin(), maxii = pid_end(); ii != maxii; ii ++) kill(pid(ii), signal); } void app::Application::handlerSignalUSR(int signal) -throw() { +{ sigignore(signal); try { @@ -429,7 +408,7 @@ throw() { } void app::Application::handlerSignalTerminate(int) -throw() { +{ sigignore(SIGTERM); try { @@ -452,7 +431,7 @@ throw() { * elimina de la lista de procesos hijos. */ void app::Application::handlerChildTerminate(int sig) -throw() { +{ if(sig == SIGCHLD) { int status; pid_t pid = wait(&status);