2
3
6
7
8
9
10
11
13#include <so_5/stats/impl/std_controller.hpp>
15#include <so_5/stats/messages.hpp>
17#include <so_5/send_functions.hpp>
38std_controller_t::
mbox()
const
53 new std::thread( [
this] {
body(); } ) );
66 std::lock_guard< std::mutex > cond_lock{
m_data_lock };
81std::chrono::steady_clock::duration
83 std::chrono::steady_clock::duration period )
115 std::unique_lock< std::mutex > lock{
m_data_lock };
130std::chrono::steady_clock::duration
133 auto started_at = std::chrono::steady_clock::now();
147 return std::chrono::steady_clock::now() - started_at;
intrusive_ptr_t(intrusive_ptr_t &&o) noexcept
Move constructor.
std::condition_variable m_wake_up_cond
Condition for wake-up data-distribution thread.
const mbox_t m_mbox
Mbox for sending monitoring data.
std::chrono::steady_clock::duration m_distribution_period
Data-distribution period.
void body()
Main body of data distribution thread.
std_controller_t(mbox_t mbox)
source_t * m_tail
Tail of data sources list.
std::chrono::steady_clock::duration distribute_current_data()
Initiates distribution of current values for all data sources.
std::mutex m_data_lock
Object lock for data-related operations.
std::mutex m_start_stop_lock
Object lock for start/stop operations.
virtual void add(source_t &what) override
Registration of new data source.
virtual const mbox_t & mbox() const override
Get the mbox for receiving monitoring information.
virtual void remove(source_t &what) noexcept override
Deregistration of previously registered data source.
bool m_shutdown_initiated
Shutdown signal.
virtual void turn_on() override
Turn the monitoring on.
virtual void turn_off() override
Turn the monitoring off.
std::unique_ptr< std::thread > m_distribution_thread
Main data-distribution thread.
source_t * m_head
Head of data sources list.
virtual std::chrono::steady_clock::duration set_distribution_period(std::chrono::steady_clock::duration period) override
Set distribution period.
static source_t * source_list_next(const source_t &what) noexcept
Helper method for accessing next data source in the list.
static void source_list_add(source_t &what, source_t *&head, source_t *&tail) noexcept
Helper method for adding data source to existing list.
static void source_list_remove(source_t &what, source_t *&head, source_t *&tail) noexcept
Helper method for removing data source from existing list.
An interface of data source.
virtual void distribute(const mbox_t &)=0
Send appropriate notification about the current value.
Internal implementation of run-time monitoring and statistics related stuff.
Declarations of messages used by run-time monitoring and statistics.
All stuff related to run-time monitoring and statistics.
Private part of message limit implementation.
void send(Target &&to, Args &&... args)
A utility function for creating and delivering a message or a signal.
Notification about finish of stats distribution.
Notification about start of new stats distribution.