.. _program_listing_file_include_libstatistics_collector_moving_average_statistics_moving_average.hpp: Program Listing for File moving_average.hpp =========================================== |exhale_lsh| :ref:`Return to documentation for file ` (``include/libstatistics_collector/moving_average_statistics/moving_average.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp // Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef LIBSTATISTICS_COLLECTOR__MOVING_AVERAGE_STATISTICS__MOVING_AVERAGE_HPP_ #define LIBSTATISTICS_COLLECTOR__MOVING_AVERAGE_STATISTICS__MOVING_AVERAGE_HPP_ #include #include #include #include #include #include #include "types.hpp" #include "libstatistics_collector/visibility_control.hpp" #include "rcpputils/thread_safety_annotations.hpp" namespace libstatistics_collector { namespace moving_average_statistics { class MovingAverageStatistics { public: LIBSTATISTICS_COLLECTOR_PUBLIC MovingAverageStatistics() = default; LIBSTATISTICS_COLLECTOR_PUBLIC ~MovingAverageStatistics() = default; LIBSTATISTICS_COLLECTOR_PUBLIC double Average() const RCPPUTILS_TSA_REQUIRES(mutex_); LIBSTATISTICS_COLLECTOR_PUBLIC double Max() const RCPPUTILS_TSA_REQUIRES(mutex_); LIBSTATISTICS_COLLECTOR_PUBLIC double Min() const RCPPUTILS_TSA_REQUIRES(mutex_); LIBSTATISTICS_COLLECTOR_PUBLIC double StandardDeviation() const RCPPUTILS_TSA_REQUIRES(mutex_); LIBSTATISTICS_COLLECTOR_PUBLIC StatisticData GetStatistics() const; LIBSTATISTICS_COLLECTOR_PUBLIC void Reset(); LIBSTATISTICS_COLLECTOR_PUBLIC virtual void AddMeasurement(const double item); LIBSTATISTICS_COLLECTOR_PUBLIC uint64_t GetCount() const; private: mutable std::mutex mutex_; double average_ RCPPUTILS_TSA_GUARDED_BY(mutex_) = 0; double min_ RCPPUTILS_TSA_GUARDED_BY(mutex_) = std::numeric_limits::max(); double max_ RCPPUTILS_TSA_GUARDED_BY(mutex_) = std::numeric_limits::min(); double sum_of_square_diff_from_mean_ RCPPUTILS_TSA_GUARDED_BY(mutex_) = 0; uint64_t count_ RCPPUTILS_TSA_GUARDED_BY(mutex_) = 0; }; } // namespace moving_average_statistics } // namespace libstatistics_collector #endif // LIBSTATISTICS_COLLECTOR__MOVING_AVERAGE_STATISTICS__MOVING_AVERAGE_HPP_