/*! \file OnlineStatisticNode.h \brief A brief file description. A more elaborated file description. Created: 2015/07/16, author: Jin Bingwen. */ #ifndef __OnlineStatisticNode_h_ #define __OnlineStatisticNode_h_ #include "CyclopsVersion.h" #include "StatisticEle.h" #include "CyclopsLock.h" class OnlineStatisticNode : public StatisticsNode { public: OnlineStatisticNode(); typedef std::shared_ptr Ptr; DECL_GET_INSTANCE(OnlineStatisticNode::Ptr) virtual void compute(); virtual void push_back(double val); virtual void pop_front(); virtual void pop_back(); virtual void clear(bool clearSource = true); bool getIsSaveSource() const { return mIsSaveSource; } virtual void setIsSaveSource(bool val); // 0: queue size unlimited virtual void setFixedSize(size_t nSize); int getFixedSize() const { return mFixedSize; } virtual std::list getSourceInList(int num = 0); protected: double mSum; double mSqrSum; bool mIsSaveSource; size_t mFixedSize; void computeSumSqrSum(); void computeMeanStdDev(); void computeMinMax(); void pop(double val, bool fromFront); void _compute(); void _push_back(double val); void _pop_front(); void _pop_back(); void _clear(bool clearSource = true); private: CyclopsLock mLock; }; #endif // __OnlineStatisticNode_h_