X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Fstatistics%2FEngine.cpp;h=b90b6098288b7ed457f4d623e76a3b0cf4af7800;hb=66409396bebc1cfeb63d404f3aee8639159298d5;hp=5a48bd1c5463b30d70540b3c82e93733254fee71;hpb=4e12ac57e93c052f716a6305ad8fc099c45899d1;p=anna.git diff --git a/source/statistics/Engine.cpp b/source/statistics/Engine.cpp index 5a48bd1..b90b609 100644 --- a/source/statistics/Engine.cpp +++ b/source/statistics/Engine.cpp @@ -1,43 +1,15 @@ -// 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 // // Local #include #include - +#include #include #include @@ -52,6 +24,10 @@ using namespace anna::statistics; //****************************************************************************** //----------------------------------------------------------------------- Engine //****************************************************************************** + +//------------------------------------------------------------------------------ +//------------------------------------------------------------- Engine::Engine() +//------------------------------------------------------------------------------ Engine::Engine() { statistics::sccs::activate(); a_enabled = false; @@ -59,6 +35,15 @@ Engine::Engine() { } +//------------------------------------------------------------------------------ +//------------------------------------------------------------ Engine::~Engine() +//------------------------------------------------------------------------------ +Engine::~Engine() { + for (_accumulator_vector_it it = a_accumulators.begin(); it != a_accumulators.end(); it++) + delete (*it); +} + + //------------------------------------------------------------------------------ //--------------------------------------------------------- Engine::addConcept() //------------------------------------------------------------------------------ @@ -147,6 +132,8 @@ bool Engine::disableSampleLog(const int & id) throw() { //--------------------------------------------------- Engine::disableSampleLog() //------------------------------------------------------------------------------ bool Engine::logSample(const int & conceptId, const anna::Millisecond & unixTimestamp, const double & value) const throw() { + anna::Guard guard(a_mutex); + _concept_identification_map_iter it = a_concept_identification_map.find(conceptId); if(it == a_concept_identification_map.end()) return false; @@ -167,6 +154,19 @@ bool Engine::logSample(const int & conceptId, const anna::Millisecond & unixTime return true; } + +//------------------------------------------------------------------------------ +//----------------------------------------------------------- Engine::asString() +//------------------------------------------------------------------------------ +Accumulator *Engine::createAccumulator() throw() { + Accumulator *result; + + result = new Accumulator(); + a_accumulators.push_back(result); + return result; +} + + //------------------------------------------------------------------------------ //----------------------------------------------------------- Engine::asString() //------------------------------------------------------------------------------ @@ -229,6 +229,11 @@ anna::xml::Node* Engine::asXML(anna::xml::Node* parent, const int & numberOfDeci concept->createAttribute("IntegerNatureSample", (*iter).second.IntegerNatureSample ? "yes" : "no"); } + // Accumulators: + for (_accumulator_vector_it it = a_accumulators.begin(); it != a_accumulators.end(); it++) { + anna::xml::Node* accumulators = result->createChild("anna.statistics.Accumulators"); + (*it)->asXML(accumulators); + } + return result; } -