X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Ftimex%2FEngine.cpp;h=396e438baecaf33b1d7ef8869808deefca88f77a;hb=5a6cba5fde2b2f538a7515f8293cc0a8d9589dfa;hp=22350a1f23230a7b0106377c5cd0df5c2b28908b;hpb=93366a0bda79e6fd6e7dad6316bfcf8cc82f5731;p=anna.git diff --git a/source/timex/Engine.cpp b/source/timex/Engine.cpp index 22350a1..396e438 100644 --- a/source/timex/Engine.cpp +++ b/source/timex/Engine.cpp @@ -31,10 +31,10 @@ using namespace anna; using namespace anna::comm; /** - Resolucion minima (en milisegundos) soportada por el controlador de tiempos. + Minimum resolution (in milliseconds) supported by the time manager */ //static -const Millisecond anna::timex::Engine::minResolution(100); +const Millisecond anna::timex::Engine::minResolution(10); anna::timex::Engine::Engine(const Millisecond & maxTimeout, const Millisecond & resolution) : @@ -65,7 +65,7 @@ anna::timex::Engine::~Engine() { // en que realmente llega la seal de ualarm. //-------------------------------------------------------------------------------------------- void anna::timex::Engine::do_initialize() -throw(RuntimeException) { +noexcept(false) { LOGMETHOD(TraceMethod tm("timex::Engine", "do_initialize", ANNA_FILE_LOCATION)); if(a_maxQuantum > 0) { @@ -76,6 +76,10 @@ throw(RuntimeException) { if(a_resolution < minResolution) throw RuntimeException(functions::asString("Resolution must be greater than %d milliseconds", minResolution.getValue()), ANNA_FILE_LOCATION); + if(a_resolution < (Millisecond)100) { + LOGWARNING(Logger::warning(functions::asString("Resolutions under 100 milliseconds (%d in this case) slightly increase the CPU usage", a_resolution.getValue()), ANNA_FILE_LOCATION)); + } + if(a_maxTimeout <= a_resolution) throw RuntimeException(functions::asString("Max-Timeout must be greater than %d milliseconds", a_resolution.getValue()), ANNA_FILE_LOCATION); @@ -112,7 +116,7 @@ throw(RuntimeException) { // Reimplementado de app::Component void anna::timex::Engine::do_cloneParent() -throw() { +{ } /* @@ -120,7 +124,7 @@ throw() { * Instala la senhal de tick en el proceso, ya que la alarma no se hereda directamente. */ void anna::timex::Engine::do_cloneChild() -throw(RuntimeException) { +noexcept(false) { } //---------------------------------------------------------------------------- @@ -128,7 +132,7 @@ throw(RuntimeException) { // en el 'pipe'. //---------------------------------------------------------------------------- void anna::timex::Engine::pause() -throw(RuntimeException) { +noexcept(false) { Guard guard(this, "timex::Engine (pause)"); if(a_tickProducer->isInPause() == false) { @@ -142,7 +146,7 @@ throw(RuntimeException) { } void anna::timex::Engine::play() -throw(RuntimeException) { +noexcept(false) { Guard guard(this, "timex::Engine (play)"); if(a_tickProducer->isInPause() == true) { @@ -156,7 +160,7 @@ throw(RuntimeException) { } void anna::timex::Engine::activate(timex::TimeEvent* timeEvent) -throw(RuntimeException) { +noexcept(false) { LOGMETHOD(TraceMethod tm(Logger::Local7, "timex::Engine", "activate", ANNA_FILE_LOCATION)); if(a_maxQuantum == 0) @@ -225,7 +229,7 @@ throw(RuntimeException) { } anna::timex::TimeEvent* anna::timex::Engine::getTimeEvent(const timex::TimeEvent::Id eventTimeId) -throw() { +{ LOGMETHOD(TraceMethod tm(Logger::Local7, "timex::Engine", "getTimeEvent", ANNA_FILE_LOCATION)); Directory::iterator iid; TimeEvent* result(NULL); @@ -249,7 +253,7 @@ throw() { } void anna::timex::Engine::cancel(timex::TimeEvent* timeEvent) -throw(RuntimeException) { +noexcept(false) { LOGMETHOD(TraceMethod tm(Logger::Local7, "timex::Engine", "cancel", ANNA_FILE_LOCATION)); if(timeEvent == NULL) @@ -297,7 +301,7 @@ throw(RuntimeException) { } void anna::timex::Engine::do_stop() -throw() { +{ LOGMETHOD(TraceMethod tm("timex::Engine", "do_stop", ANNA_FILE_LOCATION)); Quantum::iterator ii, maxii; Guard guard(this, "timex::Engine (do_stop)"); @@ -329,7 +333,7 @@ throw() { } void anna::timex::Engine::kill() -throw() { +{ Guard guard(this, "timex::Engine (kill)"); app::functions::component (ANNA_FILE_LOCATION)->detach(a_tickConsumer); @@ -358,7 +362,7 @@ throw() { // (3) Si el temporizador ha sido reactivado no tiene que liberarlo. //---------------------------------------------------------------------------------- void anna::timex::Engine::tick() -throw(RuntimeException) { +noexcept(false) { LOGMETHOD(TraceMethod tm(Logger::Local7, "timex::Engine", "tick", ANNA_FILE_LOCATION)); /* if (Logger::isActive (Logger::Local6) == true && a_directory.size () > 0) { @@ -435,13 +439,13 @@ throw(RuntimeException) { } void anna::timex::Engine::notifyRelease(timex::TimeEvent* timeEvent) -throw() { +{ if(timeEvent->a_observer != NULL) timeEvent->a_observer->release(timeEvent); } string anna::timex::Engine::asString() const -throw() { +{ string msg("timex::Engine { "); msg += app::Component::asString(); msg += " | Max Timeout: "; @@ -456,7 +460,7 @@ throw() { } xml::Node* anna::timex::Engine::asXML(xml::Node* parent) const -throw() { +{ parent = Component::asXML(parent); xml::Node* result = parent->createChild("timex.Engine"); result->createAttribute("MaxTimeout", a_maxTimeout);